From 8ae30923892bbd72f3e3b665919c73ed40482d9d Mon Sep 17 00:00:00 2001 From: Max Nuding Date: Sat, 10 Dec 2022 06:05:28 +0000 Subject: [PATCH] Minor refactor --- input/10.txt | 261 +++++++++++++++++++++++------------------------ src/day10/mod.rs | 33 +++--- 2 files changed, 148 insertions(+), 146 deletions(-) diff --git a/input/10.txt b/input/10.txt index 25fdf8f..3a3e49d 100644 --- a/input/10.txt +++ b/input/10.txt @@ -1,146 +1,145 @@ -ddx 15 -addx -11 -addx 6 -addx -3 +noop +noop addx 5 -addx -1 +addx 21 +addx -16 +noop +addx 1 +noop +noop +addx 4 +addx 1 +addx 4 +addx 1 +noop +addx 4 +addx -9 +noop +addx 19 +addx -5 +noop +noop +addx 5 +addx 1 +addx -38 +addx 5 +addx -2 +addx 2 +noop +noop +addx 7 +addx 9 +addx 20 +addx -3 +addx -18 +addx 2 +addx 5 +noop +noop +addx -2 +noop +noop +addx 7 +addx 3 +addx -2 +addx 2 +addx -28 +addx -7 +addx 5 +noop +addx 2 +addx 32 +addx -27 +noop +noop +noop +noop +noop +addx 7 +noop +addx 22 +addx -19 +noop +addx 5 +noop +addx -7 +addx 17 +addx -7 +noop +addx -20 +addx 27 +noop +addx -16 +addx -20 +addx 1 +noop +addx 3 +addx 15 addx -8 -addx 13 +addx -2 +addx -6 +addx 14 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 -17 addx 22 -addx -6 -addx 1 +noop +addx 5 +noop +noop noop addx 2 +noop +addx 3 +addx -32 +addx -5 +noop +addx 4 +addx 3 +addx -2 +addx 34 +addx -27 +addx 5 +addx 16 +addx -18 +addx 7 +noop +addx -2 +addx -1 +addx 8 +addx 14 +addx -9 +noop +addx -15 +addx 16 +addx 2 +addx -35 +noop +noop +noop +noop +addx 3 +addx 4 +noop +addx 1 +addx 4 addx 1 noop -addx -10 -noop -noop -addx 20 -addx 1 +addx 4 addx 2 +addx 3 +addx -5 +addx 19 +addx -9 +addx 2 +addx 4 +noop +noop +noop +noop +addx 3 addx 2 -addx -6 -addx -11 noop noop noop diff --git a/src/day10/mod.rs b/src/day10/mod.rs index e29bf96..57746b8 100644 --- a/src/day10/mod.rs +++ b/src/day10/mod.rs @@ -1,7 +1,4 @@ use crate::read; -use itertools::Itertools; -use std::collections::HashSet; -use std::str::FromStr; #[derive(Debug, PartialEq, Eq, Clone, Hash)] enum Command { @@ -20,6 +17,10 @@ impl Command { } pub fn run() { + const LINE_WIDTH: usize = 40; + const SPRITE_WIDTH: usize = 3; + const SPRITE_WIDTH_HALF: usize = SPRITE_WIDTH / 2; + let input = read("10"); let mut lines = input.lines(); @@ -28,10 +29,11 @@ pub fn run() { let mut v: i32 = 1; let mut v_new: i32 = 1; let mut sig_str = vec![]; - let mut pixels = [false; 40]; + let mut pixels = [false; LINE_WIDTH]; + let mut rows = vec![]; 'outer: loop { - if cycle == 20 || (cycle - 20) % 40 == 0 { - sig_str.push(cycle * v); + if cycle == 20 || (cycle > 20 && (cycle - 20) % LINE_WIDTH == 0) { + sig_str.push(cycle as i32 * v); } if is_busy == 0 { match lines.next() { @@ -52,16 +54,17 @@ pub fn run() { } else { is_busy -= 1; } - if is_busy == 0 { - v = v_new; + + let pixel = (cycle - 1) % LINE_WIDTH; + let is_lit = pixel.abs_diff(v as usize) <= SPRITE_WIDTH_HALF; + pixels[pixel] = is_lit; + if pixel == LINE_WIDTH - 1 { + let row: String = pixels.map(|l| if l { '#' } else { ' ' }).iter().collect(); + rows.push(row); } - let pixel = cycle % 40; - let is_lit = pixel - 1 == v || pixel == v || pixel + 1 == v; - pixels[pixel as usize] = is_lit; - if pixel == 0 && cycle != 0 { - let row: String = pixels.map(|l| if l { '#' } else { '.' }).iter().collect(); - println!("{}", row); + if is_busy == 0 { + v = v_new; } cycle += 1; } @@ -73,6 +76,6 @@ pub fn run() { #[cfg(feature = "part2")] { - println!("Day 10, Part 02: {}", "TODO"); + println!("Day 10, Part 02: \n{}", rows.join("\n")); } }