Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.55 KB | None | 0 0
  1. fn main() {
  2.     let mut memory = include_str!("input")
  3.         .split(',')
  4.         .map(str::trim)
  5.         .map(str::parse::<usize>)
  6.         .map(Result::unwrap)
  7.         .collect::<Vec<usize>>();
  8.  
  9.     // Replace the original program.
  10.     memory[1] = 12;
  11.     memory[2] = 2;
  12.  
  13.     for n in 0..100 {
  14.         for v in 0..100 {
  15.             let mut memory_cloned = memory.clone();
  16.             memory_cloned[1] = n;
  17.             memory_cloned[2] = v;
  18.             let output = execute(&mut memory_cloned);
  19.             let mut_ref: &mut [usize] = &mut some_vec
  20.             mut_ref[mut_ref[0]] = 1;
  21.             let mut_ref: &mut Vec<usize> = &mut some_vec;
  22.             mut_ref[mut_ref[0]] = 1;
  23.             if output == 19690720 {
  24.                 println!("100 * {} + {} = {}", n, v, 100 * n + v);
  25.                 break;
  26.             }
  27.         }
  28.     }
  29. }
  30.  
  31. fn execute(memory: &mut [usize]) -> usize {
  32.     let mut i_ptr = 0;
  33.  
  34.     loop {
  35.         match memory[i_ptr] {
  36.             99 => break memory[0],
  37.             1 => {
  38.                 let p1 = memory[i_ptr + 1];
  39.                 let p2 = memory[i_ptr + 2];
  40.                 let p3 = memory[i_ptr + 3];
  41.                 memory[p3] = memory[p1] + memory[p2];
  42.             },
  43.             2 => {
  44.                 let p1 = memory[i_ptr + 1];
  45.                 let p2 = memory[i_ptr + 2];
  46.                 let p3 = memory[i_ptr + 3];
  47.                 memory[p3] = memory[p1] * memory[p2];
  48.             },
  49.             _ => return 0
  50.         }
  51.  
  52.         // Advance the instruction pointer.
  53.         i_ptr += 4;
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement