Johann Woelper 4 vuotta sitten
vanhempi
commit
12b5882734
2 muutettua tiedostoa jossa 109 lisäystä ja 0 poistoa
  1. 51 0
      src/day_2.rs
  2. 58 0
      src/day_5.rs

+ 51 - 0
src/day_2.rs

@@ -0,0 +1,51 @@
+fn get_first_digit(inp: Vec<usize>, noun: usize, verb: usize) -> usize{
+    let mut inp = inp;
+    let mut i = 0usize;
+    inp[1] = noun;
+    inp[2] = verb;
+    loop {
+        dbg!(i);
+        match inp[i] {
+            1 => {
+                let pos1 = inp[i + 1];
+                let pos2 = inp[i + 2];
+                let pos3 = inp[i + 3];
+                inp[pos3] = inp[pos1] + inp[pos2];
+
+                i += 4;
+            }
+            2 => {
+                let pos1 = inp[i + 1];
+                let pos2 = inp[i + 2];
+                let pos3 = inp[i + 3];
+                inp[pos3] = inp[pos1] * inp[pos2];
+
+                i += 4;
+            }
+            99 => {
+                dbg!("Halt! Can I see your Visa please?");
+                break;
+            }
+            _ => {
+                dbg!("Oh no, I'm invalidated");
+                break;
+            }
+        }
+    }
+    inp[0]
+}
+
+
+pub fn main() {
+    let goal = 19690720;
+    let inp = vec![1,12,2,3,1,1,2,3,1,3,4,3,1,5,0,3,2,6,1,19,1,19,10,23,2,13,23,27,1,5,27,31,2,6,31,35,1,6,35,39,2,39,9,43,1,5,43,47,1,13,47,51,1,10,51,55,2,55,10,59,2,10,59,63,1,9,63,67,2,67,13,71,1,71,6,75,2,6,75,79,1,5,79,83,2,83,9,87,1,6,87,91,2,91,6,95,1,95,6,99,2,99,13,103,1,6,103,107,1,2,107,111,1,111,9,0,99,2,14,0,0];
+
+    for noun in 0..99usize {
+        for verb in 0..99usize {
+            if get_first_digit(inp.clone(), noun, verb) == goal {
+                println!("{}", 100*noun + verb);
+                return
+            }
+        }
+    }
+}

+ 58 - 0
src/day_5.rs

@@ -0,0 +1,58 @@
+fn get_first_digit(inp: Vec<usize>, noun: usize, verb: usize) -> usize{
+    let mut inp = inp;
+    let mut i = 0usize;
+    inp[1] = noun;
+    inp[2] = verb;
+    loop {
+        // dbg!(i);
+        match inp[i] {
+            1 => {
+                let in1 = inp[i + 1];
+                let in2 = inp[i + 2];
+                let out = inp[i + 3];
+                inp[out] = inp[in1] + inp[in2];
+                i += 4;
+            }
+            2 => {
+                let in1 = inp[i + 1];
+                let in2 = inp[i + 2];
+                let out = inp[i + 3];
+                inp[out] = inp[in1] * inp[in2];
+                i += 4;
+            }
+            3 => {
+                let out = inp[i + 1];
+                let in1 = inp[i + 2];
+                inp[out] = in1;
+
+            }
+            4 => {
+
+            }
+            99 => {
+                // dbg!("Halt! Can I see your Visa please?");
+                break;
+            }
+            _ => {
+                // dbg!("Oh no, I'm invalidated");
+                break;
+            }
+        }
+    }
+    inp[0]
+}
+
+
+pub fn main() {
+    let goal = 19690720;
+    let inp = vec![1,12,2,3,1,1,2,3,1,3,4,3,1,5,0,3,2,6,1,19,1,19,10,23,2,13,23,27,1,5,27,31,2,6,31,35,1,6,35,39,2,39,9,43,1,5,43,47,1,13,47,51,1,10,51,55,2,55,10,59,2,10,59,63,1,9,63,67,2,67,13,71,1,71,6,75,2,6,75,79,1,5,79,83,2,83,9,87,1,6,87,91,2,91,6,95,1,95,6,99,2,99,13,103,1,6,103,107,1,2,107,111,1,111,9,0,99,2,14,0,0];
+
+    for noun in 0..99usize {
+        for verb in 0..99usize {
+            if get_first_digit(inp.clone(), noun, verb) == goal {
+                println!("{}", 100*noun + verb);
+                return
+            }
+        }
+    }
+}