Implement day 25.

This commit is contained in:
2018-11-29 16:31:57 +01:00
parent a104356b6f
commit 80328015d2
3 changed files with 75 additions and 0 deletions

30
2016/inputs/25.txt Normal file
View File

@@ -0,0 +1,30 @@
cpy a d
cpy 7 c
cpy 362 b
inc d
dec b
jnz b -2
dec c
jnz c -5
cpy d a
jnz 0 0
cpy a b
cpy 0 a
cpy 2 c
jnz b 2
jnz 1 6
dec b
dec c
jnz c -4
inc a
jnz 1 -7
cpy 2 b
jnz c 2
jnz 1 4
dec b
dec c
jnz 1 -4
jnz 0 0
out b
jnz a -19
jnz 1 -21

43
2016/src/day25.rs Normal file
View File

@@ -0,0 +1,43 @@
use std::io;
use common;
#[derive(Default)]
pub struct Day25 {
}
impl Day25 {
pub fn new() -> Day25 {
Default::default()
}
}
impl common::Solution for Day25 {
fn part1(&mut self, _input: &mut io::Read) -> String {
let initial = 0b101010101010 - 362 * 7;
println!("Initial value: {}", initial);
sender_program(initial);
unreachable!();
}
}
/// This function is an approximation of what the original code is doing.
pub fn sender_program(mut a: i32) {
// Placeholder variables
let mut b = 0;
let mut d = 0;
d = a;
d += 362 * 7;
loop {
if a == 0 {
a = d;
}
b = a;
a = b / 2;
b = b % 2;
println!("{}", b);
}
}

View File

@@ -13,6 +13,7 @@ pub mod day15;
pub mod day16; pub mod day16;
pub mod day23; pub mod day23;
pub mod day24; pub mod day24;
pub mod day25;
fn get_impl(day: &str) -> Box<common::Solution> { fn get_impl(day: &str) -> Box<common::Solution> {
match day.parse() { match day.parse() {
@@ -22,6 +23,7 @@ fn get_impl(day: &str) -> Box<common::Solution> {
Ok(16) => { Box::new(day16::Day16::new()) } Ok(16) => { Box::new(day16::Day16::new()) }
Ok(23) => { Box::new(day23::Day23::new()) } Ok(23) => { Box::new(day23::Day23::new()) }
Ok(24) => { Box::new(day24::Day24::new()) } Ok(24) => { Box::new(day24::Day24::new()) }
Ok(25) => { Box::new(day25::Day25::new()) }
Ok(val) => { Ok(val) => {
panic!("Unimplemented day {}", val) panic!("Unimplemented day {}", val)
}, },