From d4fcb8a4a815ce8c888c3e06330e9cff71e3c312 Mon Sep 17 00:00:00 2001 From: mathiasmagnusson Date: Mon, 12 Dec 2022 22:33:07 +0100 Subject: Day 10 --- aoc22/Cargo.lock | 7 +++ aoc22/Cargo.toml | 1 + aoc22/day10/Cargo.toml | 7 +++ aoc22/day10/example | 146 ++++++++++++++++++++++++++++++++++++++++++++++++ aoc22/day10/input | 139 +++++++++++++++++++++++++++++++++++++++++++++ aoc22/day10/src/main.rs | 62 ++++++++++++++++++++ 6 files changed, 362 insertions(+) create mode 100644 aoc22/day10/Cargo.toml create mode 100644 aoc22/day10/example create mode 100644 aoc22/day10/input create mode 100644 aoc22/day10/src/main.rs diff --git a/aoc22/Cargo.lock b/aoc22/Cargo.lock index 1cb6746..2913e3a 100644 --- a/aoc22/Cargo.lock +++ b/aoc22/Cargo.lock @@ -9,6 +9,13 @@ dependencies = [ "lib", ] +[[package]] +name = "day10" +version = "0.1.0" +dependencies = [ + "lib", +] + [[package]] name = "day2" version = "0.1.0" diff --git a/aoc22/Cargo.toml b/aoc22/Cargo.toml index 3a94d1d..70b383e 100644 --- a/aoc22/Cargo.toml +++ b/aoc22/Cargo.toml @@ -7,4 +7,5 @@ members = [ "day7", "day8", "day9", + "day10", ] 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::().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::().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::()); + } +} -- cgit v1.2.3