diff options
author | Gard Spreemann <gspr@nonempty.org> | 2021-12-02 11:15:37 +0100 |
---|---|---|
committer | Gard Spreemann <gspr@nonempty.org> | 2021-12-02 11:15:37 +0100 |
commit | 26c6c798736457cdb885b9671c0cfae04e004270 (patch) | |
tree | 9b9412553584d418cef4d12b4fbbdc9b251094b0 | |
parent | f27d934298c268710797136de6be698251f95b68 (diff) |
Day 2
-rw-r--r-- | 02/Cargo.toml | 15 | ||||
-rw-r--r-- | 02/input.txt | 1000 | ||||
-rw-r--r-- | 02/src/part-1.rs | 34 | ||||
-rw-r--r-- | 02/src/part-2.rs | 40 | ||||
-rw-r--r-- | 02/test.txt | 6 |
5 files changed, 1095 insertions, 0 deletions
diff --git a/02/Cargo.toml b/02/Cargo.toml new file mode 100644 index 0000000..6c152d7 --- /dev/null +++ b/02/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day-02" +version = "0.1.0" +authors = ["Gard Spreemann <gspr@nonempty.org>"] +edition = "2018" + +[[bin]] +name = "part-1" +path = "src/part-1.rs" + +[[bin]] +name = "part-2" +path = "src/part-2.rs" + +[dependencies] diff --git a/02/input.txt b/02/input.txt new file mode 100644 index 0000000..d61291a --- /dev/null +++ b/02/input.txt @@ -0,0 +1,1000 @@ +forward 2 +down 9 +up 6 +forward 1 +down 5 +down 7 +down 9 +forward 9 +down 8 +up 7 +forward 2 +up 6 +forward 4 +down 5 +down 9 +up 1 +down 9 +forward 8 +forward 6 +forward 6 +forward 5 +forward 9 +up 3 +up 5 +forward 1 +down 4 +down 7 +forward 2 +up 3 +down 8 +forward 1 +down 2 +forward 3 +up 1 +up 1 +up 7 +forward 5 +up 8 +forward 8 +forward 8 +down 6 +forward 1 +forward 5 +forward 4 +forward 6 +forward 5 +down 6 +down 9 +forward 9 +down 8 +forward 6 +down 5 +forward 9 +up 3 +up 1 +down 8 +down 7 +down 9 +forward 7 +down 8 +down 9 +down 5 +down 3 +forward 1 +forward 6 +down 1 +forward 9 +down 5 +forward 7 +up 2 +down 8 +forward 1 +down 4 +down 9 +down 4 +up 5 +forward 4 +forward 6 +forward 1 +down 3 +forward 1 +down 6 +up 5 +up 4 +forward 6 +forward 1 +forward 1 +down 2 +up 4 +up 3 +up 2 +up 6 +down 6 +forward 1 +down 8 +forward 1 +up 6 +forward 7 +down 5 +forward 4 +forward 6 +down 4 +forward 4 +down 4 +down 4 +forward 2 +forward 8 +down 5 +down 1 +down 8 +up 5 +up 8 +down 5 +forward 4 +down 6 +up 7 +forward 2 +down 3 +forward 2 +forward 2 +down 9 +down 3 +up 6 +forward 8 +up 2 +up 9 +forward 4 +down 1 +down 5 +forward 4 +down 2 +down 3 +forward 5 +down 4 +forward 7 +up 4 +forward 6 +up 8 +forward 1 +up 9 +down 4 +forward 2 +down 1 +forward 7 +down 3 +down 2 +forward 5 +down 3 +down 9 +down 9 +up 5 +forward 2 +down 8 +up 9 +forward 4 +down 3 +forward 3 +forward 6 +up 2 +forward 3 +down 1 +down 1 +down 1 +forward 7 +forward 4 +forward 7 +down 5 +down 6 +down 2 +forward 6 +down 3 +up 6 +forward 4 +down 8 +up 1 +forward 8 +down 2 +down 5 +forward 4 +down 9 +forward 2 +forward 2 +down 3 +forward 3 +down 1 +forward 2 +down 7 +forward 3 +forward 9 +up 9 +forward 6 +forward 2 +down 1 +down 5 +forward 6 +forward 6 +down 3 +up 3 +forward 9 +down 7 +down 2 +down 4 +down 7 +forward 5 +up 4 +forward 8 +down 5 +forward 7 +down 7 +up 7 +down 8 +forward 9 +up 5 +forward 1 +down 2 +forward 5 +down 9 +forward 3 +down 5 +forward 8 +forward 3 +up 5 +down 2 +up 3 +forward 2 +up 1 +up 5 +down 8 +forward 2 +down 5 +up 4 +up 5 +up 2 +forward 9 +forward 6 +down 9 +up 9 +forward 6 +forward 4 +forward 3 +forward 7 +up 1 +down 2 +down 6 +down 1 +forward 8 +down 1 +forward 6 +down 8 +forward 8 +down 7 +down 6 +down 5 +forward 2 +up 8 +up 6 +up 5 +down 1 +forward 1 +down 1 +down 5 +forward 7 +forward 3 +down 1 +forward 5 +forward 5 +forward 8 +down 1 +up 2 +down 6 +up 6 +forward 6 +forward 6 +down 3 +forward 9 +up 4 +forward 4 +down 6 +up 1 +forward 6 +down 2 +down 5 +down 2 +down 6 +up 5 +down 1 +down 1 +forward 3 +forward 7 +forward 3 +up 2 +down 8 +down 4 +down 1 +down 5 +down 1 +down 9 +forward 6 +down 6 +down 4 +down 6 +down 8 +forward 4 +down 6 +down 7 +forward 8 +down 4 +up 4 +down 1 +forward 1 +forward 4 +forward 1 +up 9 +down 7 +forward 7 +down 4 +forward 1 +up 4 +forward 4 +down 5 +down 7 +forward 5 +forward 7 +forward 1 +forward 1 +forward 9 +forward 9 +up 3 +forward 4 +down 2 +forward 9 +up 8 +forward 3 +up 5 +down 3 +down 8 +forward 8 +down 6 +forward 1 +down 6 +down 6 +up 9 +down 2 +forward 8 +up 9 +down 7 +up 9 +up 8 +up 1 +forward 6 +forward 9 +down 2 +forward 8 +down 1 +up 4 +forward 4 +forward 7 +up 2 +forward 4 +down 5 +forward 3 +down 2 +down 7 +down 4 +down 2 +up 5 +down 5 +down 5 +down 4 +up 1 +forward 7 +down 6 +forward 5 +forward 1 +down 4 +up 9 +down 5 +forward 7 +forward 5 +down 6 +down 3 +down 9 +down 1 +forward 6 +up 2 +down 7 +down 3 +down 6 +up 3 +down 4 +down 4 +forward 9 +down 3 +forward 2 +down 9 +down 8 +up 4 +down 2 +forward 2 +down 5 +down 4 +down 4 +down 2 +forward 6 +down 3 +forward 1 +down 4 +forward 7 +down 5 +up 4 +down 6 +forward 8 +down 6 +forward 2 +forward 4 +forward 5 +forward 7 +forward 4 +forward 5 +down 8 +down 7 +forward 3 +forward 5 +up 7 +forward 1 +down 4 +forward 5 +forward 4 +forward 4 +down 5 +down 8 +forward 8 +down 1 +down 1 +down 5 +up 5 +forward 6 +down 6 +forward 3 +forward 4 +forward 7 +forward 4 +down 8 +forward 2 +down 4 +forward 4 +down 1 +up 2 +forward 6 +up 1 +down 7 +down 9 +forward 7 +forward 2 +up 3 +down 2 +down 9 +down 5 +up 7 +forward 1 +forward 8 +down 8 +up 3 +down 3 +forward 9 +up 4 +down 5 +up 5 +down 1 +up 8 +forward 9 +down 3 +up 6 +forward 6 +forward 1 +down 1 +forward 9 +down 8 +forward 8 +down 6 +up 9 +down 4 +up 3 +up 9 +forward 2 +down 2 +down 2 +forward 3 +down 2 +forward 5 +forward 4 +up 8 +forward 9 +up 7 +forward 2 +down 5 +down 6 +forward 8 +up 7 +forward 4 +forward 3 +up 5 +down 8 +forward 3 +up 2 +down 3 +forward 6 +down 9 +down 2 +down 6 +down 2 +forward 7 +forward 5 +forward 7 +down 8 +forward 2 +down 2 +forward 8 +up 8 +forward 4 +forward 3 +up 5 +down 3 +forward 3 +up 8 +up 7 +down 4 +down 1 +forward 2 +down 1 +up 6 +up 4 +down 3 +up 1 +forward 7 +forward 7 +forward 7 +forward 8 +down 1 +forward 5 +down 6 +forward 9 +forward 7 +forward 7 +down 4 +up 4 +down 6 +down 9 +up 4 +up 2 +up 6 +forward 4 +up 4 +up 6 +down 2 +forward 4 +down 9 +forward 9 +forward 9 +down 1 +forward 7 +down 2 +down 7 +down 8 +down 8 +down 9 +up 9 +down 5 +forward 5 +forward 7 +forward 4 +down 7 +forward 8 +forward 1 +down 8 +up 9 +down 7 +forward 9 +forward 4 +forward 8 +down 9 +forward 4 +down 3 +forward 3 +down 1 +down 1 +down 2 +up 5 +down 2 +down 1 +down 8 +forward 3 +up 2 +forward 7 +down 3 +down 8 +down 1 +forward 4 +forward 7 +down 5 +forward 6 +down 6 +down 2 +forward 6 +down 3 +up 4 +down 7 +forward 7 +up 1 +up 9 +down 1 +down 2 +down 8 +down 7 +up 1 +forward 7 +down 2 +forward 4 +forward 6 +forward 9 +down 6 +forward 2 +up 8 +down 2 +up 2 +up 5 +down 8 +up 6 +down 9 +forward 6 +down 8 +down 6 +down 1 +up 7 +up 6 +down 8 +forward 2 +up 7 +forward 5 +forward 7 +forward 7 +up 5 +forward 2 +down 9 +up 2 +up 8 +up 2 +down 3 +down 7 +forward 9 +down 3 +up 9 +forward 8 +up 8 +forward 4 +forward 8 +forward 6 +up 1 +down 3 +up 1 +down 1 +forward 2 +forward 1 +forward 4 +forward 7 +up 8 +down 9 +up 2 +down 7 +forward 4 +down 3 +forward 4 +forward 2 +down 9 +forward 8 +forward 5 +forward 3 +down 6 +forward 4 +forward 4 +forward 9 +forward 4 +up 5 +down 7 +up 6 +forward 5 +down 5 +forward 4 +down 5 +forward 7 +forward 3 +forward 5 +down 5 +forward 4 +down 5 +up 4 +down 8 +up 3 +down 3 +up 5 +forward 4 +forward 5 +down 6 +forward 6 +forward 1 +forward 8 +down 6 +down 9 +up 5 +forward 2 +forward 8 +up 6 +down 6 +forward 2 +down 8 +forward 7 +forward 7 +down 5 +forward 5 +forward 8 +forward 1 +down 4 +down 2 +down 5 +up 4 +forward 3 +forward 5 +down 4 +down 7 +down 4 +up 9 +up 6 +forward 1 +down 8 +up 8 +up 9 +forward 2 +forward 1 +down 6 +forward 6 +down 4 +forward 7 +up 2 +up 1 +forward 4 +down 1 +forward 8 +forward 3 +up 7 +up 5 +down 1 +forward 8 +forward 6 +up 6 +forward 9 +down 5 +down 9 +forward 2 +down 3 +up 1 +up 7 +down 1 +forward 8 +up 9 +down 1 +down 5 +down 7 +down 5 +down 5 +down 5 +up 9 +forward 9 +forward 7 +forward 4 +forward 6 +down 5 +down 3 +forward 9 +forward 1 +down 1 +down 8 +up 4 +down 9 +forward 9 +up 1 +down 5 +forward 8 +up 6 +forward 3 +down 6 +up 8 +down 7 +forward 3 +forward 6 +down 7 +forward 6 +forward 4 +forward 4 +down 4 +forward 6 +forward 5 +down 6 +forward 6 +down 7 +forward 6 +forward 3 +up 4 +up 2 +up 6 +down 2 +down 8 +forward 5 +forward 1 +up 4 +forward 7 +forward 9 +up 6 +down 7 +down 3 +up 5 +forward 5 +down 8 +up 1 +down 1 +down 3 +down 2 +down 1 +forward 5 +down 3 +down 5 +forward 7 +forward 9 +down 3 +forward 7 +forward 5 +forward 4 +forward 2 +forward 7 +forward 8 +forward 6 +down 8 +forward 5 +forward 6 +forward 6 +down 8 +down 2 +forward 4 +down 7 +forward 6 +down 7 +down 4 +forward 6 +up 6 +forward 4 +forward 9 +forward 2 +forward 3 +forward 1 +down 8 +down 3 +forward 4 +up 3 +forward 7 +forward 1 +down 7 +down 8 +forward 1 +up 8 +forward 8 +up 8 +down 5 +forward 6 +down 8 +down 4 +down 9 +up 1 +down 3 +forward 6 +down 6 +forward 7 +forward 3 +down 6 +down 6 +forward 4 +down 4 +down 1 +down 8 +forward 2 +forward 8 +forward 8 +down 6 +forward 9 +down 9 +down 5 +down 5 +forward 7 +down 1 +forward 1 +down 1 +down 6 +down 1 +forward 1 +up 6 +up 9 +forward 5 +down 6 +forward 8 +forward 6 +down 7 +forward 1 +forward 4 +forward 9 +forward 2 +forward 4 +down 2 +forward 1 +forward 8 +down 1 +down 1 +forward 4 +down 5 +down 3 +down 9 +down 2 +up 8 +down 7 +down 1 +down 9 +forward 2 +forward 2 +up 3 +forward 3 +down 3 +forward 5 +forward 9 +down 7 +up 7 +down 9 +forward 3 +forward 7 +down 1 +forward 8 +down 8 +forward 1 +down 8 +down 6 +forward 2 +down 3 +down 1 +down 8 +forward 3 +up 5 +down 7 +up 2 +up 8 +forward 5 +up 7 +down 6 +up 7 +down 9 +forward 5 +up 4 +forward 9 +down 5 +up 7 +down 2 +up 2 +up 7 +forward 5 +down 6 +forward 4 +down 4 +down 3 +forward 2 +up 2 +down 5 +forward 8 +down 3 +up 7 +down 1 +down 7 +forward 7 +forward 4 +forward 7 +down 2 +down 9 +down 6 +down 9 +down 2 +down 9 +down 7 +down 5 +forward 4 +up 5 +up 7 +forward 2 +forward 7 +down 3 +down 3 +forward 4 diff --git a/02/src/part-1.rs b/02/src/part-1.rs new file mode 100644 index 0000000..df74f8b --- /dev/null +++ b/02/src/part-1.rs @@ -0,0 +1,34 @@ +use std::io::{BufRead}; + +#[derive(Debug)] +enum Command { Down(u64), Forward(u64), Up(u64) } + +pub fn main() { + let mut stdin = std::io::stdin(); + let mut handle = stdin.lock(); + + let mut depth: u64 = 0; + let mut pos: u64 = 0; + + for line in handle.lines() { + let l = line.expect("IO error"); + let mut words = l.split_whitespace(); + let command_string = words.next().expect("Malformed input"); + let value_string = words.next().expect("Malformed input"); + let command: Command = match command_string { + "down" => Command::Down(value_string.parse().expect("Malformed input")), + "forward" => Command::Forward(value_string.parse().expect("Malformed input")), + "up" => Command::Up(value_string.parse().expect("Malformed input")), + _ => panic!("Malformed input") + }; + + match command { + Command::Down(x) => depth += x, + Command::Forward(x) => pos += x, + Command::Up(x) => depth -= x + } + } + + //println!("Depth: {}. Horizontal position: {}.", depth, pos); + println!("{}", depth*pos); +} diff --git a/02/src/part-2.rs b/02/src/part-2.rs new file mode 100644 index 0000000..7d9d86a --- /dev/null +++ b/02/src/part-2.rs @@ -0,0 +1,40 @@ +use std::io::{BufRead}; + +// It is unclear whether aim can be negative in part 2, so +// switching everything to signed arithmetic. +#[derive(Debug)] +enum Command { Down(i64), Forward(i64), Up(i64) } + +pub fn main() { + let mut stdin = std::io::stdin(); + let mut handle = stdin.lock(); + + let mut depth: i64 = 0; + let mut pos: i64 = 0; + let mut aim: i64 = 0; + + for line in handle.lines() { + let l = line.expect("IO error"); + let mut words = l.split_whitespace(); + let command_string = words.next().expect("Malformed input"); + let value_string = words.next().expect("Malformed input"); + let command: Command = match command_string { + "down" => Command::Down(value_string.parse().expect("Malformed input")), + "forward" => Command::Forward(value_string.parse().expect("Malformed input")), + "up" => Command::Up(value_string.parse().expect("Malformed input")), + _ => panic!("Malformed input") + }; + + match command { + Command::Down(x) => aim += x, + Command::Forward(x) => { + pos += x; + depth += aim*x; + }, + Command::Up(x) => aim -= x + } + } + + //println!("Depth: {}. Horizontal position: {}.", depth, pos); + println!("{}", depth*pos); +} diff --git a/02/test.txt b/02/test.txt new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/02/test.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 |