From 6029d045beaef047f0427aa3e505e0ffa06c04d1 Mon Sep 17 00:00:00 2001 From: Bizcochito Date: Sun, 11 Dec 2022 20:31:42 +0100 Subject: [PATCH] day 10 part 1 --- Cargo.lock | 4 + Cargo.toml | 2 +- day09/input | 3508 ++++++++++++++++++++++----------------------- day10/Cargo.toml | 8 + day10/input | 146 ++ day10/src/main.rs | 186 +++ 6 files changed, 2099 insertions(+), 1755 deletions(-) create mode 100644 day10/Cargo.toml create mode 100644 day10/input create mode 100644 day10/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 8d426ff..bc77fc7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,6 +38,10 @@ version = "0.1.0" name = "day09" version = "0.1.0" +[[package]] +name = "day10" +version = "0.1.0" + [[package]] name = "tiesto" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 43ddd1b..65600da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ members = [ "day07", "day08", "day09", -# "day10", + "day10", # "day11", # "day12", # "day13", diff --git a/day09/input b/day09/input index b429d1b..bbd1f5c 100644 --- a/day09/input +++ b/day09/input @@ -1,2000 +1,2000 @@ -R 1 -U 1 -D 1 -U 1 -R 2 -D 2 -R 2 D 2 R 1 +L 2 U 1 +R 2 +L 2 +R 2 L 1 -U 2 -D 2 -R 1 -D 1 -R 2 -U 2 -R 2 -L 2 -D 2 -L 2 -U 2 -D 2 -L 2 -R 2 -D 1 -U 2 -D 2 -U 1 -L 2 -D 2 -R 1 -U 2 -D 2 -L 1 -D 2 -L 2 -R 2 -U 2 -D 2 -U 1 -R 1 -U 1 -D 1 -R 2 -L 2 -D 1 -U 1 R 1 L 1 +R 2 +L 2 +R 1 +D 2 U 1 +R 1 +L 2 +U 2 +R 2 +U 2 +R 2 D 1 L 1 U 1 -D 1 -U 2 -D 2 -U 1 -D 1 -U 1 -L 1 R 2 L 1 D 1 U 1 +L 1 +U 1 +D 2 +U 1 +R 2 +U 1 +L 1 +D 1 +L 1 +U 1 R 1 -L 2 +L 1 U 2 L 2 +D 2 +L 2 +R 2 +U 1 +R 1 U 2 +D 2 +R 2 +L 1 +R 1 +D 1 +U 2 +R 1 +L 1 +U 2 +L 2 +U 1 +L 2 +U 1 +R 1 +L 1 +D 2 +U 2 +R 2 +D 1 +R 1 +U 2 +R 2 +L 2 +U 1 +L 1 +D 2 +R 2 +L 1 +R 1 +D 1 +R 1 +L 1 +D 2 +R 1 +U 1 +L 1 +R 1 +L 1 +D 2 +L 1 +U 1 +R 1 +D 1 +R 1 +D 1 +L 2 +U 1 D 1 R 2 D 2 -L 2 -R 1 -U 2 -R 1 -D 2 -L 1 -D 1 -L 1 -D 2 -R 1 -U 1 -L 1 -U 2 -D 2 -L 1 -U 2 -D 2 -R 1 -U 1 -R 1 -L 2 -D 1 +R 2 L 2 U 2 -L 2 -D 2 -L 2 -D 2 +L 1 U 1 L 1 +R 1 +L 1 U 2 -R 1 -D 1 -R 1 -D 1 -R 1 -D 2 +L 2 +U 2 +L 1 U 1 -R 1 -U 1 -R 1 D 1 U 3 -L 2 R 2 -L 3 -R 1 -L 1 -U 2 -L 1 -U 3 -D 3 -L 3 D 2 -L 3 -U 1 -L 1 -R 2 -D 3 -L 1 R 1 U 2 L 2 -D 3 -U 2 -D 3 -R 3 +D 1 U 1 -D 3 -L 3 R 2 U 3 D 1 -U 1 -R 1 -L 2 -R 1 -L 2 -D 3 -L 1 -D 3 -R 2 -U 1 -D 1 -R 3 -D 1 -L 1 +L 3 U 2 -D 1 -L 3 -U 3 +D 2 R 1 D 1 -U 3 -D 2 -L 3 -R 2 L 1 D 2 -U 1 -R 2 -L 1 -U 2 -R 2 -L 2 -U 2 -L 2 -U 2 -R 1 -U 2 -D 3 -U 1 -D 1 L 2 U 1 L 2 R 3 -L 2 -R 3 +U 3 L 1 -R 2 -L 2 +U 3 +L 1 +D 1 +U 3 R 1 -D 3 -L 3 +U 3 D 2 -R 1 +L 3 +R 3 +L 2 +U 1 D 1 U 1 -D 2 -R 3 +L 1 +D 1 +R 2 U 3 D 3 -R 3 +L 3 +R 1 +U 3 +D 1 +U 3 L 1 -U 1 +D 3 R 3 U 2 -L 1 -R 1 -L 3 -D 3 +D 1 R 2 U 1 +R 3 +U 1 +D 1 +U 1 +L 1 +R 3 +U 2 +D 3 +U 2 +R 2 +L 1 +D 3 +R 3 +L 2 +U 1 +L 2 +U 2 +R 3 +U 3 +D 2 +U 2 +D 3 +R 1 +D 1 +R 3 +D 1 +L 3 +R 2 +D 1 +L 1 +D 1 +L 3 +D 1 +L 3 +D 2 L 2 D 2 R 1 +U 2 +D 1 U 3 +L 3 +D 1 +R 3 +L 2 D 2 +U 2 R 1 +U 2 +R 3 +L 1 +R 3 +L 1 +D 1 +U 2 +L 3 +U 3 +R 2 +L 1 +R 2 +U 4 +R 1 +U 2 +L 2 +D 3 +U 1 +L 2 +U 1 +L 2 +D 3 +U 1 +D 3 +U 1 +D 3 +L 2 +R 1 +L 3 +R 2 +U 2 +L 2 +D 3 +L 2 +U 3 +R 4 +L 3 +D 4 +L 3 +U 2 +L 2 +U 4 +R 2 +D 4 +R 1 +D 4 +U 4 +D 3 +R 2 +D 4 +U 1 +D 4 +U 4 +R 2 +D 3 +R 4 +D 2 +L 2 +R 4 +L 1 +D 2 +U 4 +R 4 +U 4 +L 4 +U 2 +D 3 +L 3 +U 3 +R 1 +L 2 +D 2 +L 3 +R 2 +U 3 +D 4 +L 1 +D 4 +U 3 +L 3 +U 4 +D 1 +U 2 +D 4 L 4 D 3 R 3 -L 1 -D 1 -R 3 -U 3 -L 2 -D 4 -U 3 -D 2 +U 1 L 4 D 2 -R 1 -D 3 -R 3 -D 1 +R 4 U 4 -R 1 -U 4 -D 2 -U 4 -L 1 -R 1 -L 2 -R 1 -D 1 L 4 -U 1 -R 4 -D 3 -R 1 U 3 -R 3 -U 2 -L 3 -U 2 -L 2 -R 4 -U 2 -D 3 -R 4 -D 1 -U 4 -D 3 -R 2 -D 3 -R 1 -D 1 -U 1 -R 3 -L 1 -U 3 -L 1 -D 3 -L 3 -D 3 -R 3 -D 3 -U 1 -R 4 -D 2 -R 2 -U 1 -R 1 -D 1 L 4 -D 2 -L 1 -U 4 -D 1 -L 2 -U 4 +R 3 D 3 -U 3 -L 2 -R 2 +L 1 +U 2 +R 1 +U 2 +D 3 +U 4 +L 1 +D 2 +U 1 D 1 +L 1 +D 1 +U 1 +D 3 +L 1 +D 4 +L 2 +R 3 +L 2 +R 4 L 4 -D 2 -R 3 -D 4 -R 4 -U 1 -D 1 -L 2 -R 1 -D 4 -R 2 -L 1 -D 4 -L 3 -R 3 -U 4 -R 3 -D 3 -L 2 -R 1 -D 3 -L 2 -R 3 -D 1 -L 2 -U 3 -R 4 -D 4 -U 3 -R 2 -D 3 -R 3 -D 1 -R 4 -U 3 -R 5 -U 1 -D 2 -R 5 -U 1 -R 3 -L 1 -U 1 -L 1 -D 1 -R 5 U 2 +R 3 +L 2 D 3 -R 4 -L 5 -R 2 -D 1 L 2 U 2 +R 3 +U 1 D 3 -R 5 -D 2 -R 5 -D 5 U 5 -D 1 -L 5 +D 4 +U 3 +L 1 +D 4 U 3 D 2 -R 1 -D 5 -R 2 -D 2 -R 5 -U 3 -L 2 -U 1 -L 4 -R 5 -L 3 -R 2 -U 2 -D 3 L 1 -U 3 -L 4 -R 5 -L 1 -U 4 -L 1 -D 5 R 3 U 5 -R 3 -L 2 -U 4 -D 2 -U 4 -L 1 -U 1 -L 1 -R 4 -D 4 -U 4 -R 5 -D 2 -U 2 -L 3 -U 4 -D 3 -L 2 -R 4 -U 1 -L 3 -R 3 -D 1 -L 2 -R 5 -U 2 -L 2 -R 2 -L 4 -D 4 -L 2 -U 4 -R 2 -L 3 -U 4 L 5 -D 5 -L 5 -U 3 -L 5 -R 2 -D 4 -L 5 -U 3 -D 2 -L 2 -D 2 -U 2 -D 4 -R 5 -U 5 -L 3 -R 5 -D 3 -L 1 -D 1 -L 1 -D 5 -R 2 -L 1 -U 2 -L 3 -U 2 -R 2 -L 5 -R 3 -U 2 R 1 +D 2 +R 2 +D 3 L 4 D 4 -U 3 -R 2 -L 2 +U 2 D 3 -L 2 -R 4 +R 5 +D 3 +U 2 +D 4 L 1 +D 5 +R 2 +D 1 +U 2 +L 1 +R 5 +U 4 +L 5 +D 2 +U 4 +D 5 +U 4 +L 4 +U 3 +D 2 +L 2 +R 2 +D 1 +U 1 +R 5 +L 3 +R 4 +D 5 +R 5 +D 4 +L 1 +R 2 +U 3 +R 5 +D 5 +R 3 +D 1 +R 3 +D 2 +U 4 +D 1 +U 5 +L 1 +U 3 +L 3 +D 1 +R 3 +U 1 +L 3 +R 2 +L 4 +R 4 +U 1 +D 5 +R 2 +L 5 +R 5 +U 3 +D 1 +R 4 +D 5 +L 5 +R 4 +U 5 +R 4 +D 3 +R 4 +D 2 +R 2 +U 1 +D 2 +L 1 +R 1 +L 3 +D 3 +L 5 +D 4 +R 5 +D 2 +L 5 +U 3 +R 3 +L 5 +U 3 +L 5 +R 5 +L 2 +U 4 +D 2 +R 1 +L 5 +R 1 +U 5 +L 2 +R 2 U 6 -R 2 -D 5 -L 4 +L 6 +U 2 +R 5 U 3 +R 2 +D 3 +U 3 +D 1 +L 1 +U 2 +R 5 +L 1 +R 5 +D 6 +R 4 +L 4 +U 1 +R 3 +D 5 +U 3 +L 6 +U 1 +D 6 R 6 -D 6 -L 4 -D 3 -R 2 -D 2 -L 2 -R 2 -D 4 -L 6 -D 3 -L 5 -R 4 -L 5 -U 3 -L 6 -U 5 -L 3 -R 2 -U 3 -L 1 -D 1 -L 3 -U 4 -L 5 -D 3 -L 2 -U 5 -D 4 -L 3 -R 1 -U 3 -D 4 -U 3 -D 3 -U 6 -D 4 -R 3 -U 6 -R 1 -U 3 -R 3 -U 3 -R 5 -U 6 -L 1 -R 2 -D 5 -U 3 -D 4 -U 4 -D 4 -L 1 -U 4 -D 3 -L 1 -U 5 -R 3 -U 3 -R 1 -U 1 -L 3 -R 3 -U 4 -R 1 -L 3 -U 2 -L 2 -D 2 -L 4 -U 4 -L 3 -U 4 -R 2 -U 1 -D 2 -U 2 -D 5 -L 5 -R 1 -D 3 -L 4 -R 3 -D 6 -U 7 -D 5 -L 7 -D 5 -U 3 -D 1 -L 2 -R 2 -D 7 -U 7 -D 3 -L 2 -U 1 -L 6 -D 5 -R 4 -U 3 -R 5 -U 6 -L 6 -U 6 -L 1 -R 5 -U 7 -R 5 -U 5 -R 4 -U 5 -D 6 -R 4 -D 7 -L 7 -U 5 -R 2 -U 7 -R 3 -D 5 -R 5 -D 4 -U 1 -L 6 -R 4 -D 6 -L 6 -R 2 -U 7 -L 3 -D 5 -L 4 -R 3 -L 1 -U 3 -D 3 -R 5 -U 1 -L 6 -U 7 -R 7 -D 4 -L 4 -U 6 -R 7 -U 4 -R 1 -L 1 -R 4 -U 7 -D 1 -U 5 -D 3 -R 7 -L 1 -D 4 -U 6 -D 2 -L 3 -U 1 -D 6 -L 1 -D 5 -R 3 -U 3 -L 6 -D 5 -R 4 -U 5 L 4 R 4 -U 7 -R 1 -L 7 -U 2 -R 4 -L 1 -D 5 -U 4 -L 6 -D 2 -R 3 -L 2 -D 5 -R 5 -U 7 -R 4 -D 7 U 6 R 6 -L 6 -R 6 -U 1 -D 1 -R 3 -D 2 U 3 +R 6 +U 2 +R 6 +U 4 +R 2 +L 5 +U 2 +D 6 +L 4 +U 5 +L 4 +R 6 +L 1 +R 3 +L 3 +D 1 +L 5 +D 1 +L 5 +R 2 +D 3 +L 1 +U 6 +R 6 +U 2 +L 3 +R 4 +U 6 +R 3 +L 4 +U 1 +R 1 +D 1 +L 4 +D 6 +U 1 +R 2 +L 6 +U 3 +R 1 +L 1 +D 3 +R 1 +U 4 +D 2 +L 1 +D 3 +R 2 +D 5 +L 3 +R 6 +U 4 +D 4 +L 4 +U 2 +D 2 +L 4 +D 6 +U 5 +D 5 +R 6 +D 1 +L 4 +R 2 +U 3 +D 5 +R 4 +U 6 +R 4 +U 6 +L 7 +U 6 +D 1 +U 2 +D 6 +R 4 +U 7 +D 2 +L 6 +R 2 +U 7 +R 7 +L 1 +U 2 +L 5 +R 4 +L 7 +R 3 +D 5 +U 7 +D 4 +L 6 +U 5 +L 4 +D 2 +U 2 +D 2 +U 5 +R 7 +D 3 +U 3 +D 6 +U 4 +D 2 +R 6 +L 5 +U 3 +R 1 +D 7 +R 7 +U 4 +R 7 +U 2 +R 1 +L 4 +U 6 +L 1 +D 1 +U 3 +R 7 +U 1 +R 3 +L 3 +R 2 +U 6 +L 6 +D 7 +L 7 +R 3 +U 5 +L 5 +D 4 +L 7 +R 5 +U 7 +D 5 +R 2 +U 2 +L 4 +U 4 +D 5 +L 6 +R 3 +D 4 +U 3 +D 6 +L 5 +U 1 +L 4 +R 2 +L 2 +U 7 +R 4 +U 4 +L 4 +D 1 +U 1 +D 3 +U 3 +D 3 +R 6 +L 5 +R 6 +D 1 +U 4 +L 5 +U 2 +D 6 +L 1 +U 5 +D 5 +R 5 +D 1 +L 4 +D 2 +U 1 +R 3 +U 3 +L 3 +D 5 +U 2 +R 4 +U 1 +D 8 +R 2 +U 4 +L 4 +D 8 +R 2 +U 6 +D 4 +R 5 +U 4 +R 2 +L 2 +U 4 +D 8 +R 7 +L 5 +R 5 +U 6 +R 6 +U 7 +D 2 +U 6 +D 1 +R 5 +U 1 +D 6 +R 7 +L 1 +R 1 +D 1 R 3 D 8 -U 1 -R 5 -L 8 -D 8 -L 7 -D 3 -U 6 -R 6 -U 8 -D 3 +R 1 U 2 +L 4 +R 4 +L 6 R 2 -D 7 -U 8 -D 5 -L 2 +U 7 +R 1 +L 3 +D 1 +L 3 +U 7 R 8 -U 3 -L 2 -R 5 -U 3 -R 6 -L 8 -U 8 -R 8 -L 2 -U 1 +L 7 D 1 -U 4 -L 1 -U 2 -L 4 -D 2 -U 4 -D 3 -L 8 -D 3 -R 3 -L 2 +R 1 +L 7 D 7 -L 5 -R 5 -L 3 -R 4 -L 7 -D 6 -U 3 -L 3 -D 4 -R 4 -L 3 +U 5 D 5 -U 2 -R 4 -U 6 -L 7 -D 2 -R 6 -L 3 -D 8 -L 8 -R 2 +L 1 U 7 D 7 -U 3 -R 7 -U 8 -L 5 -D 6 -R 6 -U 8 -R 1 -U 3 R 5 -L 4 -D 7 -U 6 -R 8 -L 2 -R 6 -U 1 -L 4 -D 1 -L 2 -U 4 -R 2 -U 4 -R 5 -L 3 -R 1 -L 4 -R 7 -D 7 -R 1 -U 5 -L 6 -D 4 -R 4 D 5 -U 8 -L 3 -D 8 -L 6 U 5 -D 1 -R 7 -L 2 -D 1 -R 7 -L 5 -D 8 -U 6 -D 1 +R 6 L 8 -U 8 -L 1 -R 1 -U 2 -D 9 -L 5 -D 9 -L 4 -U 8 -D 3 R 6 L 1 +R 3 +D 1 +L 2 +U 7 +R 5 +L 4 +U 3 +L 6 +U 6 +R 6 +L 4 +U 6 +R 5 +U 2 +R 7 +U 8 +R 5 +U 2 +R 4 +L 5 +R 1 +D 4 +L 8 +R 3 +L 2 +U 7 +R 4 +L 6 +R 5 +U 2 +L 3 +D 8 R 8 D 7 -L 6 -U 7 +L 4 +D 4 R 6 -U 2 -L 3 -D 6 +L 7 +U 8 L 5 +R 4 +D 4 +R 8 +D 2 +L 7 +D 6 U 3 -R 1 -U 6 -D 1 +L 4 +R 6 +U 8 +L 2 +R 6 +L 7 +U 4 +L 3 +D 2 +R 8 +U 3 +D 2 +U 5 +R 7 +D 7 +L 6 +U 8 +D 6 +U 5 +D 6 U 2 +L 7 +R 4 L 9 R 2 -L 2 -R 9 -D 1 -R 2 -U 7 -D 7 +U 3 +R 7 +U 6 +L 3 +U 8 +L 9 U 5 +R 1 +L 5 +D 5 +R 8 +L 3 +U 1 +L 2 +D 5 +U 1 +D 8 +U 5 +D 7 +L 9 +U 6 +D 4 +R 5 +U 3 +L 1 +D 9 R 4 +D 7 +U 2 +R 2 +D 4 +L 2 U 9 -L 5 -U 9 -D 5 -L 1 -R 3 -L 1 +R 7 U 1 +R 2 D 7 -L 8 -D 2 +R 3 +D 6 L 7 -D 1 -L 6 -R 2 -D 1 -U 9 -D 4 -U 8 -L 8 -U 1 -L 8 -D 6 -U 1 -R 2 -U 3 -R 4 -D 4 -U 4 -L 9 -D 5 -L 2 -U 6 -D 8 -U 6 -R 1 -L 6 -D 5 -R 3 -L 4 -R 6 -L 5 -R 4 -L 6 -D 5 -R 8 -D 6 -L 1 -U 8 -R 8 -U 8 -R 3 -U 2 -D 9 -L 9 -U 3 -D 5 -L 2 -D 2 -R 3 -L 2 -D 8 -R 6 -D 9 -R 5 -L 9 -R 2 -L 9 U 5 R 9 -D 3 -R 1 -U 1 -L 6 -R 7 -D 7 -U 3 -R 2 +U 4 +L 7 +R 5 +U 7 +L 4 +D 4 +R 9 +D 5 L 5 -D 2 +D 1 +R 2 +D 6 L 8 U 8 -R 9 +L 6 +D 7 +L 5 +U 2 +L 3 +D 9 +U 8 +D 3 +L 8 +R 2 +D 7 +R 5 +D 3 +U 1 +R 3 +L 9 +U 3 +D 2 +L 4 +D 7 +R 8 +U 7 +D 5 U 5 -R 1 -U 9 +R 7 +L 8 +D 7 +L 7 D 8 +U 5 +R 9 +U 10 +R 5 +U 6 +R 7 +D 9 +L 2 +R 1 +D 2 +R 9 +L 4 +U 4 +R 5 +D 9 +U 4 +L 7 +D 9 +L 4 +D 4 +L 10 +U 9 +L 8 R 10 U 9 -D 5 -R 4 -D 8 -U 4 +L 10 +U 2 +R 8 +L 2 +D 6 +R 1 +D 1 +L 5 +U 2 +R 9 +U 2 +R 1 +U 1 +L 6 +D 1 +R 2 +D 10 L 7 +R 2 +U 7 +D 4 +R 9 +L 7 +D 8 +U 5 +R 10 +L 10 +D 2 +U 2 +R 8 +U 9 +D 1 +R 2 +L 10 +U 5 +R 8 +L 7 +D 1 +R 7 +D 3 +U 8 +L 4 +D 3 +U 4 +R 5 +U 9 +R 10 +U 3 +R 10 +L 6 +R 5 +U 8 +D 9 +R 4 +U 9 +L 1 +U 7 +R 4 +U 2 +L 7 +D 9 +U 8 +L 7 +U 8 +L 3 +R 7 +D 7 +L 7 +D 6 +L 2 +D 5 +U 4 +R 8 +L 6 +R 7 +D 4 U 10 L 8 R 10 -L 9 -D 9 -L 4 -R 7 -U 4 -D 3 -U 10 -R 6 -D 9 -L 5 -R 3 -D 7 -R 9 -D 4 -L 9 -D 3 -R 7 -U 6 -L 6 -R 6 -L 7 -D 8 -L 7 -U 5 -D 8 -L 8 -U 9 -L 5 -D 9 -U 9 -R 3 -D 1 -U 9 -L 9 -U 6 -R 4 -U 6 -D 10 -U 4 -R 9 -D 9 -R 2 -D 10 -L 9 -U 8 -L 2 -D 7 -L 10 -R 2 -L 9 -R 9 -L 10 -U 6 -D 7 +D 2 R 1 -D 9 -R 5 -L 7 -D 4 U 7 -L 3 -D 3 -R 4 +L 5 +R 5 +L 10 +D 5 +R 10 +U 7 +L 7 +R 9 +D 2 L 8 +R 11 +D 4 +R 6 +L 5 +R 8 U 1 +L 6 +U 3 L 1 D 10 -U 2 -D 9 -L 2 -D 8 -U 2 +L 9 D 3 -R 6 -U 3 -R 5 -U 4 -L 6 -R 10 -L 1 -D 2 -L 3 -U 11 -R 5 -U 11 -D 11 U 10 -D 2 -L 10 +L 9 U 8 -R 4 D 11 U 11 -R 11 -U 5 -D 3 -R 7 -D 9 -U 9 -R 5 -U 8 -D 7 -U 9 -D 2 -U 11 -L 7 -D 1 -R 9 -D 2 -R 5 -U 4 -R 11 -D 1 -L 2 -R 1 -U 5 -D 4 -L 10 -R 11 -U 6 +L 1 +R 2 +U 1 L 3 -U 11 -R 1 +U 2 D 1 -L 2 -U 5 +U 4 R 6 +L 6 +R 7 +L 9 +R 8 +L 4 +D 11 +L 4 +U 10 +D 6 +L 10 +U 2 +R 3 +L 10 +D 5 +L 1 +D 2 +R 6 +U 2 +L 2 U 9 +R 10 +L 4 +D 2 +R 10 +L 5 +U 2 +L 1 +D 6 +L 4 +U 5 +D 8 +U 11 +D 5 +U 10 +L 8 +R 5 +L 6 +R 5 +L 2 +R 7 +D 4 +L 9 +D 2 R 11 +D 5 +U 6 +D 2 +L 4 +R 9 +L 2 +D 5 +R 2 D 9 +R 8 +L 3 +U 8 +R 9 +D 8 +R 4 +D 5 +U 7 +D 7 +R 4 +D 10 +L 1 +D 5 +U 11 L 11 -U 6 -R 5 -L 7 -D 6 +U 11 +L 10 U 9 -D 5 -U 6 -R 10 -D 11 -R 4 -U 7 -L 5 -U 7 -L 2 -R 6 -L 10 -D 3 -R 6 -L 9 -D 8 -L 1 -R 1 -L 1 -R 3 -D 8 -L 10 -D 2 -U 1 -D 1 -L 3 -R 10 -L 3 -U 1 -D 2 -U 2 -D 3 -U 1 -R 8 -U 8 -D 10 -U 6 -L 5 -U 6 -D 4 -R 9 -D 9 -R 9 -D 11 -L 3 -D 7 -R 9 -L 7 -U 7 -D 7 -R 4 -L 3 -R 5 -U 3 -L 9 -D 10 -L 1 -R 9 -L 6 -D 5 L 6 D 4 -U 7 -L 8 -R 7 -L 5 -U 9 -R 1 -L 1 -D 12 -R 5 -U 1 -L 8 +R 6 +D 8 +U 6 D 11 -U 5 -D 5 -R 4 -D 10 R 2 -U 6 -D 2 -L 12 -D 1 -R 10 -U 4 -D 8 -L 7 -D 9 -R 7 -D 1 -R 10 -D 5 -U 7 -D 12 -R 9 -U 2 -D 3 +U 9 +L 6 U 5 -D 2 -U 6 +R 10 +D 8 +L 9 +R 8 +D 6 +L 8 +D 12 +U 2 +R 1 +L 1 +U 1 +R 6 D 3 -U 7 -D 4 -R 11 -D 2 -L 3 +U 6 +D 5 R 9 +L 12 +U 7 +R 6 +L 9 +U 1 +R 12 +D 11 +R 6 +U 11 +D 4 L 2 R 12 -L 3 -D 5 -U 7 -D 6 -R 9 -D 12 -R 11 -D 5 U 5 -D 2 -R 1 -U 6 -R 6 -D 5 -L 9 -U 10 -D 4 -U 1 R 3 -D 10 -U 1 -R 9 -D 8 -L 1 -D 12 U 11 -D 12 -L 2 -R 9 -U 12 D 6 -L 1 -R 4 -L 8 -D 8 -L 6 -R 10 -L 8 -D 4 -U 11 -L 1 -R 5 -L 6 -R 10 -D 12 -R 3 -L 9 -D 10 -U 6 -D 9 -R 7 U 9 -R 10 +L 10 +U 2 +L 9 +U 9 +R 6 +L 12 +D 2 U 10 -L 10 -U 1 -L 3 -D 7 -L 12 -U 4 R 3 -U 1 -L 8 -R 5 -U 4 -L 4 -D 5 -R 4 -D 11 -L 9 -D 5 -L 7 -U 6 -R 8 -U 7 -D 3 -U 1 -L 6 -U 8 -D 2 -R 7 -D 2 -U 1 -L 9 -U 8 -L 10 -U 4 -D 12 -L 12 -D 5 -R 3 -U 1 -D 1 -R 11 -L 10 -R 11 -L 6 -R 3 -L 13 -R 6 -L 4 -R 10 -D 9 -R 13 -U 8 -L 7 -R 7 -L 10 -R 9 -U 4 -L 1 -D 1 -L 12 -D 6 -L 3 -R 4 -U 6 -L 12 -D 2 -U 5 -R 11 -L 2 -U 8 -R 10 -D 2 -U 6 -L 4 -D 2 -U 9 -L 7 -D 5 -L 6 -U 9 -R 6 -L 9 -R 1 -U 3 -L 6 -R 6 -U 8 -D 1 -R 5 U 12 -D 9 -U 10 -D 13 -L 10 +L 12 R 4 -L 13 -R 9 -L 9 -D 6 -U 8 -D 6 -U 8 -D 10 -R 3 L 11 -R 8 -D 4 -R 2 -U 10 -D 9 -U 8 -R 5 -D 10 -L 11 -R 7 -D 9 -U 7 -L 6 -U 3 -L 5 -U 6 D 1 -U 3 -R 8 -L 5 -U 3 -R 13 -L 8 -D 1 -U 8 -L 6 -D 11 -U 4 -D 1 -R 9 -D 11 -R 1 -D 2 -R 10 -U 2 -D 12 -U 6 -R 13 -U 6 -D 4 -R 11 -U 6 -R 9 -U 10 -D 3 -R 2 -L 13 -U 14 -D 14 -R 6 -D 9 -U 5 -D 2 -L 5 -R 10 L 3 -R 8 -D 9 -U 10 -R 11 -U 8 -L 8 -R 12 -D 13 -U 7 -R 14 -D 9 -L 12 -R 13 -L 10 D 11 -L 7 -U 6 -D 14 -L 14 -D 13 -U 11 -R 11 -U 9 -L 8 -D 2 -L 9 -R 12 U 5 -D 9 -U 10 -R 1 -L 2 -D 8 -L 8 -R 4 -U 2 -L 13 -R 9 -L 12 -D 7 -L 14 -D 13 -R 12 -D 10 -L 5 -U 12 -R 6 -L 3 -U 14 -R 8 -U 10 -R 5 -U 3 D 1 -R 6 -U 9 -R 4 -L 9 -U 7 -R 6 -U 8 -R 10 -U 9 -R 9 U 12 -L 14 -R 2 -U 11 L 12 -D 5 -R 15 -L 10 -U 8 -R 6 -U 8 -R 6 -D 2 -U 9 -L 15 -D 13 -L 14 -U 1 -D 9 -U 6 +U 5 R 8 -L 6 -D 3 -L 13 -R 7 -U 1 -L 8 -U 7 -D 8 -R 1 -D 6 -L 8 -R 14 -D 14 -U 9 -L 14 -R 15 -U 11 -L 14 -D 14 L 1 -U 5 -L 3 -R 4 -L 13 -R 5 -D 14 -R 4 -U 7 -D 9 -R 4 -U 6 -D 11 -R 12 -D 13 -U 15 -D 10 -R 1 D 1 -U 10 -L 14 -R 13 -U 6 -D 10 -U 15 -D 3 -U 8 +L 3 +U 1 +R 4 +D 4 +L 6 +R 11 +U 11 D 2 -U 15 -R 6 -U 12 -L 9 -R 2 -D 6 -R 15 -D 13 +U 7 +L 3 +D 3 +R 10 +D 1 +U 8 +D 7 +U 6 +L 10 +R 3 +L 6 +D 10 +L 2 +U 6 +D 8 R 2 +L 5 +U 1 D 5 +U 10 +D 5 +L 7 +U 3 +R 6 +D 2 +U 5 +D 10 +L 5 +D 2 +R 9 +L 11 +D 3 +L 6 +R 11 +U 10 +L 12 +D 12 +U 8 +D 5 +R 1 +L 6 +D 11 +U 12 +R 11 +D 12 +L 5 +D 7 +R 10 +U 4 +L 1 +R 3 +U 9 +L 13 +U 8 +R 3 +D 4 R 8 +D 3 +R 8 +D 13 +U 1 +R 12 +U 12 +L 8 +R 5 +D 1 +U 3 +R 9 +D 6 +U 11 +R 3 +D 12 +R 8 +L 6 +D 8 +U 6 +R 13 +L 10 +U 6 +R 5 +L 11 +U 9 +L 12 +R 8 +L 6 +R 3 +D 12 +L 9 +D 3 +U 5 +L 6 +R 7 +L 13 +D 4 +R 7 +U 5 +D 13 +R 4 +U 11 +D 8 +R 5 +D 5 +U 3 +L 6 +U 4 +R 8 +D 8 +U 9 +L 8 +U 2 +R 7 +L 2 +U 1 +D 12 +R 3 +L 2 +R 8 +D 4 +L 7 +R 8 +D 6 +U 10 +R 7 +L 9 +D 5 +R 12 +U 2 +R 10 +U 4 +L 13 +R 9 +L 12 U 3 R 10 -D 6 -L 7 -D 6 +U 3 +L 8 +R 12 +U 8 R 11 +U 5 +L 3 +D 10 +R 8 +D 4 +R 4 +U 9 +L 13 +U 5 +R 11 +L 12 +U 11 +D 9 +L 5 +R 13 +U 2 +L 1 +U 12 +R 13 +L 1 +R 2 +U 6 +R 12 +D 11 +L 8 +U 13 +L 14 U 13 -D 1 -L 7 -U 7 -L 4 -U 10 -D 4 -R 10 -U 2 -L 2 -U 4 -R 7 -D 15 -R 15 -D 7 -R 14 -U 3 -D 8 -L 2 -U 11 -D 11 -U 9 -R 5 L 3 -D 9 -R 12 +U 9 +L 10 +R 11 +D 6 +U 8 +D 11 +U 5 +L 11 +U 8 +L 3 +R 2 +D 11 +L 12 +U 14 +R 3 +D 1 +U 14 +R 7 +D 14 +R 4 +D 5 +L 13 +R 2 +L 13 +U 8 +L 7 +D 14 L 2 +U 13 +D 2 +L 13 +D 13 +U 5 +L 12 +U 3 +L 6 +D 2 +U 3 +L 9 +D 14 +R 3 +L 1 +R 6 +D 3 +U 6 +D 9 +L 5 +D 11 +L 1 +D 11 +L 9 +D 8 +U 13 +D 4 +R 5 +D 14 +L 10 +U 14 +D 14 +R 1 +L 8 +U 5 +D 11 +U 8 +D 14 +L 4 +D 13 +U 13 +R 6 +U 11 +L 9 +U 6 +D 11 +R 11 +U 11 +D 14 +R 6 +L 13 +U 1 +R 11 +L 9 +R 11 +L 4 +R 14 +L 2 +D 14 +R 3 +U 9 +D 6 +U 12 +R 7 +U 9 +L 4 +D 9 +R 11 +L 9 +R 14 +L 12 +U 1 +L 10 +U 7 +R 13 +D 3 +R 8 +L 4 +R 4 +L 3 +U 1 +R 14 +D 4 +R 9 +U 3 +L 12 +U 11 +R 5 +U 4 +L 11 +D 14 +L 12 +R 7 +L 15 +R 14 +D 12 +U 10 +R 11 +D 9 +U 14 +R 5 +D 13 +L 14 +D 9 +U 1 R 10 +U 15 +R 12 +D 13 +L 9 +R 9 +U 8 +R 2 +U 3 +R 3 +D 8 +U 14 +R 4 +L 7 +U 11 +D 6 +L 14 +D 6 +R 8 +U 8 +R 5 +L 13 +R 9 D 6 R 6 -U 15 -R 10 -D 16 -R 5 +L 9 +U 2 +R 13 +U 4 +D 9 U 14 +R 15 +D 2 +R 6 +D 7 +L 3 +U 14 +D 5 +U 13 +R 8 +D 15 +U 3 +R 9 +D 10 +R 11 +U 12 +D 8 +R 3 +L 5 +D 15 +L 1 +U 6 +R 15 +D 1 +R 13 +D 1 +U 2 +R 15 +D 3 +L 4 +U 9 +D 1 +L 13 +R 11 +U 15 +R 5 +U 15 +R 13 +L 5 +U 2 +R 5 +D 11 +U 11 +L 12 +D 15 +R 11 +L 7 +D 2 +L 11 +D 2 +L 7 +U 7 +R 5 +D 8 +R 6 +L 10 +U 5 +R 3 +U 7 +R 1 +U 7 +L 5 +U 11 +R 14 +U 9 +D 8 +R 10 +L 9 +R 11 +U 6 +R 14 +U 16 +D 13 +U 16 +L 1 +D 2 +R 13 +D 11 +U 9 +R 4 +L 11 +U 2 +L 7 +R 2 +U 14 +L 11 +R 10 +L 1 +R 15 +U 9 +L 16 +R 11 +D 15 +U 10 +L 7 +R 9 +L 9 +D 16 +U 7 +D 10 +R 11 +L 3 R 16 -U 5 -L 10 -R 14 -L 15 -R 13 -L 15 -R 12 -L 9 -D 16 -U 13 -D 16 -R 2 -U 1 -D 15 +L 6 +R 7 L 7 -D 5 -R 9 -U 8 -R 12 -U 3 -D 16 +R 13 +L 5 +R 6 +D 15 R 11 +D 7 +U 5 +D 11 +U 13 +R 13 +U 12 +D 10 +L 11 +D 10 +R 6 +U 10 +D 9 +U 1 +L 13 +U 13 +L 11 +U 15 +L 7 +R 2 +D 2 +U 9 D 1 +L 15 +U 6 +D 3 +U 7 +D 6 +L 6 +U 14 +L 3 +U 16 +L 8 +D 8 +R 4 +D 1 +U 13 +L 4 +U 1 +R 15 U 3 +D 6 +L 4 +D 12 +L 16 +D 7 +U 10 +L 3 +R 6 +L 12 +R 9 +D 1 +U 7 +L 14 +D 5 +U 15 +D 14 +L 5 +R 6 D 4 U 10 -L 8 -R 4 -L 8 -R 8 -U 8 -L 9 -D 16 -U 7 -D 6 -R 1 -D 3 -L 15 -U 9 -D 9 -U 1 -L 9 -D 7 -U 14 -R 1 -D 11 -L 16 -U 13 -L 3 -R 12 -L 9 -R 9 -L 9 -U 5 -R 10 -D 14 -L 8 -R 7 -L 12 -R 13 -D 5 -U 10 -R 12 -U 11 -L 7 -R 9 -D 7 -L 11 -D 1 -R 8 -D 7 -U 6 -D 10 -R 13 -L 16 -U 10 -L 5 -R 12 -L 16 -U 6 -D 10 -U 3 -D 7 -U 7 -D 15 -L 2 -R 9 -U 8 -D 11 -L 15 -U 10 -D 10 -L 6 -D 14 -L 5 -U 3 -D 9 -U 2 -D 16 -U 6 -D 3 -R 15 -D 12 -R 9 -L 16 -R 4 -U 9 -L 8 -R 11 -L 14 -D 6 -U 11 -L 6 -R 7 -U 8 -R 7 -U 8 -D 7 -U 6 -L 15 -U 3 -D 6 -U 3 -R 6 -D 3 -L 10 -R 14 L 17 -D 12 -L 15 -D 5 -R 6 -D 4 -R 6 -D 5 -U 8 -D 10 -R 13 -D 6 -U 3 -L 5 -U 3 -R 11 -D 11 -U 8 -L 5 -U 11 -L 7 -R 16 -L 11 -D 3 -L 16 -D 14 -R 1 -U 10 -L 7 -U 4 -D 11 -L 9 -R 3 +R 9 D 1 -L 7 -R 17 -D 17 -R 11 -U 4 -R 15 -L 10 -R 13 +R 12 U 17 -D 16 -L 16 -U 14 -D 11 -U 10 -D 12 -L 11 -R 5 -D 17 -U 1 -R 5 -L 14 -D 14 -R 5 -L 6 -R 11 -U 13 -R 10 -U 15 -L 2 -R 8 -D 3 -R 11 -L 8 -R 11 -U 5 -L 12 -U 2 -L 16 -D 5 -L 17 -R 10 -D 15 -L 16 -U 1 -D 10 -R 13 -L 6 -D 5 -R 13 -U 2 -D 16 -L 9 -U 11 -D 13 -U 16 -L 6 -R 15 -D 10 -U 17 -L 15 -D 7 -R 6 -D 15 -R 11 -L 14 -U 12 -D 18 -R 6 -U 16 -L 1 -U 10 -R 15 -U 3 -L 12 -D 9 -L 11 -D 18 -R 11 -L 12 -U 5 -L 13 -D 2 -R 11 -D 10 -L 15 -R 5 -D 17 -R 6 -L 16 -R 11 -D 1 -R 5 -U 13 -R 11 -D 13 -L 12 -U 10 -D 9 -R 1 -D 15 -R 1 -D 17 -R 10 -U 11 R 14 -L 17 -R 2 -L 1 -D 12 -R 6 -U 18 -R 3 -L 8 -R 11 -L 15 -U 8 -L 7 -D 2 -L 9 -D 9 -L 11 -U 5 -D 8 -U 16 -R 13 -L 7 -D 6 -U 16 -L 9 -U 3 -R 4 -L 12 -U 18 -D 7 -L 10 -R 16 -D 1 -R 4 U 4 -R 13 -D 6 +R 14 +U 2 +D 13 +R 6 +L 12 +D 10 +L 9 +D 17 +R 14 +D 12 L 5 -R 3 -D 10 -U 4 -L 17 -D 9 -R 8 -L 1 -D 8 -L 16 -D 3 -U 3 -R 1 -U 9 -R 13 -D 3 -L 4 -R 6 -D 10 -U 16 -L 9 -U 5 -L 14 -U 8 D 17 -L 18 -D 5 -U 10 -R 14 L 8 -U 6 -R 5 -U 19 -L 9 +U 16 +D 9 +U 7 +L 11 +R 13 U 2 -D 7 -U 14 -R 17 -L 16 D 15 -U 11 -D 4 +R 2 +L 5 +U 6 +L 5 +U 15 +D 13 +U 17 +R 17 +L 4 +U 17 +R 1 +D 16 L 16 +R 7 U 14 -D 6 L 3 +D 12 +L 2 +D 6 +R 10 +U 11 +R 8 +D 8 +U 3 +R 5 +U 12 +D 5 +U 14 +R 13 +U 12 +R 1 +U 4 +D 12 +L 6 +R 8 +D 9 +U 4 +D 16 +L 4 +D 7 +L 2 +U 13 +L 7 +D 16 +U 1 +D 14 +U 14 +L 10 +U 2 +D 11 +L 5 +D 14 +U 14 +L 11 +R 17 +D 3 +R 7 +D 6 +R 17 +D 4 +R 14 +L 7 +U 17 +L 6 +D 7 +L 9 +U 10 +L 4 +D 1 +L 17 +R 4 +D 13 +L 4 +D 9 +U 12 +L 6 R 18 +L 8 +R 16 +L 14 +D 9 +L 18 +D 2 +U 4 +D 7 +R 8 +D 13 L 17 -D 6 -L 10 -U 7 +U 3 +D 10 +R 10 +L 13 +D 15 +L 14 D 11 +R 7 +L 3 +R 17 +U 13 +R 14 +D 5 +L 12 +U 4 +R 17 +D 2 +U 7 +R 9 +U 16 +L 18 +D 13 +R 6 +D 8 +L 18 +D 7 +L 11 +R 9 +U 18 +L 10 +U 11 +D 10 +L 7 +D 9 +R 17 +L 4 +R 2 +U 1 +D 9 +U 16 +D 1 +U 5 +R 9 +U 13 +D 10 +U 10 +L 5 +D 1 +U 11 +L 3 +D 15 +U 2 +R 15 +D 1 L 15 -U 12 -L 6 +R 16 +U 14 +L 9 +D 4 +R 15 +L 9 +U 6 +L 4 +R 13 +U 17 D 6 L 14 -U 17 -L 7 -D 2 -L 7 -U 12 -L 17 -R 16 -U 19 -L 12 -U 10 -L 6 -U 3 -D 16 -L 5 -D 15 -L 7 -R 6 -D 2 -R 19 -L 4 D 18 +L 17 +D 2 +L 12 +D 11 +R 14 +U 3 +R 12 +L 9 +R 14 +L 16 +U 14 +L 9 +D 1 +L 7 +D 2 +R 2 +L 18 +D 3 +L 10 +D 15 +L 14 +U 11 +L 11 +D 3 +L 4 +R 14 +D 11 +R 8 +D 8 +L 2 +U 15 +L 15 +D 6 +U 1 +D 19 +U 5 +L 5 +U 17 +D 6 +R 5 +L 10 R 19 D 9 -R 11 -L 17 +R 12 +L 10 R 1 -U 15 -R 3 -D 18 +L 17 +U 14 +L 1 +D 1 +U 14 +D 14 +L 8 +D 10 +U 12 +L 18 +U 3 +D 17 +U 4 L 13 +D 3 +R 16 U 7 +R 19 +U 14 D 7 R 15 -U 4 -D 16 -R 6 -U 4 -R 10 -U 10 -R 1 -D 19 -R 13 -U 7 -L 13 -D 15 -U 2 -L 18 -D 5 -U 5 -D 10 -L 8 -D 13 -U 8 -L 15 -D 12 +L 19 +R 15 U 11 -D 17 -L 14 -R 4 -D 19 -L 6 -D 5 -L 13 -D 16 -U 1 -R 14 +L 9 U 15 -L 18 -D 7 +D 16 +U 3 +L 10 +U 1 +D 4 +U 13 +R 7 +U 15 +D 13 +R 18 +L 4 +U 11 +D 3 L 14 -D 11 -L 7 +R 9 +L 8 +R 8 +U 10 +R 17 +L 16 +U 17 +D 15 +U 8 +D 5 +L 8 +R 9 +D 12 +L 2 +U 19 +L 11 +R 18 +D 14 +R 6 +D 4 +L 3 +D 15 +L 3 +R 1 +U 4 +L 6 +U 14 +L 18 +D 13 +R 12 +U 4 +L 12 +U 15 +L 15 +D 2 +L 13 +R 15 +L 3 +U 13 +R 6 +D 1 +U 12 +D 19 +U 10 +L 13 +D 9 +L 18 +U 3 +D 13 +U 2 +L 10 D 18 U 16 -L 1 -R 18 -L 1 -U 19 -R 3 -D 1 +D 9 +U 12 diff --git a/day10/Cargo.toml b/day10/Cargo.toml new file mode 100644 index 0000000..40d2066 --- /dev/null +++ b/day10/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day10" +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/day10/input b/day10/input new file mode 100644 index 0000000..1b68dd1 --- /dev/null +++ b/day10/input @@ -0,0 +1,146 @@ +noop +addx 5 +addx -2 +noop +noop +addx 7 +addx 15 +addx -14 +addx 2 +addx 7 +noop +addx -2 +noop +addx 3 +addx 4 +noop +noop +addx 5 +noop +noop +addx 1 +addx 2 +addx 5 +addx -40 +noop +addx 5 +addx 2 +addx 15 +noop +addx -10 +addx 3 +noop +addx 2 +addx -15 +addx 20 +addx -2 +addx 2 +addx 5 +addx 3 +addx -2 +noop +noop +noop +addx 5 +addx 2 +addx 5 +addx -38 +addx 3 +noop +addx 2 +addx 5 +noop +noop +addx -2 +addx 5 +addx 2 +addx -2 +noop +addx 7 +noop +addx 10 +addx -5 +noop +noop +noop +addx -15 +addx 22 +addx 3 +noop +noop +addx 2 +addx -37 +noop +noop +addx 13 +addx -10 +noop +addx -5 +addx 10 +addx 5 +addx 2 +addx -6 +addx 11 +addx -2 +addx 2 +addx 5 +addx 3 +noop +addx 3 +addx -2 +noop +addx 6 +addx -22 +addx 23 +addx -38 +noop +addx 7 +noop +addx 5 +noop +noop +noop +addx 9 +addx -8 +addx 2 +addx 7 +noop +noop +addx 2 +addx -4 +addx 5 +addx 5 +addx 2 +addx -26 +addx 31 +noop +addx 3 +noop +addx -40 +addx 7 +noop +noop +noop +noop +addx 2 +addx 4 +noop +addx -1 +addx 5 +noop +addx 1 +noop +addx 2 +addx 5 +addx 2 +noop +noop +noop +addx 5 +addx 1 +noop +addx 4 +addx 3 +noop +addx -24 +noop diff --git a/day10/src/main.rs b/day10/src/main.rs new file mode 100644 index 0000000..7c199bb --- /dev/null +++ b/day10/src/main.rs @@ -0,0 +1,186 @@ +use std::fs; +use std::str::FromStr; + +fn main() { + const FILE_PATH: &str = "input"; + println!("Hi this is the nineth day of AOC2022, first we will read the file {}", FILE_PATH); + let contents = fs::read_to_string(FILE_PATH) + .expect("Should have been able to read the file"); + + println!("The sum of the asked for signals is: {}", get_dump(&contents).iter().enumerate().take_while(|(n, _)| n<=&220).map(|(c, rx)| (c+1 ,(c+1) as i32*rx)) + .filter(|(n, _)| (n/20)%2==1).step_by(20).map(|(_, out)| out).sum::()); +} + +fn get_dump(s: &str) -> Vec { + let mut rx = 1; + let mut history = Vec::new(); + for line in s.lines() { + let mut line = line.split(" "); + match line.next().expect("there must be a command") { + "noop" => history.push(rx), + "addx" => { + history.push(rx); + history.push(rx); + rx += i32::from_str(line.next().expect("There must be an entry")).expect("NaN"); + } + _ => unreachable!() + } + } + history +} + +#[cfg(test)] +mod test { + const INPUT: &str = r#"addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop"#; + use super::*; + #[test] + fn crt1() { + assert_eq!(get_dump(INPUT).iter().enumerate().take_while(|(n, _)| n<=&220).map(|(c, rx)| (c+1 ,(c+1) as i32*rx)) + .filter(|(n, _)| (n/20)%2==1).step_by(20).map(|(_, out)| out).sum::(), 13140); + } +} \ No newline at end of file