From 38fc7ef94c7208191d3c1cc1f46b217f2dc5f5d7 Mon Sep 17 00:00:00 2001 From: Adam Jeniski Date: Fri, 7 Jan 2022 02:28:59 -0500 Subject: [PATCH] init day2 --- src/day2.rs | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 src/day2.rs diff --git a/src/day2.rs b/src/day2.rs new file mode 100755 index 0000000..5975d93 --- /dev/null +++ b/src/day2.rs @@ -0,0 +1,65 @@ +pub fn run(lines: Vec) { + let mut h1 = 0; + let mut d1 = 0; + + let mut aim = 0; + let mut d2 = 0; + let mut h2 = 0; + + for line in lines { + let parts = line.split(" "); + let command = parts.clone().nth(0).unwrap(); + let num: i32 = parts.clone().nth(1).unwrap().parse().unwrap(); + match command { + "forward" => { + h1 += num; + h2 += num; + d2 += aim * num; + }, + "up" => { + d1 -= num; + aim -= num; + }, + "down" => { + d1 += num; + aim += num; + }, + _ => println!("unknown command: '{}'", command) + } + } + println!("{}, {}", h1 * d1, h2 * d2); +} + +#[cfg(test)] +mod part1 { + use super::*; + + #[test] + fn run_sample() { + let input = include_str!("../inputs/2_test.txt"); + assert_eq!(part_1_solution(input), 150); + } + + #[test] + fn run() { + let input = include_str!("../inputs/2.txt"); + assert_eq!(part_1_solution(input), 1660158); + } +} + +#[cfg(test)] +mod part2 { + use super::*; + + #[test] + fn run_sample() { + let input = include_str!("../inputs/2_test.txt"); + assert_eq!(part_2_solution(input), 900); + } + + #[test] + fn run() { + let input = include_str!("../inputs/2.txt"); + assert_eq!(part_2_solution(input), 1604592846); + } +}