aoc

My solutions for the Advent of Code
git clone https://git.tronto.net/aoc
Download | Log | Files | Refs | README

commit 50b4179b397183815a89be8ca06cac750f3f02bb
parent 284827dec47bbd4debe8a9c0a1d0c8ccb949189e
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date:   Fri, 27 Jun 2025 09:53:33 +0200

Day 10

Diffstat:
A2022/10/a.rs | 23+++++++++++++++++++++++
A2022/10/b.rs | 29+++++++++++++++++++++++++++++
A2022/10/common.rs | 13+++++++++++++
A2022/10/input | 140+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2022/10/test | 146+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 351 insertions(+), 0 deletions(-)

diff --git a/2022/10/a.rs b/2022/10/a.rs @@ -0,0 +1,23 @@ +mod common; +use common::*; + +fn main() { + let mut x: i64 = 1; + let mut cycles: usize = 0; + let mut step: usize = 20; + let mut score: i64 = 0; + let mut line = String::new(); + while std::io::stdin().read_line(&mut line).unwrap() > 0 { + let oldx = x; + match read_instruction(&line) { + Instruction::Add(n) => { x += n; cycles += 2; }, + Instruction::Noop => { cycles += 1; } + } + if cycles >= step { + score += oldx * (step as i64); + step += 40; + } + line.clear(); + } + println!("{score}"); +} diff --git a/2022/10/b.rs b/2022/10/b.rs @@ -0,0 +1,29 @@ +mod common; +use common::*; + +fn draw(cycles: usize, x: i64) { + let c = cycles % 40; + if cycles > 0 && c == 0 { println!(); } + print!("{}", if (x - (c as i64)).abs() <= 1 { '#' } else { '.' }); +} + +fn main() { + let mut x: i64 = 1; + let mut cycles: usize = 0; + let mut line = String::new(); + while std::io::stdin().read_line(&mut line).unwrap() > 0 { + match read_instruction(&line) { + Instruction::Add(n) => { + draw(cycles, x); + draw(cycles+1, x); + cycles += 2; + x += n; + }, + Instruction::Noop => { + draw(cycles, x); + cycles += 1; + } + } + line.clear(); + } +} diff --git a/2022/10/common.rs b/2022/10/common.rs @@ -0,0 +1,13 @@ +pub enum Instruction { + Add(i64), + Noop +} + +pub fn read_instruction(line: &str) -> Instruction { + if &line[..4] == "addx" { + let n = line[5..line.len()-1].parse::<i64>().unwrap(); + Instruction::Add(n) + } else { + Instruction::Noop + } +} diff --git a/2022/10/input b/2022/10/input @@ -0,0 +1,140 @@ +addx 1 +noop +addx 4 +noop +noop +noop +addx 6 +addx -1 +addx 5 +noop +noop +noop +addx 5 +addx -14 +noop +addx 19 +noop +addx 1 +addx 4 +addx 1 +noop +noop +addx 2 +addx 5 +addx -27 +addx 20 +addx -30 +addx 2 +addx 5 +addx 2 +addx 4 +addx -3 +addx 2 +addx 5 +addx 2 +addx -9 +addx 1 +addx 11 +noop +addx -20 +addx 7 +addx 23 +addx 2 +addx 3 +addx -2 +addx -34 +addx -2 +noop +addx 3 +noop +addx 3 +addx 2 +noop +addx 3 +addx 2 +addx 5 +addx 2 +addx -9 +addx -7 +addx 21 +noop +addx 8 +noop +addx -1 +addx 3 +addx -2 +addx 5 +addx -37 +noop +addx 35 +addx -31 +addx 1 +addx 4 +addx -1 +addx 2 +noop +addx 3 +addx 1 +addx 5 +addx -2 +addx 7 +addx -2 +addx -2 +addx 10 +noop +addx 4 +noop +noop +addx -19 +addx 20 +addx -38 +noop +noop +addx 7 +addx 2 +addx 3 +noop +addx 4 +addx -3 +addx 2 +addx 2 +noop +addx 3 +noop +noop +noop +addx 5 +noop +addx 7 +addx -2 +addx 7 +noop +noop +addx -5 +addx 6 +addx -36 +noop +addx 1 +addx 2 +addx 5 +addx 2 +addx 3 +addx -2 +addx 2 +addx 5 +addx 2 +addx 1 +noop +addx 4 +addx -16 +addx 21 +noop +noop +addx 1 +addx -8 +addx 12 +noop +noop +noop +noop diff --git a/2022/10/test b/2022/10/test @@ -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