problem 6
This commit is contained in:
12
src/main.rs
12
src/main.rs
@@ -6,12 +6,14 @@ use crate::problem2::lib::Problem2;
|
||||
use crate::problem3::lib::Problem3;
|
||||
use crate::problem4::lib::Problem4;
|
||||
use crate::problem5::lib::Problem5;
|
||||
use crate::problem6::lib::Problem6;
|
||||
|
||||
mod problem1;
|
||||
mod problem2;
|
||||
mod problem3;
|
||||
mod problem4;
|
||||
mod problem5;
|
||||
mod problem6;
|
||||
mod util;
|
||||
|
||||
|
||||
@@ -41,7 +43,11 @@ fn main() {
|
||||
// problem4.run_part1();
|
||||
// problem4.run_part2();
|
||||
|
||||
let problem5 = Problem5::new(&util::get_problem(5));
|
||||
problem5.run_part1();
|
||||
problem5.run_part2();
|
||||
// let problem5 = Problem5::new(&util::get_problem(5));
|
||||
// problem5.run_part1();
|
||||
// problem5.run_part2();
|
||||
|
||||
let problem6 = Problem6::new(&util::get_problem(6));
|
||||
problem6.run_part1();
|
||||
problem6.run_part2();
|
||||
}
|
||||
|
||||
52
src/problem6/lib.rs
Normal file
52
src/problem6/lib.rs
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
Specifically, they need you to find the two entries that sum to 2020 and then multiply those two numbers together.
|
||||
*/
|
||||
|
||||
use crate::Problem;
|
||||
use std::collections::HashSet;
|
||||
|
||||
pub struct Problem6 {
|
||||
groups: Vec<HashSet<char>>,
|
||||
}
|
||||
|
||||
|
||||
impl Problem6 {}
|
||||
|
||||
impl Problem for Problem6 {
|
||||
fn new(input: &String) -> Self {
|
||||
Problem6 {
|
||||
groups: input
|
||||
.split("\n\n")
|
||||
.filter_map(|s| {
|
||||
let s = s.trim().split("\n");
|
||||
let mut sets = Vec::new();
|
||||
for i in s {
|
||||
let v : HashSet<char> = i.chars().filter_map(|c| {
|
||||
if c.is_whitespace() {
|
||||
None
|
||||
} else {
|
||||
Some(c)
|
||||
}
|
||||
}).collect::<HashSet<char>>();
|
||||
sets.push(v);
|
||||
}
|
||||
let mut iter = sets.iter();
|
||||
let intersection : HashSet<char> =
|
||||
iter.next().map(|set| iter.fold(set.clone(), |set1, set2| set1.intersection(set2).map(|c| *c).collect())).unwrap().clone();
|
||||
Some(intersection)
|
||||
}).collect(),
|
||||
}
|
||||
}
|
||||
|
||||
fn run_part1(&self) {
|
||||
let mut v = 0;
|
||||
for i in &self.groups {
|
||||
v += i.len();
|
||||
}
|
||||
println!("{}\n{:?}", v, self.groups);
|
||||
}
|
||||
|
||||
fn run_part2(&self) {
|
||||
}
|
||||
}
|
||||
|
||||
1
src/problem6/mod.rs
Normal file
1
src/problem6/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod lib;
|
||||
Reference in New Issue
Block a user