+use std::io::Read;
use std::error::Error;
+use std::fs::File;
+
+pub fn run(input_file: &str) -> Result<(), Box<dyn Error>> {
+ let mut f = File::open(input_file)?;
+ let mut input = String::new();
+ f.read_to_string(&mut input)?;
+
+ let res = run_part1(&input)?;
+ println!("{res}");
+
+ let res = run_part2(&input)?;
+ println!("{res}");
-pub fn run() -> Result<(), Box<dyn Error>> {
- let input = "blabl";
- run_part1(&input)?;
- run_part2(&input)?;
Ok(())
}
fn run_part1(input: &str) -> Result<String, Box<dyn Error>> {
println!("Running day00 (template) - part 1");
- println!("{input}");
Ok(input.to_string())
}
#[test]
fn day00_part1() {
- let input = "\
-blabla";
+ let input = "";
let res = run_part1(&input);
- assert_eq!("blabla", res.unwrap());
+ assert_eq!("", res.unwrap());
}
#[test]
fn day00_part2() {
- let input = "\
-blabla";
+ let input = "";
let res = run_part2(&input);
- assert_eq!("blabla", res.unwrap());
+ assert_eq!("", res.unwrap());
}
}
use std::fs::File;
use std::collections::HashMap;
-pub fn run() -> Result<(), Box<dyn Error>> {
- let mut f = File::open("input/day01.txt")?;
+pub fn run(input_file: &str) -> Result<(), Box<dyn Error>> {
+ let mut f = File::open(input_file)?;
let mut input = String::new();
f.read_to_string(&mut input)?;
fn main() {
let args: Vec<String> = env::args().collect();
- if args.len() != 2 {
+ if args.len() != 3 {
println!("Missing argument");
+ println!("usage: aoc_2023 <DAY> <INPUT_FILE>");
process::exit(1);
}
- if let Err(e) = run(args[1].clone()) {
+ if let Err(e) = run(&args[1], &args[2]) {
println!("Error: {e}");
process::exit(1);
}
}
-fn run(day: String) -> Result<(), Box<dyn Error>> {
- match day.as_ref() {
- "day00" => day00::run()?,
- "day01" => day01::run()?,
+fn run(day: &str, input_file: &str) -> Result<(), Box<dyn Error>> {
+ match day {
+ "day00" => day00::run(input_file)?,
+ "day01" => day01::run(input_file)?,
_ => return Err(format!("unknown day \"{day}\"").into()),
}
Ok(())