Skip to content

Commit 2b95a7c

Browse files
committed
refactor(06/2015): simplify parsing
1 parent aebebeb commit 2b95a7c

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

src/solutions/year2015/day06.rs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,23 @@ impl Day06 {
3131
input
3232
.lines()
3333
.map(|line| -> Box<dyn Instruction> {
34-
if line.starts_with("turn on ") {
35-
let trimmed = line.trim_start_matches("turn on ");
36-
37-
Box::new(TurnOn::from(self.parse_points(trimmed)))
38-
} else if line.starts_with("turn off ") {
39-
let trimmed = line.trim_start_matches("turn off ");
40-
41-
Box::new(TurnOff::from(self.parse_points(trimmed)))
42-
} else if line.starts_with("toggle ") {
43-
let trimmed = line.trim_start_matches("toggle ");
44-
45-
Box::new(Toggle::from(self.parse_points(trimmed)))
34+
let parts = line.split_whitespace().collect::<Vec<_>>();
35+
36+
if parts[0] == "turn" && parts[1] == "on" {
37+
Box::new(TurnOn::from(self.parse_points(parts[2], parts[4])))
38+
} else if parts[0] == "turn" && parts[1] == "off" {
39+
Box::new(TurnOff::from(self.parse_points(parts[2], parts[4])))
40+
} else if parts[0] == "toggle" {
41+
Box::new(Toggle::from(self.parse_points(parts[1], parts[3])))
4642
} else {
4743
unreachable!()
4844
}
4945
})
5046
.collect()
5147
}
5248

53-
fn parse_points(&self, points_str: &str) -> (Point, Point) {
54-
let p = points_str.split_once(" through ").unwrap();
55-
56-
(p.0.parse().unwrap(), p.1.parse().unwrap())
49+
fn parse_points(&self, from_str: &str, to_str: &str) -> (Point, Point) {
50+
(from_str.parse().unwrap(), to_str.parse().unwrap())
5751
}
5852
}
5953

src/utils/grid.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate::utils::surface_range::SurfaceRange;
66
use itertools::Itertools;
77
use std::collections::{BTreeMap, HashMap, HashSet, VecDeque};
88
use std::fmt;
9-
use std::fmt::Display;
9+
use std::fmt::{Debug, Display};
1010
use std::hash::Hash;
1111

1212
#[derive(Debug, Clone)]

0 commit comments

Comments
 (0)