day07 task 1
This commit is contained in:
28
src/tasks/day07.rs
Normal file
28
src/tasks/day07.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
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::<i32>().unwrap())
|
||||
.collect();
|
||||
task1(prog_code.clone());
|
||||
}
|
||||
|
||||
fn task1(input: Vec<i32>) {
|
||||
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());
|
||||
}
|
||||
Reference in New Issue
Block a user