diff --git a/rust/src/day1.rs b/rust/src/day1.rs index 9ac6cca..acb0cba 100644 --- a/rust/src/day1.rs +++ b/rust/src/day1.rs @@ -30,7 +30,12 @@ pub fn part1() -> i32 { } pub fn part2() -> i32 { - return 1; + let data = fs::read_to_string("../python/1/input.txt").expect("Unable to read file"); + let ints = data + .lines() + .map(|line| advanced_fuel(line.parse().expect("error when parsing line as integer"))) + .sum(); + return ints; } #[cfg(test)] @@ -55,4 +60,9 @@ mod tests { fn test_part1() { assert_eq!(part1(), 3226488) } + + #[test] + fn test_part2() { + assert_eq!(part2(), 4836845) + } } diff --git a/rust/src/main.rs b/rust/src/main.rs index 06c6bf1..ad61181 100644 --- a/rust/src/main.rs +++ b/rust/src/main.rs @@ -1,8 +1,24 @@ +use std::env; + mod day1; +mod day2; fn main() { - let res1 = day1::part1(); - let res2 = day1::part2(); + let args: Vec = env::args().collect(); + if args.len() < 2 { + println!("specify day"); + std::process::exit(1); + } + let res1 = match args[1].as_str() { + "1" => day1::part1(), + "2" => day2::part1(), + _ => -1, + }; + let res2 = match args[1].as_str() { + "1" => day1::part2(), + "2" => day2::part2(), + _ => -1, + }; println!("part 1: {}", res1); println!("part 1: {}", res2);