Skip to content

Commit f443237

Browse files
committed
a bit cleaner code
1 parent d6bbc13 commit f443237

File tree

1 file changed

+18
-22
lines changed

1 file changed

+18
-22
lines changed

src/bin/02.rs

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ fn parse_data(input: &str) -> Vec<Vec<i32>> {
1111

1212
fn is_valid_pair(x: i32, y: i32, inc: bool) -> bool {
1313
let diff = if inc { y - x } else { x - y };
14-
1514
(1..=3).contains(&diff)
1615
}
1716

@@ -42,28 +41,25 @@ where
4241
}
4342

4443
fn find_broken_position_with_problem_dampener(line: &[i32]) -> Option<usize> {
45-
match find_broken_position(line.iter()) {
46-
Some(pos) => {
47-
let left = &line[..pos];
48-
let right = &line[pos + 1..];
49-
find_broken_position(left.iter().chain(right.iter()))?;
50-
51-
if pos > 0 {
52-
let left = &line[..pos - 1];
53-
let right = &line[pos..];
54-
find_broken_position(left.iter().chain(right.iter()))?;
55-
}
56-
57-
if pos < line.len() {
58-
let left = &line[..pos + 1];
59-
let right = &line[pos + 2..];
60-
find_broken_position(left.iter().chain(right.iter()))?;
61-
}
62-
63-
Some(pos)
64-
}
65-
None => None,
44+
let broken_position = find_broken_position(line.iter())?;
45+
46+
let left = &line[..broken_position];
47+
let right = &line[broken_position + 1..];
48+
find_broken_position(left.iter().chain(right.iter()))?;
49+
50+
if broken_position > 0 {
51+
let left = &line[..broken_position - 1];
52+
let right = &line[broken_position..];
53+
find_broken_position(left.iter().chain(right.iter()))?;
6654
}
55+
56+
if broken_position < line.len() {
57+
let left = &line[..broken_position + 1];
58+
let right = &line[broken_position + 2..];
59+
find_broken_position(left.iter().chain(right.iter()))?;
60+
}
61+
62+
Some(broken_position)
6763
}
6864

6965
pub fn part_one(input: &str) -> Option<usize> {

0 commit comments

Comments
 (0)