Skip to content

Commit

Permalink
aoc; day 2021.24
Browse files Browse the repository at this point in the history
  • Loading branch information
skanev committed Dec 25, 2021
1 parent 380883c commit ad6b445
Show file tree
Hide file tree
Showing 3 changed files with 293 additions and 0 deletions.
8 changes: 8 additions & 0 deletions advent-of-code/2021/day24/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[package]
name = "day24"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
33 changes: 33 additions & 0 deletions advent-of-code/2021/day24/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
use std::fs;

type Num = i32;

fn main() {
let digits = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let fns: Vec<(Num, Num, Num)> = fs::read_to_string("../inputs/24")
.unwrap()
.lines()
.map(|line| line.split(" ").nth(2).unwrap_or(""))
.collect::<Vec<_>>()
.chunks(18)
.map(|block| (block[4].parse().unwrap(), block[5].parse().unwrap(), block[15].parse().unwrap()))
.collect();

let mut stack: Vec<(usize, Num)> = vec![];
let mut pattern: Vec<Vec<Num>> = vec![vec![]; 14];

for (i, (a, b, c)) in fns.into_iter().enumerate() {
if a == 1 {
stack.push((i, c));
} else {
let (dep, other) = stack.pop().unwrap();
for (x, y) in digits.iter().flat_map(|&x| digits.map(|y| (x, y))).filter(|&(x, y)| x == other + y + b) {
pattern[i].push(x);
pattern[dep].push(y);
}
}
}

println!("first = {}", pattern.iter().map(|p| p.iter().last().unwrap().to_string()).collect::<Vec<_>>().join(""));
println!("second = {}", pattern.iter().map(|p| p.iter().nth(0).unwrap().to_string()).collect::<Vec<_>>().join(""));
}
252 changes: 252 additions & 0 deletions advent-of-code/2021/inputs/24
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
inp w
mul x 0
add x z
mod x 26
div z 1
add x 10
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 0
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 12
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 6
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 13
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 4
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 13
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 2
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 14
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 9
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -2
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 1
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 11
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 10
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -15
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 6
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -10
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 4
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 10
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 6
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -10
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 3
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -4
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 9
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -1
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 15
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -1
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 5
mul y x
add z y

0 comments on commit ad6b445

Please sign in to comment.