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

+323
View File
@@ -0,0 +1,323 @@
.............#...#....#.....##.
.#...##.........#.#.........#.#
.....##......#.......#.........
.......#...........#.#.........
#...........#...#..#.#......#..
.........##....#.#...#.........
.....#.........#.#...........#.
....#...............##....##...
#.#.............#..#.......#.#.
...#...........................
......#..#....#.............#..
........#......#.......#.......
....#.....#..#.#...#.........#.
..#.#.......#.##...#....#.....#
...........#.........#..#......
#...........#.#..#...#.#.#....#
........#......................
....#.#.....#....#.......#..#..
.............................#.
....##..........#.....##......#
......#.....................#..
..#.....##.......#.............
....#.#..............#.#.......
..#.#........#.....#..##.......
.....#...##.........##....#.#..
.#....#..#..#...........#......
.............#.....##........#.
..#....#............#.........#
###..........#........#.......#
#...#..#.#.#.........#..#......
..#....#......#.............#..
#...#........#..#...#.....#....
.#..........#.#........#.......
#.....#.........#..#......#....
....#....##........#......#....
.......#....#.....#..#..#.....#
.........#...#.#...#.##........
.##.##...........#..##..#......
.#.##....#........#...#........
.......##.........##.####.....#
....#..##....#.................
.#........#..........#.........
##....##..........##........#..
#......#...........#....#..#...
.......#..#....##..##.....#....
.........#.#.#...#.....#.......
......#...#...#....#......#....
##....#..........#....##....##.
###.........#...#...#..........
#.....##.#........#.......#....
#...............#...##.#......#
..#.....####.###......#......#.
....#.......#..........#.......
....##..............#.#.#......
.......##..#.......#...........
..#.......##....#.......###...#
........#...#.......#.#...#....
.........##....#..#....#.......
............#.#.......#.#......
.....#.....#...#....#.##.......
.......#.........#.......#.....
.#..#...#.....#............#.##
.......#.#......##.............
##.#......#.....#.#............
.#....#.....#............#...#.
.........#.......#.#...........
#............#.##...#..#...#.#.
......#....#.......#....#......
..........#........#..#.#......
#..##.......#.........#..#.....
.........#.....##........#.#..#
..#................#...........
....#..#........##.........#..#
###...#....##.#......##.......#
.......#......##..#.......#....
.......###...#...#..........##.
................#.......#......
.#......##.##........#.........
....##.#.....##.......#........
...........#...........#.....#.
..#........#..#.#...#.#........
#...............#...#.##.##.#.#
................#.......#......
.#..#......#........#.#........
...##..#.......#.......#..#....
.#.....#.#....##..#........#...
........##......#..........#...
.#.......#.......#...#..#......
.#..##.....#....#............#.
...#..........#....#........#..
..#.#..#.......#.#.##..........
#........###.....#.#.......#.##
.....#....##.............#.#..#
..##............#...##.........
...#.........#...........#.....
...#......#.#...#..###.........
.............#...##............
.....##..##.####.#..#......#.#.
.#...#.....#.....#.#.....#.....
.........#.......###.....#..##.
.##.#..#..........#.##.#.#.....
.#...#...#.#.##......#..#......
.............#......#......#...
#.....................#......#.
...#.....#.....#....#........#.
................##..#....#..#..
#.###...#.....................#
...#..#....#.......#.........#.
...........#..#..#...........#.
.......#..#......#....#.#......
..........#......#..#....#.....
.#.#.....#...#.#...#...#.#....#
.....#.......#............#...#
#.#....#......#......#........#
.#.#..#.........##...#.........
#..###..#......................
..#.#..#.......................
.##.....#...#......#..#........
...#...........#...#.......##..
..#...........#........#.......
........#....#.....#.#.........
..........#...........#.....#..
......#...#...##.#.............
.#...#...##....................
............###.........#......
.#.#...................#..#....
....#.#...#.#........#.#.......
....#...#...........#.......#.#
...........#............#...##.
.....####....#.#......#.#......
.##.............#............#.
......#.........#............##
#.#....#...##....#.......#....#
.....#.#....#..#..#...#..#.#..#
.........................#.....
......#.#....###.......#....#..
.....................##.#...#.#
..#.....#.#.#...#...#..........
........#..##........#...#...#.
..........#.#.##....#....##....
.............#..#..............
..#.##..#.......#...#..#..##..#
..#..#....#.#..........#..#....
..........#....#...#......#....
.##...#.......................#
.#.....#....#..........#.......
...........#..#......##.....#..
......###.#..##....#...#.##....
.......#..#.#....#.............
...#..#......##.........###.#..
...........#............##...#.
...#...#...........##.....#....
..................#............
.#.#.#...#..............#..##..
#.#....#........#.........#.##.
#.#.#.......#.....#..........#.
...##.....##.#.....#...........
.#....#..............##...##..#
........##.....................
#..#..#.....###.............#..
.......#...........#...........
.........#.....................
.......#...#...#.....##........
......#.........#........#.....
...#....##..#.####.#.......#.#.
.....#..#......#........#.##..#
.##....#......##......#...###..
..###.#........##.#...#.......#
............#......##....#.#...
.....#....##..##............##.
......##....#.#...#....#.#..#.#
.......#.........#.#.....#.#...
.......#.#....#................
.##...###..#.....#............#
#.#......#.#..#..#.#...#..#..#.
..#.#.#.....#............#...##
.##....###.........#..#........
.#..#.#..#.#....#.........##.#.
....#..#...##.##........#......
........#.#....##....#....#....
.......#..#..#.#..............#
#....#....#.....#....#.........
.#.###...#....#.......#........
.........#.#....##....#...#....
....#.............#.....##.##..
.....#.....#...##..#.#.##...##.
.........#..#................##
...##..##......#.....#........#
.#....#.....#.#......#..###....
#.....#..#.....................
....#.#...#.#.................#
.....##..................#.....
#....##...#.##..###...#........
##.#.........#.......#....#....
.#.#.............##..#.##......
...#.#..............#......#...
.............#.........#.....#.
#.......#........#......#.....#
.....#..............#.##.#.....
#......##...................#..
##.#.....#..........#........#.
#...........##...........#.....
.#...#.....#..#..##....#.......
.....#.........#....##.#.......
#........#......#.............#
.#..................####.#.....
#...#......#....##...#.#..#..#.
............#.#............#...
............#........#.#..###..
.#..#..#..#.#.#.....#.#........
#.....#..#.#...#..#..#........#
#................#....#..#.....
....#..#..#.#......#.#..#.....#
.#..#.......#...##.#.#.....#..#
#.....................#.......#
.............#.......#...#.....
....#......#.........###.##....
....#..#.......#.#........#....
....#...#....#.#....#..........
...#..#......#.............#...
.......###.#.........#....#.#..
..#.....##.....................
.#.#...........#..##....#......
..........##.#....#.#..........
...........#.#..#.#..#.#.......
..........#..#...#.....##......
.....#.........#...#.#..#......
#.#................#..........#
...#.....##.#..#...#.##.......#
.....##...........#............
.....#...#...#...#.#.....#.....
...........##..................
.........#................#....
......#.....#.#...#.......#....
...#...#........#...#...#.#.#..
...............##..#....##...#.
...#.#...........##.......##..#
...........#............#......
.#....#.#.......##.#.#.#.......
.....#.#..#.#.#................
.#............#...#.#..........
.....#.......#.#.......#.....#.
#....#...........#...#....##...
..#...#..##.....#....#..#......
#.#.........#..#.#..#.#......#.
................#......##......
#........#..............#....#.
........#..#.#........#..#..#..
#..........#......#............
..##.......#..#.......#....#...
.#........#..#..#.#.......##...
................#..............
#.................#...........#
##..#...................#....##
#..#....#.....#.#..#.#.#......#
#................#.#.#...#.....
.............#..#...#..##...#.#
#..................#...........
..............#..#.....##.....#
..#...............#.#..........
.....#......#....#..#...#......
.#......#...##.....###.....#...
...##...##.##....#.#.#..#......
....#.#.......#..##....#.##....
...#.........#.#.....#...#...##
.##.#.........##..#.##..#......
.#...#......#......#.........#.
.............#.................
..........#..............#.....
##...........#...#...###....#..
....#...............#..........
.......####.....#......#.......
........#..........#..#........
..#.......#..#.................
......#.#..##...##....#........
.##...#........#...#....#...#..
.......................#.......
.........##..#..#...#....##...#
..#..#...#.....#.........#..#..
.......#....#.........#...#..#.
.............#.................
.....##..#.....###....##.#.....
....#.#..#..#.#.....##....#..#.
......#..#..............#.##..#
..#..#......#.#.........#..#...
..........#.#..#....#.....#....
.....................#.........
...#.....#.......##..#.#.......
.....#...#..........###....#.#.
......#.....##............#...#
.......#..........#.#..#...#..#
#...#..#...........#..##..#....
.#......#.......##.....#..#....
...#..#....#.......##......#...
........#.......##...#.......#.
.....#........#................
......#........#....#..........
...#....#....###.........#.#...
##..............#......#..#.#..
.........##....#........#..#.#.
.......#.##.#........#........#
.....###..#..#...........#....#
.......#....##.......#.#...#...
#..............#.#....#..#...#.
#..#....#..#.#............#..#.
.#...##.#..................#...
...#...............##.........#
###..............#.#..#.#.#....
.#......#.#.....##.......#.....
...#.................#.#.......
.#...#....#...#..#......#...#..
...##....#........#.#.#..#.....
..#.....#........#....#.#......
...........#.#...#.............
......#.....#.....#.........#..
.#.##.###...#.##.......#.......
.............#....#.......#....
..............#...........#....
.............#..#.#.....#....#.
.......#........##...##..##....
..##...#............#..#......#
.............#...##.....#......
.#...##..##.#.........#.##...#.
+2
View File
@@ -0,0 +1,2 @@
167
736527114
+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(())
}