1
0
Fork 0

Second star.

This commit is contained in:
Vivianne 2022-12-02 23:21:14 -08:00
parent 4c1bf47827
commit 5ede082241
1 changed files with 31 additions and 5 deletions

View File

@ -46,7 +46,7 @@ fn part1(lines: &[String]) {
.expect("Expected at least one duplicate item");
let priority = to_priority(outlier).unwrap();
println!("{} ({})", outlier, priority);
dbg!(outlier, priority);
sum += priority;
left_set.clear();
@ -56,9 +56,35 @@ fn part1(lines: &[String]) {
println!("Sum: {}", sum);
}
fn part2(_lines: &[String]) {}
fn part2(lines: &[String]) {
const GROUP_SIZE: usize = 3;
let mut sets = Vec::with_capacity(GROUP_SIZE - 1);
for _ in 0..GROUP_SIZE - 1 {
sets.push(HashSet::<char>::new())
}
#[cfg(test)]
mod tests {
use super::*;
let mut sum: u32 = 0;
for chunk in lines.chunks(GROUP_SIZE) {
let mut outlier: Option<char> = None;
'outlier_search: for i in 0..GROUP_SIZE {
if i != GROUP_SIZE - 1 {
sets[i].clear();
chunk[i].chars().collect_into(&mut sets[i]);
} else {
for c in chunk[i].chars() {
if sets[0..GROUP_SIZE - 1].into_iter().all(|s| s.contains(&c)) {
outlier = Some(c);
break 'outlier_search;
}
}
}
}
let outlier = outlier.expect("Expect at least one outlier");
let priority = to_priority(outlier).unwrap();
dbg!(outlier, priority);
sum += priority;
}
println!("Sum: {}", sum);
}