diff --git a/2018/loc.svg b/2018/loc.svg
index 3b2cdab..43fe4f8 100644
--- a/2018/loc.svg
+++ b/2018/loc.svg
@@ -32,10 +32,10 @@ z
+" id="m6ad9c1a3cf" 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="ma681a2b43a" 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/day16.rs b/2018/src/day16.rs
index be68407..6383f00 100644
--- a/2018/src/day16.rs
+++ b/2018/src/day16.rs
@@ -6,8 +6,8 @@ use std::io::Read;
use regex::Regex;
use common::Solution;
-use cpu::OpCode;
use cpu::CPU;
+use cpu::OpCode;
pub struct Day16 {
matcher: Regex,
@@ -17,7 +17,7 @@ pub struct Day16 {
impl Day16 {
pub fn new() -> Self {
Day16 {
- matcher: Regex::new(r"(\d+),? (\d+),? (\d+),? (\d+)").unwrap(),
+ matcher: Regex::new(r"\d+").unwrap(),
buf: String::new(),
}
}
@@ -28,15 +28,14 @@ impl Day16 {
return false;
}
- if let Some(captures) = self.matcher.captures(&self.buf) {
- for (target, cap) in target.iter_mut().zip(captures.iter().skip(1)) {
- *target = cap.unwrap().as_str().parse().unwrap();
- }
+ let mut found = false;
- true
- } else {
- false
+ for (target, num) in target.iter_mut().zip(self.matcher.find_iter(&self.buf)) {
+ *target = num.as_str().parse().unwrap();
+ found = true
}
+
+ found
}
fn determine_options(&mut self, mut reader: &mut BufReader<&mut Read>) -> [HashSet; 16] {
@@ -49,9 +48,9 @@ impl Day16 {
let mut before = [0; 6];
let mut op = [0; 4];
let mut after = [0; 6];
- while self.read(&mut reader, &mut before[..4]) {
+ while self.read(&mut reader, &mut before) {
self.read(&mut reader, &mut op);
- self.read(&mut reader, &mut after[..4]);
+ self.read(&mut reader, &mut after);
reader.read_line(&mut self.buf).unwrap_or(0);
if mappings[op[0] as usize].is_empty() {
@@ -114,9 +113,9 @@ impl Solution for Day16 {
let mut after = [0; 6];
let mut counter = 0;
- while self.read(&mut reader, &mut before[..4]) {
+ while self.read(&mut reader, &mut before) {
self.read(&mut reader, &mut op);
- self.read(&mut reader, &mut after[..4]);
+ self.read(&mut reader, &mut after);
reader.read_line(&mut self.buf).unwrap_or(0);
let valid = OpCode::values()
diff --git a/2018/src/day19.rs b/2018/src/day19.rs
index 369dbfd..0aec606 100644
--- a/2018/src/day19.rs
+++ b/2018/src/day19.rs
@@ -28,8 +28,8 @@ impl Day19 {
let mut parts = line.split(' ');
let opcode = OpCode::from(parts.next().unwrap());
let mut operands = [0; 3];
- for i in 0..3 {
- operands[i] = parts.next().unwrap().parse().unwrap();
+ for (target, part) in operands.iter_mut().zip(parts) {
+ *target = part.parse().unwrap();
}
self.program.push((opcode, operands));