[rs] Solve 2022_10 part 1
This commit is contained in:
parent
87103940eb
commit
745a205492
7 changed files with 344 additions and 2 deletions
140
inputs/2022/2022_10.input
Normal file
140
inputs/2022/2022_10.input
Normal file
|
|
@ -0,0 +1,140 @@
|
||||||
|
addx 2
|
||||||
|
addx 15
|
||||||
|
addx -11
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx -1
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -38
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 6
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx -8
|
||||||
|
noop
|
||||||
|
addx 13
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 9
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx -10
|
||||||
|
addx 11
|
||||||
|
addx 2
|
||||||
|
addx -14
|
||||||
|
addx -21
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 29
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx -19
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 11
|
||||||
|
addx -10
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -9
|
||||||
|
noop
|
||||||
|
addx 14
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -37
|
||||||
|
noop
|
||||||
|
addx 13
|
||||||
|
addx -8
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 13
|
||||||
|
addx -5
|
||||||
|
addx 3
|
||||||
|
addx 3
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 6
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
addx -15
|
||||||
|
addx 5
|
||||||
|
addx -27
|
||||||
|
addx 30
|
||||||
|
addx -23
|
||||||
|
addx 33
|
||||||
|
addx -32
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -16
|
||||||
|
addx 17
|
||||||
|
addx 2
|
||||||
|
addx -10
|
||||||
|
addx 17
|
||||||
|
addx 10
|
||||||
|
addx -9
|
||||||
|
addx 2
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -29
|
||||||
|
addx -8
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 19
|
||||||
|
addx -11
|
||||||
|
addx -1
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
addx -3
|
||||||
|
addx 11
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
2
inputs/2022/2022_10.solution
Normal file
2
inputs/2022/2022_10.solution
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
Part 1: 12880
|
||||||
|
Part 2: ???
|
||||||
|
|
@ -41,8 +41,11 @@ macro_rules! days {
|
||||||
|
|
||||||
impl Day {
|
impl Day {
|
||||||
fn from_path(path: &Path) -> Option<Self> {
|
fn from_path(path: &Path) -> Option<Self> {
|
||||||
let day = &path.file_stem()?.as_bytes()[..7];
|
let bytes = path.file_stem()?.as_bytes();
|
||||||
let day = String::from_utf8_lossy(day);
|
if bytes.len() < 7 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
let day = String::from_utf8_lossy(&bytes[..7]);
|
||||||
Self::from_str(&day).ok()
|
Self::from_str(&day).ok()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -57,6 +60,7 @@ days! {
|
||||||
Y2022D07: "2022_07" => y2022::d07::solve,
|
Y2022D07: "2022_07" => y2022::d07::solve,
|
||||||
Y2022D08: "2022_08" => y2022::d08::solve,
|
Y2022D08: "2022_08" => y2022::d08::solve,
|
||||||
Y2022D09: "2022_09" => y2022::d09::solve,
|
Y2022D09: "2022_09" => y2022::d09::solve,
|
||||||
|
Y2022D10: "2022_10" => y2022::d10::solve,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,4 @@ pub mod d06;
|
||||||
pub mod d07;
|
pub mod d07;
|
||||||
pub mod d08;
|
pub mod d08;
|
||||||
pub mod d09;
|
pub mod d09;
|
||||||
|
pub mod d10;
|
||||||
|
|
|
||||||
47
rs/src/y2022/d10.rs
Normal file
47
rs/src/y2022/d10.rs
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
struct State {
|
||||||
|
x: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Run {
|
||||||
|
history: Vec<State>,
|
||||||
|
now: State,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Run {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
history: vec![],
|
||||||
|
now: State { x: 1 },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn noop(&mut self) {
|
||||||
|
self.history.push(self.now);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn addx(&mut self, arg: i32) {
|
||||||
|
self.noop();
|
||||||
|
self.noop();
|
||||||
|
self.now.x += arg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn solve(input: String) {
|
||||||
|
let mut run = Run::new();
|
||||||
|
for line in input.lines() {
|
||||||
|
if line == "noop" {
|
||||||
|
run.noop();
|
||||||
|
} else if let Some(arg) = line.strip_prefix("addx ") {
|
||||||
|
run.addx(arg.parse().unwrap());
|
||||||
|
} else {
|
||||||
|
panic!("Unknown instruction");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let part1 = [20, 60, 100, 140, 180, 220]
|
||||||
|
.into_iter()
|
||||||
|
.map(|i| run.history[i - 1].x * i as i32)
|
||||||
|
.sum::<i32>();
|
||||||
|
println!("Part 1: {part1}");
|
||||||
|
}
|
||||||
146
sample_inputs/2022/2022_10.input
Normal file
146
sample_inputs/2022/2022_10.input
Normal file
|
|
@ -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
|
||||||
2
sample_inputs/2022/2022_10.solution
Normal file
2
sample_inputs/2022/2022_10.solution
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
Part 1: 13140
|
||||||
|
Part 2: ???
|
||||||
Loading…
Add table
Add a link
Reference in a new issue