summaryrefslogtreecommitdiff
path: root/aoc22/day10
diff options
context:
space:
mode:
Diffstat (limited to 'aoc22/day10')
-rw-r--r--aoc22/day10/Cargo.toml7
-rw-r--r--aoc22/day10/example146
-rw-r--r--aoc22/day10/input139
-rw-r--r--aoc22/day10/src/main.rs62
4 files changed, 354 insertions, 0 deletions
diff --git a/aoc22/day10/Cargo.toml b/aoc22/day10/Cargo.toml
new file mode 100644
index 0000000..6f15406
--- /dev/null
+++ b/aoc22/day10/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "day10"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+lib = { path = "../lib" }
diff --git a/aoc22/day10/example b/aoc22/day10/example
new file mode 100644
index 0000000..37ee8ee
--- /dev/null
+++ b/aoc22/day10/example
@@ -0,0 +1,146 @@
+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
diff --git a/aoc22/day10/input b/aoc22/day10/input
new file mode 100644
index 0000000..c26a664
--- /dev/null
+++ b/aoc22/day10/input
@@ -0,0 +1,139 @@
+noop
+addx 12
+addx -5
+addx -1
+noop
+addx 4
+noop
+addx 1
+addx 4
+noop
+addx 13
+addx -8
+noop
+addx -19
+addx 24
+addx 1
+noop
+addx 4
+noop
+addx 1
+addx 5
+addx -1
+addx -37
+addx 16
+addx -13
+addx 18
+addx -11
+addx 2
+addx 23
+noop
+addx -18
+addx 9
+addx -8
+addx 2
+addx 5
+addx 2
+addx -21
+addx 26
+noop
+addx -15
+addx 20
+noop
+addx 3
+noop
+addx -38
+addx 3
+noop
+addx 26
+addx -4
+addx -19
+addx 3
+addx 1
+addx 5
+addx 3
+noop
+addx 2
+addx 3
+noop
+addx 2
+noop
+noop
+noop
+noop
+addx 5
+noop
+noop
+noop
+addx 3
+noop
+addx -30
+addx -4
+addx 1
+addx 18
+addx -8
+addx -4
+addx 2
+noop
+addx 7
+noop
+noop
+noop
+noop
+addx 5
+noop
+noop
+addx 5
+addx -2
+addx -20
+addx 27
+addx -20
+addx 25
+addx -2
+addx -35
+noop
+noop
+addx 4
+addx 3
+addx -2
+addx 5
+addx 2
+addx -11
+addx 1
+addx 13
+addx 2
+addx 5
+addx 6
+addx -1
+addx -2
+noop
+addx 7
+addx -2
+addx 6
+addx 1
+addx -21
+addx 22
+addx -38
+addx 5
+addx 3
+addx -1
+noop
+noop
+addx 5
+addx 1
+addx 4
+addx 3
+addx -2
+addx 2
+noop
+addx 7
+addx -1
+addx 2
+addx 4
+addx -10
+addx -19
+addx 35
+addx -1
+noop
+noop
+noop
diff --git a/aoc22/day10/src/main.rs b/aoc22/day10/src/main.rs
new file mode 100644
index 0000000..42d6490
--- /dev/null
+++ b/aoc22/day10/src/main.rs
@@ -0,0 +1,62 @@
+fn main() {
+ let input = lib::read_input(10);
+
+ part1(&input);
+ part2(&input);
+}
+
+fn part1(input: &str) {
+ let addx = "addx ";
+
+ let mut x = 1;
+ let mut cycle = 1;
+ let mut ans = 0;
+ for line in input.lines() {
+ if line.starts_with(addx) {
+ cycle += 1;
+ if [20, 60, 100, 140, 180, 220].contains(&cycle) {
+ ans += cycle * x;
+ }
+ x += line[addx.len()..].parse::<i32>().unwrap();
+ cycle += 1;
+ if [20, 60, 100, 140, 180, 220].contains(&cycle) {
+ ans += cycle * x;
+ }
+ } else {
+ cycle += 1;
+ if [20, 60, 100, 140, 180, 220].contains(&cycle) {
+ ans += cycle * x;
+ }
+ }
+ }
+ println!("{}", ans);
+}
+
+fn part2(input: &str) {
+ let addx = "addx ";
+
+ let mut x = 1;
+ let mut cycle = 1i32;
+ let mut ans = ['.'; 40 * 6];
+ for line in input.lines() {
+ if line.starts_with(addx) {
+ if [x - 1, x, x + 1].contains(&(cycle % 40)) {
+ ans[cycle as usize - 1] = '#';
+ }
+ cycle += 1;
+ x += line[addx.len()..].parse::<i32>().unwrap();
+ if [x - 1, x, x + 1].contains(&(cycle % 40)) {
+ ans[cycle as usize - 1] = '#';
+ }
+ cycle += 1;
+ } else {
+ if [x - 1, x, x + 1].contains(&(cycle % 40)) {
+ ans[cycle as usize - 1] = '#';
+ }
+ cycle += 1;
+ }
+ }
+ for i in 0..6 {
+ println!("{}", &ans[i * 40..(i + 1) * 40].iter().collect::<String>());
+ }
+}