diff --git a/src/day2.rs b/src/day2.rs index 8a102c6..b9bdde5 100644 --- a/src/day2.rs +++ b/src/day2.rs @@ -1,6 +1,6 @@ use std; -fn compute_intcode(p: &mut Vec) -> Vec { +fn compute_intcode(p: &mut Vec) { for idx in (0..(p.len())).step_by(4) { match p[idx] { 1 => { @@ -16,10 +16,9 @@ fn compute_intcode(p: &mut Vec) -> Vec { p[res] = p[left] * p[right]; } 99 => break, - _ => panic!("Something went wrong!"), + _ => panic!("invalid opcode"), } } - p.to_vec() } pub fn part_one() { @@ -32,7 +31,9 @@ pub fn part_one() { input[1] = 12; input[2] = 2; - println!("Intcode [0] is: {}", compute_intcode(&mut input)[0]); + compute_intcode(&mut input); + + println!("Intcode [0] is: {}", input[0]); } pub fn part_two() { @@ -52,8 +53,8 @@ pub fn part_two() { input[1] = i; for j in 0..99 { input[2] = j; - let mut input_guess = input.clone(); - let computed = compute_intcode(&mut input_guess); + let mut computed = input.clone(); + compute_intcode(&mut computed); found = computed[0] == lookup_num; @@ -76,20 +77,19 @@ pub fn part_two() { #[test] fn test_part_one() { - assert_eq!( - compute_intcode(&mut vec!(1, 0, 0, 0, 99)), - vec!(2, 0, 0, 0, 99) - ); - assert_eq!( - compute_intcode(&mut vec!(2, 3, 0, 3, 99)), - vec!(2, 3, 0, 6, 99) - ); - assert_eq!( - compute_intcode(&mut vec!(2, 4, 4, 5, 99, 0)), - vec!(2, 4, 4, 5, 99, 9801) - ); - assert_eq!( - compute_intcode(&mut vec!(1, 1, 1, 4, 99, 5, 6, 0, 99)), - vec!(30, 1, 1, 4, 2, 5, 6, 0, 99) - ); + let mut intcode = vec![1, 0, 0, 0, 99]; + compute_intcode(&mut intcode); + assert_eq!(intcode, vec!(2, 0, 0, 0, 99)); + + let mut intcode = vec![2, 3, 0, 3, 99]; + compute_intcode(&mut intcode); + assert_eq!(intcode, vec!(2, 3, 0, 6, 99)); + + let mut intcode = vec![2, 4, 4, 5, 99, 0]; + compute_intcode(&mut intcode); + assert_eq!(intcode, vec!(2, 4, 4, 5, 99, 9801)); + + let mut intcode = vec![1, 1, 1, 4, 99, 5, 6, 0, 99]; + compute_intcode(&mut intcode); + assert_eq!(intcode, vec!(30, 1, 1, 4, 2, 5, 6, 0, 99)); }