day 3 solutions
This commit is contained in:
4 files changed
+362
No files matched your search
@@ -0,0 +1,323 @@
|
|||||||
|
.............#...#....#.....##.
|
||||||
|
.#...##.........#.#.........#.#
|
||||||
|
.....##......#.......#.........
|
||||||
|
.......#...........#.#.........
|
||||||
|
#...........#...#..#.#......#..
|
||||||
|
.........##....#.#...#.........
|
||||||
|
.....#.........#.#...........#.
|
||||||
|
....#...............##....##...
|
||||||
|
#.#.............#..#.......#.#.
|
||||||
|
...#...........................
|
||||||
|
......#..#....#.............#..
|
||||||
|
........#......#.......#.......
|
||||||
|
....#.....#..#.#...#.........#.
|
||||||
|
..#.#.......#.##...#....#.....#
|
||||||
|
...........#.........#..#......
|
||||||
|
#...........#.#..#...#.#.#....#
|
||||||
|
........#......................
|
||||||
|
....#.#.....#....#.......#..#..
|
||||||
|
.............................#.
|
||||||
|
....##..........#.....##......#
|
||||||
|
......#.....................#..
|
||||||
|
..#.....##.......#.............
|
||||||
|
....#.#..............#.#.......
|
||||||
|
..#.#........#.....#..##.......
|
||||||
|
.....#...##.........##....#.#..
|
||||||
|
.#....#..#..#...........#......
|
||||||
|
.............#.....##........#.
|
||||||
|
..#....#............#.........#
|
||||||
|
###..........#........#.......#
|
||||||
|
#...#..#.#.#.........#..#......
|
||||||
|
..#....#......#.............#..
|
||||||
|
#...#........#..#...#.....#....
|
||||||
|
.#..........#.#........#.......
|
||||||
|
#.....#.........#..#......#....
|
||||||
|
....#....##........#......#....
|
||||||
|
.......#....#.....#..#..#.....#
|
||||||
|
.........#...#.#...#.##........
|
||||||
|
.##.##...........#..##..#......
|
||||||
|
.#.##....#........#...#........
|
||||||
|
.......##.........##.####.....#
|
||||||
|
....#..##....#.................
|
||||||
|
.#........#..........#.........
|
||||||
|
##....##..........##........#..
|
||||||
|
#......#...........#....#..#...
|
||||||
|
.......#..#....##..##.....#....
|
||||||
|
.........#.#.#...#.....#.......
|
||||||
|
......#...#...#....#......#....
|
||||||
|
##....#..........#....##....##.
|
||||||
|
###.........#...#...#..........
|
||||||
|
#.....##.#........#.......#....
|
||||||
|
#...............#...##.#......#
|
||||||
|
..#.....####.###......#......#.
|
||||||
|
....#.......#..........#.......
|
||||||
|
....##..............#.#.#......
|
||||||
|
.......##..#.......#...........
|
||||||
|
..#.......##....#.......###...#
|
||||||
|
........#...#.......#.#...#....
|
||||||
|
.........##....#..#....#.......
|
||||||
|
............#.#.......#.#......
|
||||||
|
.....#.....#...#....#.##.......
|
||||||
|
.......#.........#.......#.....
|
||||||
|
.#..#...#.....#............#.##
|
||||||
|
.......#.#......##.............
|
||||||
|
##.#......#.....#.#............
|
||||||
|
.#....#.....#............#...#.
|
||||||
|
.........#.......#.#...........
|
||||||
|
#............#.##...#..#...#.#.
|
||||||
|
......#....#.......#....#......
|
||||||
|
..........#........#..#.#......
|
||||||
|
#..##.......#.........#..#.....
|
||||||
|
.........#.....##........#.#..#
|
||||||
|
..#................#...........
|
||||||
|
....#..#........##.........#..#
|
||||||
|
###...#....##.#......##.......#
|
||||||
|
.......#......##..#.......#....
|
||||||
|
.......###...#...#..........##.
|
||||||
|
................#.......#......
|
||||||
|
.#......##.##........#.........
|
||||||
|
....##.#.....##.......#........
|
||||||
|
...........#...........#.....#.
|
||||||
|
..#........#..#.#...#.#........
|
||||||
|
#...............#...#.##.##.#.#
|
||||||
|
................#.......#......
|
||||||
|
.#..#......#........#.#........
|
||||||
|
...##..#.......#.......#..#....
|
||||||
|
.#.....#.#....##..#........#...
|
||||||
|
........##......#..........#...
|
||||||
|
.#.......#.......#...#..#......
|
||||||
|
.#..##.....#....#............#.
|
||||||
|
...#..........#....#........#..
|
||||||
|
..#.#..#.......#.#.##..........
|
||||||
|
#........###.....#.#.......#.##
|
||||||
|
.....#....##.............#.#..#
|
||||||
|
..##............#...##.........
|
||||||
|
...#.........#...........#.....
|
||||||
|
...#......#.#...#..###.........
|
||||||
|
.............#...##............
|
||||||
|
.....##..##.####.#..#......#.#.
|
||||||
|
.#...#.....#.....#.#.....#.....
|
||||||
|
.........#.......###.....#..##.
|
||||||
|
.##.#..#..........#.##.#.#.....
|
||||||
|
.#...#...#.#.##......#..#......
|
||||||
|
.............#......#......#...
|
||||||
|
#.....................#......#.
|
||||||
|
...#.....#.....#....#........#.
|
||||||
|
................##..#....#..#..
|
||||||
|
#.###...#.....................#
|
||||||
|
...#..#....#.......#.........#.
|
||||||
|
...........#..#..#...........#.
|
||||||
|
.......#..#......#....#.#......
|
||||||
|
..........#......#..#....#.....
|
||||||
|
.#.#.....#...#.#...#...#.#....#
|
||||||
|
.....#.......#............#...#
|
||||||
|
#.#....#......#......#........#
|
||||||
|
.#.#..#.........##...#.........
|
||||||
|
#..###..#......................
|
||||||
|
..#.#..#.......................
|
||||||
|
.##.....#...#......#..#........
|
||||||
|
...#...........#...#.......##..
|
||||||
|
..#...........#........#.......
|
||||||
|
........#....#.....#.#.........
|
||||||
|
..........#...........#.....#..
|
||||||
|
......#...#...##.#.............
|
||||||
|
.#...#...##....................
|
||||||
|
............###.........#......
|
||||||
|
.#.#...................#..#....
|
||||||
|
....#.#...#.#........#.#.......
|
||||||
|
....#...#...........#.......#.#
|
||||||
|
...........#............#...##.
|
||||||
|
.....####....#.#......#.#......
|
||||||
|
.##.............#............#.
|
||||||
|
......#.........#............##
|
||||||
|
#.#....#...##....#.......#....#
|
||||||
|
.....#.#....#..#..#...#..#.#..#
|
||||||
|
.........................#.....
|
||||||
|
......#.#....###.......#....#..
|
||||||
|
.....................##.#...#.#
|
||||||
|
..#.....#.#.#...#...#..........
|
||||||
|
........#..##........#...#...#.
|
||||||
|
..........#.#.##....#....##....
|
||||||
|
.............#..#..............
|
||||||
|
..#.##..#.......#...#..#..##..#
|
||||||
|
..#..#....#.#..........#..#....
|
||||||
|
..........#....#...#......#....
|
||||||
|
.##...#.......................#
|
||||||
|
.#.....#....#..........#.......
|
||||||
|
...........#..#......##.....#..
|
||||||
|
......###.#..##....#...#.##....
|
||||||
|
.......#..#.#....#.............
|
||||||
|
...#..#......##.........###.#..
|
||||||
|
...........#............##...#.
|
||||||
|
...#...#...........##.....#....
|
||||||
|
..................#............
|
||||||
|
.#.#.#...#..............#..##..
|
||||||
|
#.#....#........#.........#.##.
|
||||||
|
#.#.#.......#.....#..........#.
|
||||||
|
...##.....##.#.....#...........
|
||||||
|
.#....#..............##...##..#
|
||||||
|
........##.....................
|
||||||
|
#..#..#.....###.............#..
|
||||||
|
.......#...........#...........
|
||||||
|
.........#.....................
|
||||||
|
.......#...#...#.....##........
|
||||||
|
......#.........#........#.....
|
||||||
|
...#....##..#.####.#.......#.#.
|
||||||
|
.....#..#......#........#.##..#
|
||||||
|
.##....#......##......#...###..
|
||||||
|
..###.#........##.#...#.......#
|
||||||
|
............#......##....#.#...
|
||||||
|
.....#....##..##............##.
|
||||||
|
......##....#.#...#....#.#..#.#
|
||||||
|
.......#.........#.#.....#.#...
|
||||||
|
.......#.#....#................
|
||||||
|
.##...###..#.....#............#
|
||||||
|
#.#......#.#..#..#.#...#..#..#.
|
||||||
|
..#.#.#.....#............#...##
|
||||||
|
.##....###.........#..#........
|
||||||
|
.#..#.#..#.#....#.........##.#.
|
||||||
|
....#..#...##.##........#......
|
||||||
|
........#.#....##....#....#....
|
||||||
|
.......#..#..#.#..............#
|
||||||
|
#....#....#.....#....#.........
|
||||||
|
.#.###...#....#.......#........
|
||||||
|
.........#.#....##....#...#....
|
||||||
|
....#.............#.....##.##..
|
||||||
|
.....#.....#...##..#.#.##...##.
|
||||||
|
.........#..#................##
|
||||||
|
...##..##......#.....#........#
|
||||||
|
.#....#.....#.#......#..###....
|
||||||
|
#.....#..#.....................
|
||||||
|
....#.#...#.#.................#
|
||||||
|
.....##..................#.....
|
||||||
|
#....##...#.##..###...#........
|
||||||
|
##.#.........#.......#....#....
|
||||||
|
.#.#.............##..#.##......
|
||||||
|
...#.#..............#......#...
|
||||||
|
.............#.........#.....#.
|
||||||
|
#.......#........#......#.....#
|
||||||
|
.....#..............#.##.#.....
|
||||||
|
#......##...................#..
|
||||||
|
##.#.....#..........#........#.
|
||||||
|
#...........##...........#.....
|
||||||
|
.#...#.....#..#..##....#.......
|
||||||
|
.....#.........#....##.#.......
|
||||||
|
#........#......#.............#
|
||||||
|
.#..................####.#.....
|
||||||
|
#...#......#....##...#.#..#..#.
|
||||||
|
............#.#............#...
|
||||||
|
............#........#.#..###..
|
||||||
|
.#..#..#..#.#.#.....#.#........
|
||||||
|
#.....#..#.#...#..#..#........#
|
||||||
|
#................#....#..#.....
|
||||||
|
....#..#..#.#......#.#..#.....#
|
||||||
|
.#..#.......#...##.#.#.....#..#
|
||||||
|
#.....................#.......#
|
||||||
|
.............#.......#...#.....
|
||||||
|
....#......#.........###.##....
|
||||||
|
....#..#.......#.#........#....
|
||||||
|
....#...#....#.#....#..........
|
||||||
|
...#..#......#.............#...
|
||||||
|
.......###.#.........#....#.#..
|
||||||
|
..#.....##.....................
|
||||||
|
.#.#...........#..##....#......
|
||||||
|
..........##.#....#.#..........
|
||||||
|
...........#.#..#.#..#.#.......
|
||||||
|
..........#..#...#.....##......
|
||||||
|
.....#.........#...#.#..#......
|
||||||
|
#.#................#..........#
|
||||||
|
...#.....##.#..#...#.##.......#
|
||||||
|
.....##...........#............
|
||||||
|
.....#...#...#...#.#.....#.....
|
||||||
|
...........##..................
|
||||||
|
.........#................#....
|
||||||
|
......#.....#.#...#.......#....
|
||||||
|
...#...#........#...#...#.#.#..
|
||||||
|
...............##..#....##...#.
|
||||||
|
...#.#...........##.......##..#
|
||||||
|
...........#............#......
|
||||||
|
.#....#.#.......##.#.#.#.......
|
||||||
|
.....#.#..#.#.#................
|
||||||
|
.#............#...#.#..........
|
||||||
|
.....#.......#.#.......#.....#.
|
||||||
|
#....#...........#...#....##...
|
||||||
|
..#...#..##.....#....#..#......
|
||||||
|
#.#.........#..#.#..#.#......#.
|
||||||
|
................#......##......
|
||||||
|
#........#..............#....#.
|
||||||
|
........#..#.#........#..#..#..
|
||||||
|
#..........#......#............
|
||||||
|
..##.......#..#.......#....#...
|
||||||
|
.#........#..#..#.#.......##...
|
||||||
|
................#..............
|
||||||
|
#.................#...........#
|
||||||
|
##..#...................#....##
|
||||||
|
#..#....#.....#.#..#.#.#......#
|
||||||
|
#................#.#.#...#.....
|
||||||
|
.............#..#...#..##...#.#
|
||||||
|
#..................#...........
|
||||||
|
..............#..#.....##.....#
|
||||||
|
..#...............#.#..........
|
||||||
|
.....#......#....#..#...#......
|
||||||
|
.#......#...##.....###.....#...
|
||||||
|
...##...##.##....#.#.#..#......
|
||||||
|
....#.#.......#..##....#.##....
|
||||||
|
...#.........#.#.....#...#...##
|
||||||
|
.##.#.........##..#.##..#......
|
||||||
|
.#...#......#......#.........#.
|
||||||
|
.............#.................
|
||||||
|
..........#..............#.....
|
||||||
|
##...........#...#...###....#..
|
||||||
|
....#...............#..........
|
||||||
|
.......####.....#......#.......
|
||||||
|
........#..........#..#........
|
||||||
|
..#.......#..#.................
|
||||||
|
......#.#..##...##....#........
|
||||||
|
.##...#........#...#....#...#..
|
||||||
|
.......................#.......
|
||||||
|
.........##..#..#...#....##...#
|
||||||
|
..#..#...#.....#.........#..#..
|
||||||
|
.......#....#.........#...#..#.
|
||||||
|
.............#.................
|
||||||
|
.....##..#.....###....##.#.....
|
||||||
|
....#.#..#..#.#.....##....#..#.
|
||||||
|
......#..#..............#.##..#
|
||||||
|
..#..#......#.#.........#..#...
|
||||||
|
..........#.#..#....#.....#....
|
||||||
|
.....................#.........
|
||||||
|
...#.....#.......##..#.#.......
|
||||||
|
.....#...#..........###....#.#.
|
||||||
|
......#.....##............#...#
|
||||||
|
.......#..........#.#..#...#..#
|
||||||
|
#...#..#...........#..##..#....
|
||||||
|
.#......#.......##.....#..#....
|
||||||
|
...#..#....#.......##......#...
|
||||||
|
........#.......##...#.......#.
|
||||||
|
.....#........#................
|
||||||
|
......#........#....#..........
|
||||||
|
...#....#....###.........#.#...
|
||||||
|
##..............#......#..#.#..
|
||||||
|
.........##....#........#..#.#.
|
||||||
|
.......#.##.#........#........#
|
||||||
|
.....###..#..#...........#....#
|
||||||
|
.......#....##.......#.#...#...
|
||||||
|
#..............#.#....#..#...#.
|
||||||
|
#..#....#..#.#............#..#.
|
||||||
|
.#...##.#..................#...
|
||||||
|
...#...............##.........#
|
||||||
|
###..............#.#..#.#.#....
|
||||||
|
.#......#.#.....##.......#.....
|
||||||
|
...#.................#.#.......
|
||||||
|
.#...#....#...#..#......#...#..
|
||||||
|
...##....#........#.#.#..#.....
|
||||||
|
..#.....#........#....#.#......
|
||||||
|
...........#.#...#.............
|
||||||
|
......#.....#.....#.........#..
|
||||||
|
.#.##.###...#.##.......#.......
|
||||||
|
.............#....#.......#....
|
||||||
|
..............#...........#....
|
||||||
|
.............#..#.#.....#....#.
|
||||||
|
.......#........##...##..##....
|
||||||
|
..##...#............#..#......#
|
||||||
|
.............#...##.....#......
|
||||||
|
.#...##..##.#.........#.##...#.
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
167
|
||||||
|
736527114
|
||||||
@@ -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,6 +2,7 @@ use anyhow::Result;
|
|||||||
|
|
||||||
mod day01;
|
mod day01;
|
||||||
mod day02;
|
mod day02;
|
||||||
|
mod day03;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
@@ -14,5 +15,6 @@ mod utils;
|
|||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
println!("Day 01: {:?}", day01::run()?);
|
println!("Day 01: {:?}", day01::run()?);
|
||||||
println!("Day 02: {:?}", day02::run()?);
|
println!("Day 02: {:?}", day02::run()?);
|
||||||
|
println!("Day 03: {:?}", day03::run()?);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user