From ddd215c9a2d21d4a97cb36c09ca8e9a5ae22ba4e Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 21 Dec 2019 12:30:00 +0100 Subject: [PATCH] day 21 task 2 --- src/tasks/day21.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/tasks/day21.rs b/src/tasks/day21.rs index 2e39705..bb8e125 100644 --- a/src/tasks/day21.rs +++ b/src/tasks/day21.rs @@ -1,5 +1,6 @@ use super::day05::*; +#[allow(dead_code)] pub fn run() { let input = std::fs::read_to_string("input/day21.txt").unwrap(); let ram: RAM = input @@ -7,7 +8,7 @@ pub fn run() { .enumerate() .map(|(i, s)| (i, s.parse::().unwrap())) .collect(); - task1(ram.clone()); + task2(ram.clone()); } fn task1(ram: RAM) { @@ -23,6 +24,29 @@ WALK play(ram.clone(), p); } +fn task2(ram: RAM) { + // jump if NOT(A and B and C) and D and (H or (E and I) or (E and F)) + let p = r"OR H J +OR E T +AND I T +OR T J +NOT E T +NOT T T +AND F T +OR T J +AND D J +NOT A T +NOT T T +AND B T +AND C T +NOT T T +AND T J +RUN +" + .to_string(); + play(ram.clone(), p); +} + fn play(ram: RAM, program: String) { let mut computer = IntCodeComputer::new(program.chars().map(|c| c as i128).collect(), ram); computer.run_until_end();