From 560e0401b0d2f0ced83e422df37980ddfe2fef4b Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Thu, 2 Dec 2021 15:11:40 +0000 Subject: Day 2 --- day2/Cargo.toml | 9 + day2/resources/input.txt | 1000 ++++++++++++++++++++++++++++++++++++++++++++++ day2/src/main.rs | 50 +++ 3 files changed, 1059 insertions(+) create mode 100644 day2/Cargo.toml create mode 100644 day2/resources/input.txt create mode 100644 day2/src/main.rs (limited to 'day2') diff --git a/day2/Cargo.toml b/day2/Cargo.toml new file mode 100644 index 0000000..8248c51 --- /dev/null +++ b/day2/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day2" +version = "0.1.0" +authors = ["Federico Igne "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day2/resources/input.txt b/day2/resources/input.txt new file mode 100644 index 0000000..d5c08db --- /dev/null +++ b/day2/resources/input.txt @@ -0,0 +1,1000 @@ +forward 9 +forward 9 +forward 3 +down 2 +forward 8 +down 8 +forward 1 +down 6 +down 9 +down 9 +forward 1 +up 5 +up 4 +up 8 +down 6 +down 7 +forward 4 +forward 6 +forward 2 +forward 2 +forward 4 +down 2 +down 6 +forward 6 +forward 9 +up 4 +up 6 +down 2 +forward 7 +up 7 +down 8 +down 4 +down 6 +forward 1 +down 2 +up 1 +forward 8 +down 9 +forward 6 +up 9 +down 8 +forward 5 +forward 8 +down 8 +up 3 +up 9 +down 2 +down 2 +forward 5 +up 7 +forward 5 +down 6 +forward 4 +down 2 +up 2 +up 7 +up 1 +down 4 +down 8 +forward 6 +down 2 +forward 7 +down 1 +forward 7 +forward 1 +up 1 +down 4 +down 3 +down 4 +down 4 +up 8 +down 1 +up 7 +forward 8 +down 5 +up 1 +down 4 +down 3 +forward 4 +up 7 +forward 1 +down 4 +down 2 +down 4 +up 8 +up 6 +down 1 +up 3 +down 5 +forward 4 +down 3 +forward 9 +down 9 +forward 2 +down 4 +up 3 +down 4 +forward 1 +forward 7 +forward 9 +forward 7 +forward 3 +forward 6 +down 4 +forward 7 +down 5 +down 1 +forward 7 +up 1 +down 8 +down 7 +down 7 +down 7 +down 3 +forward 4 +forward 6 +forward 6 +forward 1 +down 7 +down 6 +down 8 +up 5 +down 7 +up 6 +forward 9 +down 7 +down 1 +down 9 +forward 8 +up 5 +down 6 +forward 3 +up 2 +down 1 +forward 2 +down 3 +up 6 +forward 8 +forward 1 +forward 3 +down 9 +forward 1 +down 3 +up 7 +forward 8 +up 8 +down 7 +down 2 +forward 3 +up 7 +forward 6 +down 7 +down 6 +up 5 +forward 9 +down 7 +up 5 +forward 6 +up 5 +up 6 +forward 6 +down 8 +down 1 +forward 7 +forward 6 +down 5 +down 6 +forward 9 +down 6 +up 5 +forward 9 +forward 4 +down 1 +forward 5 +down 4 +forward 5 +forward 1 +down 1 +forward 4 +down 5 +forward 4 +up 8 +down 1 +forward 6 +down 5 +forward 8 +forward 8 +forward 5 +down 7 +down 4 +forward 4 +up 1 +up 8 +down 6 +up 5 +forward 6 +forward 5 +forward 9 +down 3 +down 5 +forward 3 +down 6 +forward 6 +up 7 +up 6 +down 6 +down 1 +forward 8 +forward 9 +up 5 +forward 8 +forward 9 +forward 9 +down 2 +down 8 +forward 8 +down 2 +up 8 +down 2 +down 2 +up 1 +down 5 +down 6 +down 1 +down 8 +down 9 +forward 3 +forward 2 +down 6 +up 8 +forward 9 +forward 7 +forward 1 +down 8 +up 8 +forward 8 +down 5 +down 3 +up 3 +forward 6 +forward 5 +down 4 +forward 4 +down 4 +forward 5 +forward 9 +forward 2 +forward 9 +down 1 +down 3 +down 6 +forward 6 +down 7 +forward 3 +forward 4 +forward 1 +down 6 +forward 1 +forward 4 +forward 2 +forward 2 +forward 1 +forward 2 +down 1 +up 2 +forward 1 +down 3 +forward 8 +down 3 +down 9 +forward 5 +down 3 +down 3 +forward 2 +forward 9 +down 9 +forward 4 +down 2 +forward 5 +up 8 +down 4 +forward 5 +down 1 +forward 9 +down 1 +forward 7 +forward 2 +down 2 +down 6 +up 3 +forward 7 +up 4 +forward 7 +forward 6 +down 8 +forward 2 +down 3 +forward 9 +forward 4 +forward 8 +down 6 +forward 8 +down 9 +down 2 +down 3 +forward 1 +down 5 +down 3 +forward 2 +forward 7 +down 4 +down 3 +forward 9 +down 2 +forward 2 +forward 1 +up 6 +up 4 +down 5 +forward 5 +up 8 +down 7 +forward 6 +down 5 +forward 3 +forward 3 +forward 7 +up 9 +up 6 +down 5 +up 7 +forward 2 +forward 5 +down 9 +down 6 +forward 7 +down 9 +up 2 +up 5 +forward 1 +forward 8 +forward 9 +up 8 +forward 9 +forward 5 +up 9 +down 4 +down 7 +forward 2 +forward 1 +down 4 +up 8 +down 5 +down 7 +down 9 +down 3 +down 9 +up 8 +up 7 +up 8 +down 8 +down 2 +down 6 +down 6 +up 5 +up 9 +forward 1 +down 8 +up 4 +up 3 +forward 7 +up 7 +down 3 +up 1 +forward 3 +down 7 +forward 8 +forward 2 +down 6 +down 2 +up 7 +up 5 +forward 7 +forward 1 +forward 6 +up 6 +forward 5 +down 2 +up 4 +forward 2 +down 9 +forward 6 +forward 3 +forward 3 +forward 4 +forward 2 +down 6 +forward 9 +forward 7 +down 4 +up 1 +forward 4 +down 6 +down 6 +up 1 +up 1 +forward 3 +down 5 +up 5 +down 3 +down 6 +up 8 +down 2 +up 6 +up 1 +forward 8 +up 6 +down 8 +forward 9 +forward 4 +forward 9 +down 7 +down 9 +down 6 +down 1 +forward 9 +forward 9 +down 6 +down 5 +up 6 +down 9 +up 4 +up 5 +forward 8 +down 4 +down 5 +forward 8 +forward 7 +down 2 +forward 2 +forward 6 +forward 7 +down 1 +down 7 +down 1 +down 6 +forward 2 +up 2 +down 4 +down 8 +forward 1 +down 1 +down 3 +down 3 +up 9 +down 9 +forward 3 +up 4 +forward 1 +down 9 +down 8 +down 9 +forward 5 +forward 4 +up 3 +down 8 +forward 2 +down 3 +up 5 +forward 4 +down 7 +down 8 +down 9 +forward 8 +down 8 +forward 4 +down 6 +down 3 +forward 5 +down 3 +down 9 +down 4 +up 8 +forward 4 +up 6 +down 3 +forward 6 +down 9 +down 7 +forward 7 +forward 3 +forward 2 +forward 4 +down 4 +down 5 +up 9 +down 2 +down 6 +down 9 +forward 7 +forward 3 +up 3 +forward 3 +down 4 +down 7 +forward 2 +down 2 +forward 3 +down 8 +down 7 +down 7 +forward 2 +forward 2 +up 6 +forward 8 +forward 9 +up 3 +forward 8 +forward 5 +forward 7 +up 3 +forward 3 +forward 6 +down 5 +down 5 +down 4 +forward 1 +forward 8 +forward 4 +forward 3 +down 1 +forward 8 +down 4 +up 5 +forward 4 +down 2 +forward 7 +down 2 +forward 9 +down 1 +forward 6 +forward 8 +forward 6 +forward 7 +forward 1 +forward 6 +down 5 +up 3 +forward 7 +down 6 +forward 2 +down 2 +forward 8 +forward 9 +up 7 +forward 1 +forward 1 +up 1 +forward 1 +down 2 +forward 6 +down 9 +up 1 +up 2 +forward 6 +forward 1 +forward 7 +down 1 +up 8 +forward 7 +up 6 +up 4 +down 1 +forward 2 +down 4 +down 1 +down 7 +down 4 +up 3 +forward 8 +forward 3 +forward 5 +down 7 +down 8 +forward 5 +forward 2 +down 5 +down 2 +forward 2 +up 9 +down 3 +down 5 +up 7 +down 4 +down 2 +down 7 +forward 6 +down 2 +forward 1 +up 4 +forward 2 +forward 2 +down 5 +down 1 +down 1 +forward 7 +forward 6 +down 7 +down 5 +up 1 +up 3 +forward 3 +forward 9 +forward 4 +down 1 +down 5 +forward 3 +forward 7 +down 8 +forward 8 +forward 2 +forward 7 +up 7 +down 7 +down 4 +down 2 +up 6 +up 1 +forward 8 +up 8 +up 6 +down 8 +forward 1 +down 5 +forward 3 +down 3 +down 3 +forward 1 +up 3 +up 3 +forward 8 +forward 8 +down 8 +forward 6 +forward 2 +down 7 +forward 8 +down 7 +up 5 +forward 7 +down 1 +forward 9 +up 6 +down 2 +up 2 +up 5 +forward 6 +forward 9 +forward 3 +down 8 +forward 8 +down 2 +up 5 +down 9 +forward 5 +down 6 +down 3 +down 9 +up 8 +up 3 +down 2 +forward 7 +forward 4 +forward 4 +forward 8 +up 6 +up 4 +forward 9 +down 6 +down 8 +up 3 +up 5 +forward 8 +forward 7 +forward 4 +down 8 +forward 1 +forward 5 +down 9 +forward 8 +up 6 +down 6 +down 8 +down 2 +forward 4 +forward 9 +forward 2 +forward 7 +down 3 +forward 3 +up 6 +down 4 +forward 2 +up 4 +down 4 +forward 4 +forward 3 +forward 1 +up 6 +forward 1 +down 1 +forward 7 +up 4 +forward 3 +down 4 +up 6 +up 2 +up 8 +down 1 +down 6 +down 6 +down 1 +down 7 +forward 8 +down 9 +forward 5 +up 2 +up 7 +up 5 +down 6 +up 1 +up 6 +forward 4 +down 7 +forward 5 +forward 1 +down 6 +forward 2 +down 2 +forward 9 +down 9 +up 6 +forward 1 +up 7 +down 7 +forward 1 +down 6 +up 1 +forward 2 +forward 1 +down 4 +forward 9 +forward 7 +forward 5 +down 1 +forward 2 +down 2 +down 2 +down 5 +forward 1 +up 8 +forward 9 +down 7 +forward 9 +down 2 +up 5 +down 9 +down 8 +down 5 +forward 8 +forward 4 +down 4 +down 6 +forward 1 +down 5 +up 6 +down 3 +down 3 +forward 9 +down 9 +forward 6 +down 5 +up 6 +down 5 +up 7 +forward 9 +down 2 +down 4 +down 8 +forward 4 +up 7 +forward 9 +forward 7 +up 5 +down 7 +down 5 +down 1 +forward 5 +forward 4 +down 2 +up 3 +forward 1 +up 4 +up 9 +down 4 +forward 3 +down 4 +down 9 +forward 4 +up 2 +up 3 +forward 7 +up 6 +down 8 +down 8 +forward 6 +forward 2 +forward 3 +forward 9 +forward 7 +down 6 +down 7 +down 4 +down 2 +forward 8 +down 6 +forward 6 +forward 6 +forward 9 +down 8 +down 1 +up 5 +down 1 +forward 9 +down 1 +up 8 +forward 8 +down 3 +forward 1 +down 9 +forward 6 +forward 4 +forward 8 +down 2 +up 8 +down 2 +up 8 +down 9 +down 4 +up 7 +forward 7 +forward 5 +down 5 +down 4 +up 8 +forward 1 +down 7 +forward 1 +up 9 +forward 9 +forward 7 +forward 9 +down 9 +forward 4 +down 7 +forward 6 +forward 6 +up 3 +forward 2 +down 5 +up 8 +down 1 +up 8 +down 4 +down 1 +up 6 +forward 4 +forward 3 +forward 6 +down 3 +forward 4 +forward 4 +forward 4 +down 8 +forward 3 +up 8 +up 8 +down 8 +forward 6 +forward 8 +up 5 +forward 6 +down 8 +down 7 +up 4 +forward 6 +forward 9 +down 9 +forward 4 +up 2 +forward 1 +up 3 +down 9 +down 8 +forward 8 +forward 8 +forward 7 +down 6 +down 1 +up 6 +up 6 +forward 9 +forward 7 +forward 7 +down 3 +down 6 +down 9 +down 4 +forward 7 +forward 3 +forward 3 +down 7 +up 5 +down 3 +forward 6 +forward 3 +forward 5 +up 3 +down 7 +forward 2 +up 7 +forward 9 +down 3 +down 9 +forward 8 +forward 5 +up 7 +up 2 +up 8 +forward 6 +down 8 +forward 2 +forward 4 +up 2 +forward 2 +forward 8 +forward 4 +down 8 +forward 5 +down 4 +down 7 +forward 3 +down 3 +up 1 +down 9 +forward 9 +down 2 +down 1 +forward 1 +down 6 +down 3 +forward 5 +down 3 +down 8 +up 7 +down 1 +up 9 +down 4 +forward 9 +down 4 +forward 3 +forward 6 +down 3 +forward 3 +down 2 +down 7 +down 1 +up 4 +down 9 +down 1 +down 3 +down 4 +down 8 +down 7 +forward 4 +down 4 +down 9 +forward 2 +forward 7 +forward 2 +down 6 +up 8 +forward 6 +down 2 +forward 6 +up 8 +forward 6 +down 9 +forward 2 +forward 6 diff --git a/day2/src/main.rs b/day2/src/main.rs new file mode 100644 index 0000000..3748138 --- /dev/null +++ b/day2/src/main.rs @@ -0,0 +1,50 @@ +use std::fs; +use std::path::Path; + +enum Cmd { + Forward(i32), + Depth(i32) +} + +impl From<&str> for Cmd { + fn from(s: &str) -> Self { + let (cmd, amount) = s.split_once(' ').expect("Malformed input"); + let amount = amount.parse().expect("Malformed input"); + match cmd { + "down" => Cmd::Depth(amount), + "up" => Cmd::Depth(-amount), + "forward" => Cmd::Forward(amount), + _ => unreachable!("Malformed input") + } + } +} + +fn ex1(route: &[Cmd]) { + let pos = route.iter().fold((0,0), + |(f,d),c| match c { + Cmd::Depth(a) => (f,d+a), + Cmd::Forward(a) => (f+a,d), + } + ); + println!("Ex1: The result is {}", pos.0 * pos.1); +} + +fn ex2(route: &[Cmd]) { + let pos = route.iter().fold((0,0,0), + |(a,f,d),c| match c { + Cmd::Depth(i) => (a+i,f,d), + Cmd::Forward(i) => (a,f+i,d+a*i), + } + ); + println!("Ex2: The result is {}", pos.1 * pos.2); +} + +/* AOC21 Day 2: https://adventofcode.com/2021/day/2 */ +fn main() { + let input = Path::new("resources").join("input.txt"); + let content = fs::read_to_string(input).expect("Unable to read input file"); + let route: Vec = content.lines().map( |l| Cmd::from(l)).collect(); + ex1(&route); + ex2(&route); +} + -- cgit v1.2.3