From 9d1fdc63c9920ac6eb28aefbe3457ba09b14dc3b Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Wed, 19 Dec 2018 08:25:15 +0100 Subject: [PATCH] More cleanup. --- 2018/loc.svg | 40 ++++++++++++++++++++-------------------- 2018/src/day16.rs | 25 ++++++++++++------------- 2018/src/day19.rs | 4 ++-- 3 files changed, 34 insertions(+), 35 deletions(-) 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));