solution: day 3
This commit is contained in:
parent
ad4d777770
commit
be167e4b2c
@ -1,6 +1,6 @@
|
|||||||
pub mod d1;
|
pub mod d1;
|
||||||
pub mod d2;
|
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;
|
||||||
|
|||||||
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