Day 6
This commit is contained in:
parent
05c89e5f11
commit
8b702bca9f
2 changed files with 44 additions and 0 deletions
43
src/day6.rs
Normal file
43
src/day6.rs
Normal file
|
@ -0,0 +1,43 @@
|
|||
use aoc_runner_derive::{aoc, aoc_generator};
|
||||
use std::collections::HashSet;
|
||||
#[aoc_generator(day6)]
|
||||
pub fn input_generator(input: &str) -> Vec<Vec<HashSet<char>>> {
|
||||
input
|
||||
.split("\n\n")
|
||||
.map(|block| {
|
||||
block
|
||||
.split("\n")
|
||||
.map(|line| line.chars().collect())
|
||||
.collect()
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
#[aoc(day6, part1)]
|
||||
fn solve_part1(data: &Vec<Vec<HashSet<char>>>) -> usize {
|
||||
let mut total = 0;
|
||||
for group in data {
|
||||
let mut answers: HashSet<char> = HashSet::new();
|
||||
for person in group {
|
||||
answers.extend(person);
|
||||
}
|
||||
total += answers.len();
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
#[aoc(day6, part2)]
|
||||
fn solve_part2(data: &Vec<Vec<HashSet<char>>>) -> usize {
|
||||
let mut total = 0;
|
||||
for group in data {
|
||||
let mut answers: HashSet<char> = HashSet::new();
|
||||
for person in group {
|
||||
answers.extend(person);
|
||||
}
|
||||
for person in group {
|
||||
answers = answers.intersection(&person).map(|v| *v).collect();
|
||||
}
|
||||
total += answers.len();
|
||||
}
|
||||
return total;
|
||||
}
|
|
@ -4,4 +4,5 @@ pub mod day2;
|
|||
pub mod day3;
|
||||
pub mod day4;
|
||||
pub mod day5;
|
||||
pub mod day6;
|
||||
aoc_lib! { year = 2020 }
|
||||
|
|
Loading…
Reference in a new issue