Skip to content

Commit e5d8c6a

Browse files
committed
1.2 correct.
1 parent 10c66a6 commit e5d8c6a

File tree

1 file changed

+62
-11
lines changed

1 file changed

+62
-11
lines changed

aoc01/src/main.rs

+62-11
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,69 @@
1-
fn main() {
1+
fn find_patterns(lines: &Vec<String>, patterns: &Vec<(&str, i32)>) -> i32 {
22
let mut sum = 0;
3-
for line in std::io::stdin().lines() {
4-
let mut first = None;
3+
for line in lines {
4+
let mut firstoffset = None;
5+
let mut lastoffset = None;
6+
let mut first = 0;
57
let mut last = 0;
6-
for c in line.unwrap().bytes() {
7-
if !c.is_ascii_digit() {
8-
continue;
8+
for (pat, val) in patterns.iter() {
9+
if let Some(offset) = line.find(pat) {
10+
if firstoffset.is_none() || offset < firstoffset.unwrap() {
11+
firstoffset = Some(offset);
12+
first = *val;
13+
}
914
}
10-
if first.is_none() {
11-
first = Some((c - b'0') as u32);
15+
if let Some(offset) = line.rfind(pat) {
16+
if lastoffset.is_none() || offset > lastoffset.unwrap() {
17+
lastoffset = Some(offset);
18+
last = *val;
19+
}
1220
}
13-
last = (c - b'0') as u32;
1421
}
15-
sum += 10 * first.unwrap() + last;
22+
sum += 10 * first + last;
1623
}
17-
println!("{}", sum);
24+
sum
25+
}
26+
27+
fn main() {
28+
let lines = std::io::stdin()
29+
.lines()
30+
.map(|r| r.unwrap())
31+
.collect::<Vec<_>>();
32+
33+
let patterns = vec![
34+
("0", 0),
35+
("1", 1),
36+
("2", 2),
37+
("3", 3),
38+
("4", 4),
39+
("5", 5),
40+
("6", 6),
41+
("7", 7),
42+
("8", 8),
43+
("9", 9),
44+
];
45+
println!("Part 1: {}", find_patterns(&lines, &patterns));
46+
let patterns = vec![
47+
("0", 0),
48+
("1", 1),
49+
("2", 2),
50+
("3", 3),
51+
("4", 4),
52+
("5", 5),
53+
("6", 6),
54+
("7", 7),
55+
("8", 8),
56+
("9", 9),
57+
("zero", 0),
58+
("one", 1),
59+
("two", 2),
60+
("three", 3),
61+
("four", 4),
62+
("five", 5),
63+
("six", 6),
64+
("seven", 7),
65+
("eight", 8),
66+
("nine", 9),
67+
];
68+
println!("Part 2: {}", find_patterns(&lines, &patterns));
1869
}

0 commit comments

Comments
 (0)