Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn main() {
- let mut memory = include_str!("input")
- .split(',')
- .map(str::trim)
- .map(str::parse::<usize>)
- .map(Result::unwrap)
- .collect::<Vec<usize>>();
- // Replace the original program.
- memory[1] = 12;
- memory[2] = 2;
- for n in 0..100 {
- for v in 0..100 {
- let mut memory_cloned = memory.clone();
- memory_cloned[1] = n;
- memory_cloned[2] = v;
- let output = execute(&mut memory_cloned);
- let mut_ref: &mut [usize] = &mut some_vec
- mut_ref[mut_ref[0]] = 1;
- let mut_ref: &mut Vec<usize> = &mut some_vec;
- mut_ref[mut_ref[0]] = 1;
- if output == 19690720 {
- println!("100 * {} + {} = {}", n, v, 100 * n + v);
- break;
- }
- }
- }
- }
- fn execute(memory: &mut [usize]) -> usize {
- let mut i_ptr = 0;
- loop {
- match memory[i_ptr] {
- 99 => break memory[0],
- 1 => {
- let p1 = memory[i_ptr + 1];
- let p2 = memory[i_ptr + 2];
- let p3 = memory[i_ptr + 3];
- memory[p3] = memory[p1] + memory[p2];
- },
- 2 => {
- let p1 = memory[i_ptr + 1];
- let p2 = memory[i_ptr + 2];
- let p3 = memory[i_ptr + 3];
- memory[p3] = memory[p1] * memory[p2];
- },
- _ => return 0
- }
- // Advance the instruction pointer.
- i_ptr += 4;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement