summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGard Spreemann <gspr@nonempty.org>2021-12-02 11:15:37 +0100
committerGard Spreemann <gspr@nonempty.org>2021-12-02 11:15:37 +0100
commit26c6c798736457cdb885b9671c0cfae04e004270 (patch)
tree9b9412553584d418cef4d12b4fbbdc9b251094b0
parentf27d934298c268710797136de6be698251f95b68 (diff)
Day 2
-rw-r--r--02/Cargo.toml15
-rw-r--r--02/input.txt1000
-rw-r--r--02/src/part-1.rs34
-rw-r--r--02/src/part-2.rs40
-rw-r--r--02/test.txt6
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