day09 prepared IntCodeComputer to use HashSet memory and new intructions

This commit is contained in:
Johannes
2019-12-09 23:01:55 +01:00
parent 676fb13a59
commit 2dc626e227
4 changed files with 113 additions and 63 deletions

View File

@@ -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
})