solution: day 6

This commit is contained in:
YK 2024-11-20 00:32:14 +03:00
parent 92d5b89623
commit 1cf168ec71
2 changed files with 56 additions and 1 deletions

View File

@ -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
View 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"))
}
}