solution: day 6
This commit is contained in:
parent
92d5b89623
commit
1cf168ec71
@ -3,7 +3,7 @@ pub mod d2;
|
|||||||
pub mod d3;
|
pub mod d3;
|
||||||
pub mod d4;
|
pub mod d4;
|
||||||
pub mod d5;
|
pub mod d5;
|
||||||
// pub mod d6;
|
pub mod d6;
|
||||||
// pub mod d7;
|
// pub mod d7;
|
||||||
// pub mod d8;
|
// pub mod d8;
|
||||||
// pub mod d9;
|
// pub mod d9;
|
||||||
|
|||||||
55
src/days/d6.rs
Normal file
55
src/days/d6.rs
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
use crate::prelude::*;
|
||||||
|
|
||||||
|
pub type I = Vec<&'static str>;
|
||||||
|
pub type O = String;
|
||||||
|
|
||||||
|
fn _parse (data: &'static str) -> I {
|
||||||
|
data.lines().collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn _solve (data: &I) -> Vec<M<char, usize>> {
|
||||||
|
let mut m: Vec<M<char, usize>> = vec![M::new(); data[0].len()];
|
||||||
|
|
||||||
|
for line in data {
|
||||||
|
for (col, c) in line.chars().enumerate() {
|
||||||
|
*m[col].entry(c).or_default() += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m
|
||||||
|
}
|
||||||
|
|
||||||
|
fn _silver (data: &I) -> O {
|
||||||
|
_solve(data).into_iter().map(|v| v.into_iter().max_by_key(|&(_, v)| v).unwrap().0).collect::<String>()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn _gold (data: &I) -> O {
|
||||||
|
_solve(data).into_iter().map(|v| v.into_iter().min_by_key(|&(_, v)| v).unwrap().0).collect::<String>()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
fn read () -> I {
|
||||||
|
let data = inc!(6);
|
||||||
|
_parse(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn silver () {
|
||||||
|
let data = read();
|
||||||
|
let ans = _silver(&data);
|
||||||
|
|
||||||
|
assert_eq!(ans, s!("gebzfnbt"))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn gold () {
|
||||||
|
let data = read();
|
||||||
|
let ans = _gold(&data);
|
||||||
|
|
||||||
|
assert_eq!(ans, s!("fykjtwyn"))
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user