diff --git a/rust-rewrite/day02/Cargo.toml b/rust-rewrite/day02/Cargo.toml new file mode 100644 index 0000000..843335d --- /dev/null +++ b/rust-rewrite/day02/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day02" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust-rewrite/day02/day02.in b/rust-rewrite/day02/day02.in new file mode 100644 index 0000000..8620ca7 --- /dev/null +++ b/rust-rewrite/day02/day02.in @@ -0,0 +1,1000 @@ +forward 8 +forward 3 +down 8 +down 2 +up 1 +up 4 +down 9 +forward 3 +forward 4 +forward 5 +forward 1 +forward 1 +up 8 +forward 2 +forward 9 +down 2 +forward 8 +down 5 +down 3 +down 8 +up 1 +forward 1 +down 8 +up 7 +down 8 +down 9 +down 4 +down 7 +forward 7 +forward 9 +down 2 +down 5 +forward 1 +down 1 +forward 2 +up 8 +down 8 +forward 2 +up 5 +down 6 +down 5 +down 2 +forward 5 +forward 4 +forward 6 +down 4 +up 1 +down 8 +down 7 +down 3 +down 4 +down 5 +forward 7 +down 3 +down 3 +forward 3 +down 2 +up 8 +up 8 +forward 2 +down 8 +down 8 +forward 3 +forward 9 +forward 3 +forward 2 +down 9 +down 3 +forward 4 +forward 1 +down 7 +forward 5 +up 2 +down 6 +up 4 +down 2 +up 5 +forward 6 +down 6 +down 1 +forward 5 +forward 4 +up 8 +up 5 +forward 2 +down 5 +down 4 +up 1 +forward 9 +up 5 +up 5 +forward 3 +down 6 +forward 7 +down 2 +forward 1 +forward 4 +forward 4 +down 2 +down 6 +down 3 +down 1 +forward 1 +down 8 +forward 2 +down 1 +down 2 +forward 6 +forward 1 +forward 7 +forward 2 +down 2 +up 6 +up 2 +forward 7 +down 6 +down 1 +forward 5 +forward 3 +forward 1 +down 3 +up 1 +forward 3 +forward 1 +down 2 +down 5 +up 8 +down 8 +forward 3 +down 9 +forward 8 +down 8 +down 5 +forward 2 +up 1 +down 3 +up 3 +down 5 +down 7 +down 8 +down 8 +down 1 +forward 9 +up 4 +up 4 +down 5 +forward 6 +forward 1 +up 6 +forward 5 +up 6 +forward 1 +forward 9 +down 3 +down 8 +forward 6 +forward 6 +up 1 +down 6 +forward 2 +down 7 +down 2 +forward 4 +up 4 +up 2 +forward 8 +up 6 +down 8 +up 3 +down 5 +down 3 +forward 3 +down 8 +up 4 +up 5 +down 1 +down 7 +down 7 +forward 6 +up 6 +down 1 +forward 7 +down 2 +up 7 +up 3 +forward 9 +down 3 +up 4 +up 1 +forward 8 +down 4 +forward 9 +forward 8 +down 4 +down 3 +down 1 +forward 8 +up 7 +down 3 +up 5 +down 3 +down 9 +down 9 +up 9 +down 9 +up 4 +down 5 +down 5 +forward 8 +forward 1 +up 3 +down 9 +down 8 +forward 2 +forward 1 +up 6 +down 3 +forward 1 +up 6 +forward 9 +forward 3 +forward 3 +down 2 +down 7 +forward 1 +up 9 +up 3 +forward 1 +forward 2 +forward 7 +forward 8 +forward 2 +forward 3 +forward 1 +forward 7 +down 1 +up 7 +up 3 +forward 3 +forward 9 +down 7 +down 3 +forward 2 +forward 8 +up 1 +forward 2 +forward 3 +up 2 +down 1 +down 9 +down 4 +up 3 +forward 3 +down 6 +down 1 +forward 2 +down 8 +forward 3 +forward 9 +forward 1 +forward 6 +forward 5 +down 5 +forward 2 +up 7 +up 7 +down 8 +forward 9 +up 1 +up 5 +up 8 +forward 5 +forward 2 +down 5 +up 5 +down 3 +forward 6 +down 9 +down 7 +forward 2 +forward 8 +forward 3 +down 7 +down 8 +forward 9 +down 3 +down 3 +forward 1 +forward 4 +down 2 +forward 1 +forward 3 +forward 5 +down 9 +up 3 +down 5 +forward 8 +forward 3 +down 5 +forward 3 +forward 7 +down 3 +forward 8 +down 1 +down 3 +down 4 +down 2 +forward 8 +down 2 +forward 5 +down 2 +up 2 +forward 8 +forward 9 +forward 3 +forward 2 +forward 3 +down 2 +forward 5 +down 1 +down 9 +up 1 +down 6 +forward 2 +up 1 +forward 6 +down 2 +forward 2 +forward 1 +forward 4 +forward 4 +forward 9 +forward 2 +down 5 +forward 9 +forward 1 +forward 7 +forward 1 +down 7 +forward 7 +down 4 +down 8 +down 8 +down 1 +forward 4 +down 5 +up 3 +down 5 +forward 6 +down 6 +down 4 +down 9 +down 4 +down 5 +forward 7 +up 4 +forward 6 +down 9 +down 5 +down 5 +up 2 +forward 8 +up 5 +down 1 +down 2 +up 6 +down 7 +forward 7 +up 5 +forward 4 +up 5 +down 3 +up 7 +forward 4 +down 4 +down 5 +down 7 +down 3 +down 9 +up 8 +down 9 +forward 6 +forward 2 +forward 2 +up 8 +up 2 +down 4 +down 4 +up 7 +up 9 +forward 2 +forward 8 +forward 4 +up 8 +forward 8 +up 2 +down 3 +forward 9 +down 1 +down 7 +forward 4 +down 2 +up 6 +up 6 +down 9 +forward 6 +forward 9 +down 3 +forward 8 +up 1 +down 5 +forward 1 +down 6 +up 8 +forward 2 +up 7 +forward 5 +down 5 +up 3 +forward 2 +forward 1 +forward 4 +down 6 +up 9 +forward 9 +down 8 +forward 2 +down 1 +down 3 +forward 2 +forward 9 +up 1 +forward 9 +down 4 +forward 2 +forward 7 +forward 1 +up 2 +up 2 +down 9 +forward 3 +forward 2 +down 6 +up 8 +down 4 +forward 8 +up 9 +up 6 +down 5 +up 1 +down 9 +down 2 +down 1 +up 8 +down 1 +forward 3 +down 7 +down 7 +forward 8 +down 4 +forward 1 +forward 4 +forward 5 +down 8 +down 2 +down 9 +up 5 +down 8 +down 8 +down 3 +forward 2 +down 5 +up 5 +down 1 +down 2 +forward 9 +down 7 +down 7 +down 1 +down 6 +up 6 +up 7 +down 1 +down 3 +down 2 +down 5 +down 9 +down 4 +down 5 +forward 1 +up 7 +down 7 +forward 6 +forward 4 +down 3 +forward 3 +forward 6 +forward 7 +down 3 +forward 1 +down 6 +down 8 +forward 3 +up 3 +forward 4 +forward 3 +down 6 +up 7 +forward 8 +forward 4 +down 7 +down 6 +down 8 +forward 9 +down 6 +down 5 +up 4 +down 6 +down 8 +down 5 +up 4 +forward 2 +forward 8 +forward 9 +down 2 +forward 5 +down 9 +down 2 +down 7 +forward 2 +down 2 +up 7 +down 2 +up 5 +forward 3 +down 8 +forward 3 +forward 8 +up 3 +down 6 +down 1 +forward 2 +up 7 +down 8 +forward 8 +down 2 +down 3 +down 5 +forward 4 +forward 5 +down 2 +forward 2 +down 5 +down 9 +forward 4 +forward 3 +forward 2 +down 9 +forward 2 +forward 9 +down 5 +down 9 +down 6 +down 6 +down 3 +down 1 +down 7 +forward 7 +forward 2 +up 9 +forward 4 +up 7 +forward 3 +down 2 +up 8 +up 3 +down 4 +up 9 +forward 1 +down 1 +forward 4 +up 4 +forward 4 +up 8 +forward 7 +down 3 +forward 1 +up 3 +up 1 +up 2 +down 3 +forward 5 +down 6 +down 1 +down 2 +forward 2 +down 3 +up 1 +forward 4 +down 2 +forward 8 +forward 3 +forward 7 +forward 7 +down 5 +down 7 +forward 8 +up 2 +down 6 +forward 1 +down 4 +forward 5 +forward 8 +forward 9 +forward 7 +down 1 +down 3 +down 1 +down 2 +forward 3 +up 3 +down 7 +forward 9 +forward 2 +up 8 +up 6 +up 3 +down 5 +forward 8 +down 8 +down 6 +forward 4 +down 2 +down 8 +forward 8 +up 7 +up 4 +up 5 +down 4 +up 6 +forward 2 +forward 9 +down 9 +forward 6 +down 5 +down 7 +forward 5 +up 5 +forward 2 +up 7 +up 3 +down 8 +forward 8 +forward 3 +down 2 +down 5 +forward 4 +down 8 +forward 5 +forward 4 +down 9 +forward 1 +down 4 +up 5 +forward 5 +down 1 +forward 4 +down 4 +forward 4 +down 8 +up 5 +up 4 +up 9 +forward 2 +forward 3 +down 3 +forward 2 +down 6 +down 6 +down 5 +forward 8 +forward 3 +up 1 +down 9 +down 4 +down 1 +up 4 +forward 2 +forward 3 +down 4 +up 4 +forward 5 +forward 2 +up 2 +forward 4 +down 2 +down 3 +down 6 +up 2 +forward 8 +forward 9 +forward 1 +down 1 +up 7 +up 4 +forward 2 +forward 4 +forward 2 +forward 8 +down 9 +down 5 +down 1 +down 1 +down 6 +forward 1 +up 6 +down 4 +down 9 +down 2 +down 2 +down 5 +up 6 +forward 4 +forward 1 +forward 2 +forward 8 +forward 2 +down 6 +forward 1 +down 8 +down 1 +forward 2 +forward 3 +down 9 +down 7 +down 5 +up 1 +forward 1 +down 5 +down 4 +forward 8 +down 9 +up 7 +forward 6 +forward 2 +forward 8 +down 9 +down 1 +up 5 +down 5 +down 3 +forward 6 +forward 5 +forward 2 +forward 6 +up 4 +forward 1 +down 9 +forward 5 +up 1 +down 5 +down 6 +forward 8 +down 4 +up 9 +down 6 +down 9 +down 7 +down 3 +forward 7 +down 5 +up 6 +forward 3 +up 4 +down 5 +up 5 +up 9 +forward 9 +forward 8 +down 9 +forward 9 +down 2 +forward 5 +forward 5 +forward 9 +down 3 +up 8 +down 7 +up 9 +forward 8 +forward 8 +down 1 +down 5 +down 4 +up 8 +forward 4 +forward 7 +down 2 +down 7 +down 6 +down 9 +down 7 +forward 5 +forward 7 +forward 5 +forward 2 +forward 7 +up 2 +down 8 +down 9 +down 5 +down 9 +forward 5 +forward 8 +forward 9 +up 5 +down 9 +down 7 +forward 4 +down 6 +up 5 +up 8 +down 3 +down 2 +up 7 +forward 9 +down 3 +down 2 +down 7 +down 4 +up 6 +up 4 +down 7 +down 4 +forward 5 +forward 6 +up 6 +down 7 +down 9 +down 9 +down 6 +forward 8 +forward 3 +forward 5 +up 1 +up 8 +forward 4 +forward 6 +down 5 +down 4 +forward 5 +forward 9 +down 4 +up 3 +up 8 +down 7 +up 8 +forward 5 +forward 3 +up 4 +up 9 +forward 6 +down 1 +up 6 +down 5 +down 4 +down 3 +down 8 +up 1 +down 1 +up 8 +up 8 +down 6 +forward 4 +forward 9 +down 4 +down 7 +forward 9 +forward 8 +up 6 +down 9 +up 3 +down 8 +forward 4 +forward 6 +forward 9 +up 7 +down 2 +forward 2 +forward 1 +forward 5 +up 9 +up 7 +up 5 +forward 4 +forward 5 +forward 4 +up 5 +forward 4 +up 6 +down 5 +up 2 +forward 5 +forward 5 +down 9 +forward 7 +down 9 +up 4 +up 9 +forward 6 +forward 7 +down 2 +forward 4 +down 9 +down 6 +forward 1 +forward 7 +up 3 +up 3 +down 6 +up 6 +up 2 +up 3 +forward 7 +up 4 +forward 1 +down 1 +forward 2 +forward 4 +down 1 +down 8 +forward 5 +forward 8 +up 7 +down 3 +forward 3 +forward 6 +down 8 +down 7 +up 9 +forward 3 +up 1 +down 8 +forward 4 +down 9 +forward 3 +forward 8 +down 4 +forward 4 +forward 1 +up 6 +down 1 +down 7 +forward 8 +down 9 +down 8 +down 7 +forward 5 +up 6 +forward 5 +up 1 +down 3 +down 7 +down 4 +forward 6 +down 4 +down 7 +up 9 +down 6 +down 7 +up 3 +up 8 +forward 3 +forward 1 +forward 5 +down 5 +forward 5 +down 1 +forward 9 +up 5 +forward 4 +down 1 +down 8 +up 1 +up 3 +up 8 +down 3 +down 5 +up 7 +forward 4 +down 7 +forward 9 +forward 7 +forward 9 +down 9 +forward 3 +forward 6 +up 3 +forward 4 +forward 4 diff --git a/rust-rewrite/day02/src/main.rs b/rust-rewrite/day02/src/main.rs new file mode 100644 index 0000000..4a8e393 --- /dev/null +++ b/rust-rewrite/day02/src/main.rs @@ -0,0 +1,54 @@ +use std::fs; + +fn main() { + let file = fs::read_to_string("day02.in").unwrap(); + println!("=== PART 1 ==="); + part1(&file); + println!("=== PART 2 ==="); + part2(&file); +} + +fn part1(file: &String) { + let mut pos = vec![0, 0]; + + let direction_key = |x| match x { + "forward" => (1, 0), + "down" => (0, 1), + "up" => (0, -1), + _ => (0, 0), + }; + + for line in file + .strip_suffix("\n") + .unwrap() + .split('\n') + .map(|x| x.split(" ").collect::>()) + { + pos[0] += direction_key(line[0]).0 * i32::from_str_radix(line[1], 10).unwrap(); + pos[1] += direction_key(line[0]).1 * i32::from_str_radix(line[1], 10).unwrap(); + } + println!("Current position: {:?}", pos); + println!("Product: {:?}", pos.iter().product::()); +} + +fn part2(file: &String) { + let mut pos = vec![0, 0, 0]; + + for line in file + .strip_suffix("\n") + .unwrap() + .split('\n') + .map(|x| x.split(" ").collect::>()) + { + if line[0] == "down" { + pos[2] += i32::from_str_radix(line[1], 10).unwrap(); + } else if line[0] == "up" { + pos[2] -= i32::from_str_radix(line[1], 10).unwrap(); + } else if line[0] == "forward" { + pos[0] += i32::from_str_radix(line[1], 10).unwrap(); + pos[1] += pos[2] * i32::from_str_radix(line[1], 10).unwrap(); + } + } + println!("Current position: {:?}", pos); + println!("Product: {:?}", pos[0] * pos[1]); +}