Skip to content

Commit 231365f

Browse files
committed
Day 5
1 parent bb9554a commit 231365f

File tree

3 files changed

+64
-0
lines changed

3 files changed

+64
-0
lines changed

in/5

+1
Large diffs are not rendered by default.

src/5-1.rs

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use std::io::{self, Read};
2+
3+
fn main() {
4+
let mut out = vec!['-'];
5+
let mut polymers = String::new();
6+
io::stdin().read_to_string(&mut polymers).unwrap();
7+
polymers.pop();
8+
9+
for letter in polymers.chars() {
10+
let last = out[out.len() - 1];
11+
12+
if letter == last || !letter.eq_ignore_ascii_case(&last) {
13+
out.push(letter);
14+
} else {
15+
out.pop();
16+
}
17+
}
18+
19+
println!("{}", out.len() - 1);
20+
}

src/5-2.rs

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use std::io::{self, Read};
2+
3+
fn main() {
4+
let mut out = vec!['-'];
5+
let mut polymers = String::new();
6+
io::stdin().read_to_string(&mut polymers).unwrap();
7+
polymers.pop();
8+
9+
for letter in polymers.chars() {
10+
let last = out[out.len() - 1];
11+
12+
if letter == last || !letter.eq_ignore_ascii_case(&last) {
13+
out.push(letter);
14+
} else {
15+
out.pop();
16+
}
17+
}
18+
19+
out.pop();
20+
21+
let min: usize = (b'a'..=b'z')
22+
.map(|x| get_reduced_count(&out, x as char))
23+
.min()
24+
.unwrap();
25+
26+
println!("{}", min);
27+
}
28+
29+
fn get_reduced_count(polymers: &[char], remove: char) -> usize {
30+
let mut out = vec!['-'];
31+
32+
for letter in polymers.iter().cloned().filter(|c| !remove.eq_ignore_ascii_case(c)) {
33+
let last = out[out.len() - 1];
34+
35+
if letter == last || !letter.eq_ignore_ascii_case(&last) {
36+
out.push(letter);
37+
} else {
38+
out.pop();
39+
}
40+
}
41+
42+
out.len() - 1
43+
}

0 commit comments

Comments
 (0)