use crate::tasks::day05::IntCodeComputer; use itertools::Itertools; #[allow(dead_code)] pub fn run() { let prog_code: Vec<_> = std::fs::read_to_string("input/day07.txt") .unwrap() .split(",") .map(|s| s.parse::().unwrap()) .collect(); task1(prog_code.clone()); } fn task1(input: Vec) { let phases = vec![0, 1, 2, 3, 4]; let result = phases .iter() .permutations(phases.len()) .map(|perm| { perm.iter().fold(0, |signal, phase| { let mut computer = IntCodeComputer::new(vec![**phase, signal], input.clone()); computer.run_until_end(); *computer.get_output().last().unwrap() }) }) .max(); println!("Task 1: best signal is {}", result.unwrap()); }