diff --git a/2018/loc.svg b/2018/loc.svg
index 43fe4f8..97c11fc 100644
--- a/2018/loc.svg
+++ b/2018/loc.svg
@@ -32,10 +32,10 @@ z
+" id="m949f39278e" style="stroke:#000000;stroke-width:0.8;"/>
-
+
@@ -71,7 +71,7 @@ z
-
+
@@ -110,7 +110,7 @@ z
-
+
@@ -139,7 +139,7 @@ z
-
+
@@ -153,7 +153,7 @@ z
-
+
@@ -193,7 +193,7 @@ z
-
+
@@ -286,10 +286,10 @@ z
+" id="med6d0249be" style="stroke:#000000;stroke-width:0.8;"/>
-
+
@@ -302,7 +302,7 @@ L -3.5 0
-
+
@@ -316,7 +316,7 @@ L -3.5 0
-
+
@@ -331,7 +331,7 @@ L -3.5 0
-
+
@@ -346,7 +346,7 @@ L -3.5 0
-
+
@@ -361,7 +361,7 @@ L -3.5 0
-
+
@@ -577,7 +577,7 @@ z
-
-
-
+
diff --git a/2018/src/day19.rs b/2018/src/day19.rs
index 0aec606..c35de73 100644
--- a/2018/src/day19.rs
+++ b/2018/src/day19.rs
@@ -63,12 +63,10 @@ impl Solution for Day19 {
assert_eq!(self.ip, 3);
while (cpu.registers[3] as usize) < self.program.len() {
- if cpu.registers[3] == 3 {
+ if cpu.registers[3] == 1 {
let reg = &mut cpu.registers;
- if reg[5] % reg[1] == 0 {
- reg[0] += reg[1];
- }
- reg[3] = 12;
+ reg[0] = (1..=reg[5]).filter(|&x| reg[5] % x == 0).sum();
+ reg[3] = 16;
}
let (opcode, operands) = &self.program[cpu.registers[self.ip] as usize];
cpu.execute(*opcode, operands).unwrap();