day 3 solutions

This commit is contained in:
Stephen Waits committed 2020-12-02 22:14:31 -08:00
1 parent 3aa216c806
commit 8a7f205419
4 files changed
+362

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
// ==== day 3
use crate::utils;
use anyhow::Result;
fn count_trees(data: &str, right: usize, down: usize) -> Result<usize> {
Ok(data
.lines()
.step_by(down)
.enumerate()
.filter(|(i, s)| {
s.chars()
.nth((i * right) % s.len())
.expect("string index error")
== '#'
})
.count())
}
pub fn run() -> Result<(usize, usize)> {
let data = utils::read_file("data/input-03.txt")?;
let answers = utils::read_i64s("data/output-03.txt")?;
let p1 = count_trees(&data, 3, 1)?;
assert_eq!(p1, answers[0] as usize);
let p2 = count_trees(&data, 1, 1)?
* p1
* count_trees(&data, 5, 1)?
* count_trees(&data, 7, 1)?
* count_trees(&data, 1, 2)?;
assert_eq!(p2, answers[1] as usize);
Ok((p1, p2))
}
+2
View File
@@ -2,6 +2,7 @@ use anyhow::Result;
mod day01;
mod day02;
mod day03;
mod utils;
// TODO
@@ -14,5 +15,6 @@ mod utils;
fn main() -> Result<()> {
println!("Day 01: {:?}", day01::run()?);
println!("Day 02: {:?}", day02::run()?);
println!("Day 03: {:?}", day03::run()?);
Ok(())
}