day 11: todo

This commit is contained in:
YK 2024-11-24 22:46:00 +03:00
parent d3c1c39a68
commit c60d0bf3f6
2 changed files with 72 additions and 1 deletions

View File

@ -8,7 +8,7 @@ pub mod d7;
pub mod d8; pub mod d8;
pub mod d9; pub mod d9;
pub mod d10; pub mod d10;
// pub mod d11; pub mod d11;
// pub mod d12; // pub mod d12;
// pub mod d13; // pub mod d13;
// pub mod d14; // pub mod d14;

71
src/days/d11.rs Normal file
View File

@ -0,0 +1,71 @@
use crate::prelude::*;
pub type I = Vec<Vec<char>>;
pub type O = i64;
fn _parse (data: &str) -> I {
Default::default()
}
fn _solve (data: &I) -> O {
Default::default()
}
fn _silver (data: &I) -> O {
Default::default()
}
fn _gold (data: &I) -> O {
Default::default()
}
type St = [Vec<char>; 4];
fn is_final_state (state: &St) -> bool {
state[1..].iter().all(|e| e.is_empty())
}
fn is_valid_state (state: &St) -> bool {
state.iter().all(|level| level.len() < 2 || level.iter().all(|e| e.is_lowercase()) || {
let mut chips = level.iter().filter(|e| e.is_uppercase());
while let Some(chip) = chips.next() {
if level.iter().find(|&v| chip.to_ascii_lowercase() == *v).is_none() {
return false;
}
}
true
})
}
fn state_discriminant (state: &St) -> [(usize, usize); 4] {
state.iter().map(|s| (
s.iter().filter(|e| e.is_lowercase()).count(),
s.iter().filter(|e| e.is_uppercase()).count()
)).collect_vec().try_into().unwrap()
}
#[cfg(test)]
mod test {
use super::*;
fn read () -> I {
vec![vec!['a', 'b', 'c', 'd', 'e', 'A', 'B', 'C'], vec!['D', 'E'], vec![], vec![]]
}
#[test]
fn silver () {
let data = read();
let ans = _silver(&data);
assert_eq!(ans, 1)
}
#[test]
fn gold () {
let data = read();
let ans = _gold(&data);
assert_eq!(ans, 1)
}
}