solution: day 3
This commit is contained in:
parent
ad4d777770
commit
be167e4b2c
@ -1,6 +1,6 @@
|
||||
pub mod d1;
|
||||
pub mod d2;
|
||||
// pub mod d3;
|
||||
pub mod d3;
|
||||
// pub mod d4;
|
||||
// pub mod d5;
|
||||
// pub mod d6;
|
||||
|
||||
48
src/days/d3.rs
Normal file
48
src/days/d3.rs
Normal file
@ -0,0 +1,48 @@
|
||||
use crate::prelude::*;
|
||||
|
||||
pub type I = &'static str;
|
||||
pub type O = usize;
|
||||
|
||||
fn _silver (data: &I) -> O {
|
||||
data.lines().filter(|line| {
|
||||
let v = line.trim().split_ascii_whitespace().filter(|part| !part.is_empty()).map(|num| num.trim().parse::<u16>().unwrap()).collect_vec();
|
||||
|
||||
v[0] + v[1] > v[2] &&
|
||||
v[1] + v[2] > v[0] &&
|
||||
v[0] + v[2] > v[1]
|
||||
}).count()
|
||||
}
|
||||
|
||||
fn _gold (data: &I) -> O {
|
||||
let mut counter = 0;
|
||||
for chunk in &data.lines().chunks(3) {
|
||||
let v = chunk.map(|line| line.trim().split_ascii_whitespace().filter(|part| !part.is_empty()).map(|num| num.trim().parse::<u16>().unwrap()).collect_vec()).collect_vec();
|
||||
counter += (0usize..3).into_iter().filter(|&i| v[0][i] + v[1][i] > v[2][i] && v[1][i] + v[2][i] > v[0][i] && v[2][i] + v[0][i] > v[1][i]).count();
|
||||
}
|
||||
counter
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
|
||||
fn read () -> I {
|
||||
inc!(3)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn silver () {
|
||||
let data = read();
|
||||
let ans = _silver(&data);
|
||||
|
||||
assert_eq!(ans, 993)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gold () {
|
||||
let data = read();
|
||||
let ans = _gold(&data);
|
||||
|
||||
assert_eq!(ans, 1849)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user