solution: day 6
This commit is contained in:
1 parent
92d5b89623
commit
1cf168ec71
2 files changed
+56
-1
No files matched your search
+1
-1
@@ -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;
|
||||||
|
|||||||
@@ -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"))
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user