From f4d06756c868bdf0cd005038fa6ce30e52423e5d Mon Sep 17 00:00:00 2001 From: "Eric N. Vander Weele" Date: Wed, 3 Apr 2024 16:48:50 -0400 Subject: [PATCH] 2019: Day 7 --- 2019/Makefile | 1 + 2019/input_07.txt | 1 + 2019/src/bin/puzzle_07.rs | 44 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 2019/input_07.txt create mode 100644 2019/src/bin/puzzle_07.rs diff --git a/2019/Makefile b/2019/Makefile index 8312c44..a7c90fb 100644 --- a/2019/Makefile +++ b/2019/Makefile @@ -33,6 +33,7 @@ $(outputdir)/puzzle_%: $(srcbindir)/puzzle_%$(ext) $(outputdir)/puzzle_02: $(intcode_deps) $(outputdir)/puzzle_05: $(intcode_deps) +$(outputdir)/puzzle_07: $(intcode_deps) .PHONY: lint lint: lint-code lint-format diff --git a/2019/input_07.txt b/2019/input_07.txt new file mode 100644 index 0000000..fcbe739 --- /dev/null +++ b/2019/input_07.txt @@ -0,0 +1 @@ +3,8,1001,8,10,8,105,1,0,0,21,34,47,72,93,110,191,272,353,434,99999,3,9,102,3,9,9,1001,9,3,9,4,9,99,3,9,102,4,9,9,1001,9,4,9,4,9,99,3,9,101,3,9,9,1002,9,3,9,1001,9,2,9,1002,9,2,9,101,4,9,9,4,9,99,3,9,1002,9,3,9,101,5,9,9,102,4,9,9,1001,9,4,9,4,9,99,3,9,101,3,9,9,102,4,9,9,1001,9,3,9,4,9,99,3,9,101,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,101,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,101,1,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1002,9,2,9,4,9,99,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1001,9,1,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,101,1,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,101,2,9,9,4,9,99,3,9,1001,9,1,9,4,9,3,9,1001,9,2,9,4,9,3,9,101,2,9,9,4,9,3,9,101,2,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,1001,9,1,9,4,9,3,9,1001,9,1,9,4,9,3,9,102,2,9,9,4,9,3,9,101,2,9,9,4,9,3,9,1001,9,2,9,4,9,99,3,9,1002,9,2,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,101,2,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,99,3,9,101,1,9,9,4,9,3,9,101,1,9,9,4,9,3,9,101,2,9,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,101,1,9,9,4,9,3,9,1002,9,2,9,4,9,99 diff --git a/2019/src/bin/puzzle_07.rs b/2019/src/bin/puzzle_07.rs new file mode 100644 index 0000000..c9d9f4e --- /dev/null +++ b/2019/src/bin/puzzle_07.rs @@ -0,0 +1,44 @@ +use std::io; + +use aoc2019::intcode; + +fn run_amplifier_loop(program: &[i32], phase_settings: &[i32]) -> i32 { + let mut amplifiers: Vec<_> = phase_settings + .iter() + .map(|&phase_setting| intcode::Computer::new(program, &[phase_setting])) + .collect(); + + let mut signal = 0; + + 'feedback_loop: loop { + for a in &mut amplifiers { + a.input.push_back(signal); + signal = match a.run() { + intcode::State::Output(x) => x, + intcode::State::Halt => break 'feedback_loop, + }; + } + } + + signal +} + +fn main() { + let amplifier_controller_program = intcode::parse_program(io::stdin()); + + println!( + "Part 1: {}", + aoc2019::iter::permutation(&[0, 1, 2, 3, 4]) + .map(|x| run_amplifier_loop(&lifier_controller_program, &x)) + .max() + .unwrap() + ); + + println!( + "Part 2: {}", + aoc2019::iter::permutation(&[5, 6, 7, 8, 9]) + .map(|x| run_amplifier_loop(&lifier_controller_program, &x)) + .max() + .unwrap() + ); +}