day09 prepared IntCodeComputer to use HashSet memory and new intructions
This commit is contained in:
@@ -6,20 +6,23 @@ pub fn run() {
|
||||
let prog_code: Vec<_> = std::fs::read_to_string("input/day07.txt")
|
||||
.unwrap()
|
||||
.split(",")
|
||||
.map(|s| s.parse::<i32>().unwrap())
|
||||
.map(|s| s.parse::<i128>().unwrap())
|
||||
.collect();
|
||||
task1(prog_code.clone());
|
||||
task2(prog_code.clone());
|
||||
}
|
||||
|
||||
fn task1(input: Vec<i32>) {
|
||||
fn task1(input: Vec<i128>) {
|
||||
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());
|
||||
let mut computer = IntCodeComputer::new(
|
||||
vec![**phase, signal],
|
||||
input.clone().into_iter().enumerate().collect(),
|
||||
);
|
||||
computer.run_until_end();
|
||||
*computer.get_output().last().unwrap()
|
||||
})
|
||||
@@ -28,7 +31,7 @@ fn task1(input: Vec<i32>) {
|
||||
println!("Task 1: best signal is {}", result.unwrap());
|
||||
}
|
||||
|
||||
fn task2(input: Vec<i32>) {
|
||||
fn task2(input: Vec<i128>) {
|
||||
let phases = vec![5, 6, 7, 8, 9];
|
||||
let result = phases
|
||||
.iter()
|
||||
@@ -37,7 +40,10 @@ fn task2(input: Vec<i32>) {
|
||||
let mut machines: Vec<IntCodeComputer> = perm
|
||||
.iter()
|
||||
.map(|phase| {
|
||||
let mut comp = IntCodeComputer::new(vec![**phase], input.clone());
|
||||
let mut comp = IntCodeComputer::new(
|
||||
vec![**phase],
|
||||
input.clone().into_iter().enumerate().collect(),
|
||||
);
|
||||
comp.run_until_input_empty();
|
||||
comp
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user