day3: solve part 1 & 2
This commit is contained in:
parent
6c90570d52
commit
3dd39bac7a
4 changed files with 798 additions and 0 deletions
323
day3/part1/input
Normal file
323
day3/part1/input
Normal file
|
@ -0,0 +1,323 @@
|
|||
.......#..#....#...#...#......#
|
||||
..##..#...##.###.#..#.....#.#..
|
||||
#..#.#....#......#..#.........#
|
||||
.#..##...#........#....#..#..#.
|
||||
#.#.#....###...#........#.....#
|
||||
.#...#.#.##.#.##...#.#.........
|
||||
####......#.......###.##.#.....
|
||||
..#...........#...#.#.#........
|
||||
.#.......#....###.####..#......
|
||||
...##........#....##.......##..
|
||||
.###......##.#......##....#.#.#
|
||||
........#.#......##...#......#.
|
||||
#....##.#..#...#.......#.......
|
||||
.#..##........##.........#....#
|
||||
.#..#..#...#....#.#......#.#...
|
||||
..#.#......##.#.......#....##..
|
||||
......##......#.#..##.#..#...#.
|
||||
.....##.......#.#....#.#.......
|
||||
........#.....#.....#..###.#...
|
||||
#........#..#.....#...#.#.#..#.
|
||||
.#..#.....#...#........#.....#.
|
||||
.#.#.....#.....#...#...........
|
||||
.....#.#..#..#...#..#..#..##..#
|
||||
##.#...#....#..#.##..#.....#.#.
|
||||
#.......####......#..#.#....#..
|
||||
......#.#...####.........#.#..#
|
||||
.#.........#..#.#...#..........
|
||||
...#####.#....#.#..#......#.#.#
|
||||
##....#.###....##...##..#.....#
|
||||
...........####.##.#....##.##..
|
||||
#.#.#..........#.#..##.#.######
|
||||
##...#..#...........###..#....#
|
||||
.#.#.#...##..........##.#...#..
|
||||
...#.#........#..##...#....#...
|
||||
......#..#...#..##....#.......#
|
||||
.#..#.......#..#......##....##.
|
||||
.......#.......#........#..##..
|
||||
...#...#...#.##......#.##.#....
|
||||
.........#.........#.#.#.##....
|
||||
..#...................#....#..#
|
||||
.........#..#.....#.#...#....#.
|
||||
#.#.#...#........#..###.#......
|
||||
#.#.#.####......##...#...#....#
|
||||
#...........##..#.#.#....#..#..
|
||||
........#..#.#...........##.#.#
|
||||
.#.........#...........#..#....
|
||||
#............##.#..#....##...##
|
||||
.#....##..#.#....#.......#..#..
|
||||
..#.#...#.#......####.......#..
|
||||
...#.#.......###......#.....#..
|
||||
#......#.......#.#...#.#..##...
|
||||
...#.....#...##.#.....#.#......
|
||||
#.#.#............#..#......#..#
|
||||
....#...#...##.##.##...##.#....
|
||||
..##........#..#........#...##.
|
||||
.......#..#...#.........#.....#
|
||||
...........#.#......#...#......
|
||||
...##..##..##..###..#..#..#..#.
|
||||
#..##.......##..#....#....#.#..
|
||||
#.#.##.#..##.....#....#.#......
|
||||
....#..##......#.#..#....#....#
|
||||
.#.#.........##...#......##.##.
|
||||
##...........#..#.....#.###....
|
||||
.#.###........#...#....##..#...
|
||||
......##.....#.................
|
||||
.#.##..#.#.......#......#.#.#..
|
||||
.#...#....#.##..........##.##..
|
||||
#...##......####.#....#....#...
|
||||
.#...#.##.#.#.....#...#........
|
||||
.#................#.##.#.###...
|
||||
...#.#..#.#.....##.....##....#.
|
||||
..##.#..#..##.....#....#...#.##
|
||||
........###.##..#..###.....#..#
|
||||
..##.....#.......#.#...##......
|
||||
#.#..###...##.###.##.#..#...#..
|
||||
#..#..#.#...#....#...##.....#.#
|
||||
#..................#........#..
|
||||
#.....#.......#.##....##....#..
|
||||
...#.............#.....#...#...
|
||||
...#...#.##..##.....#........#.
|
||||
.......#........##....###..##..
|
||||
.#....#....#.#..#......#....#.#
|
||||
..........#..#.#.....##...#.##.
|
||||
.#...##.#...........#.#.......#
|
||||
..#.##.....#.###.#.............
|
||||
..#....###..........#.#.#......
|
||||
#.....#.####..#.#......#..#.#.#
|
||||
...#........#..#...............
|
||||
.###.#.##.....#.#...........#..
|
||||
..#....#..#....#..##....#......
|
||||
......#..#.....#.#.##.......#.#
|
||||
###..#...#.#..#....#..##.###..#
|
||||
.#....##.###........##...##.#.#
|
||||
........##..##.#....##..#....#.
|
||||
...#..#....#.#....#...#...##...
|
||||
#.....#......#.##........#....#
|
||||
....#....###.##...#.#.##....#..
|
||||
......#.##..#.#..........#...#.
|
||||
...........#...#....##...#....#
|
||||
......#.#.........#....#.#.#...
|
||||
.###..........#.###.##....#...#
|
||||
...##.......#......#....#....#.
|
||||
#..#...#.#..####...#......#..#.
|
||||
....##..#.#.........#..........
|
||||
.##.###.##....##.####....#...#.
|
||||
..##.......#........#...#..#...
|
||||
....#####..........###....#....
|
||||
.#.#..#.#.#....#..#............
|
||||
........#.....#....#.......##..
|
||||
...........##....##..##.....##.
|
||||
..###........#.#.#..#....##...#
|
||||
.....#...........##......#..#..
|
||||
...##........#.##.#......##..#.
|
||||
##..#....#............##..#..#.
|
||||
.#.....#...##.##..............#
|
||||
#..##........#...#...#......##.
|
||||
......##.....#.......####.##..#
|
||||
...#.#....#...#..#.............
|
||||
..#...#..##.###..#..#.......##.
|
||||
##....###.......#...#..#.......
|
||||
#..#.....###.....#.#.........#.
|
||||
#.#....#.............#...#.....
|
||||
..#.#.##..........#.....##.#...
|
||||
.....##......#..#..#.....#..#..
|
||||
##.#..#..#.##......###....#..#.
|
||||
...#............##...#..##.....
|
||||
.#..#....#.........#......#.##.
|
||||
.##.##...#..............#..#.##
|
||||
...#....#...###...#...#....#..#
|
||||
..#...#..####..#....#.#...##..#
|
||||
..............##.##.......##...
|
||||
..##.#..##...........#.#.#...#.
|
||||
..................##.####.###..
|
||||
.#...........#.......#......#..
|
||||
.#.#.#...#....#.........##...##
|
||||
....#..........#.#....#.#.....#
|
||||
..........#.#..........#.#.....
|
||||
...........#.....#.#......#....
|
||||
........#..#.#.#.#.............
|
||||
...###...##...##..####.##......
|
||||
.#..#......###.....#...#.....#.
|
||||
.........##............#.#.....
|
||||
#.#..#.#.#....###.#.#..#..#..##
|
||||
..........#...#.##.#..#..#....#
|
||||
#..#.......##....#..##........#
|
||||
##.#...#....##.............#...
|
||||
....#........#......##..#..#.##
|
||||
.................#.#.#.#.#.....
|
||||
...........#.#.....#.......#...
|
||||
#.......#.......#............#.
|
||||
....#...........#.#.##.....#..#
|
||||
#...#.....#....#..##...#.......
|
||||
..#.....#.....#.##.##....#.....
|
||||
.#.#..#...#..#..##.....##..#...
|
||||
.#.#....#.........####.........
|
||||
#...#..####.....#...#..##......
|
||||
..#...##.#.....#...#.....##....
|
||||
.#...#.....#.#.#......#.......#
|
||||
..#.....##.#..#.#...##.........
|
||||
##.#...#..#....#....#.##.##...#
|
||||
.#..#....#..##.#.......#..#....
|
||||
...##.#......#...###.......#...
|
||||
...#..#.........##.####........
|
||||
#.#..#..##...........#..#......
|
||||
.#...#.#......#.#..........#...
|
||||
...###...#.......#.....#.#...##
|
||||
..#....#.#.##..........##...#..
|
||||
.....###.........#.....#..##..#
|
||||
.......##.....#.#.....#.#..##..
|
||||
.#.#.###..##.......##...#......
|
||||
......#.....#................##
|
||||
.#......##..##.#.#...#...#...##
|
||||
.#...#......#.......#.#........
|
||||
.#..........###...#..#...#.....
|
||||
.........##.....#.#..#..#.#...#
|
||||
#...#...#.........#..#..#....#.
|
||||
###.......#.#.....#....##......
|
||||
.#..#......#..#...........#..#.
|
||||
..##....##..##...#......#......
|
||||
.#........#....#...#....#.....#
|
||||
.#.......#...#...#..##.#.#..#..
|
||||
#...#........#.##.....#.....#..
|
||||
#..##.....#..........#...#...##
|
||||
............#...............#..
|
||||
.#.##...#.....#.#..#..#..#.....
|
||||
.#.#.#...#........#....#...##..
|
||||
##......#.....#.###.#...#.#..#.
|
||||
.........##..#..#.#...#...#...#
|
||||
#...#.#....#..#..#.....#.......
|
||||
.......#.###...#.............#.
|
||||
..#.....#.#.#..###.#....#.....#
|
||||
....#...#.#....#.#..........#..
|
||||
..#......#.###.#.#..#.....#...#
|
||||
#............#..##...##......#.
|
||||
#...........#..#....#.###..###.
|
||||
.#.##.#.#.......#.............#
|
||||
..............#................
|
||||
..#.#.....#.....#...#......#...
|
||||
.#.#.#..#..#.#...........##....
|
||||
.....##.#......#..#.##....#....
|
||||
.......##..#.#.#..#............
|
||||
..#.....#.....#.###..#.....#.#.
|
||||
......##.....#..##.#...#.....#.
|
||||
...#...#....#..#..#........#...
|
||||
..#.##..#....#.........#.#..#..
|
||||
#....#.....###.....#......#....
|
||||
##.....#..#..##.........#.##.##
|
||||
.#.#....#.#..........#.........
|
||||
.##.#...#..#.......#.##...#....
|
||||
...#...#.....#....#...#.#..#...
|
||||
.....#....#.....#.....#.#......
|
||||
...........#.#.......#.......#.
|
||||
.........##.###.##........#....
|
||||
#..##.....#...#.#..............
|
||||
.#...#....##........#.#..#....#
|
||||
..#...#........#...#..#.##.#..#
|
||||
........#...#.....##.#.#....#.#
|
||||
#..#.......###.#....#.#.#......
|
||||
.......#...##....#...#..##..#..
|
||||
.....##........#.#.#..#....##..
|
||||
.#....#..#.#...........#......#
|
||||
...##....#.##.....##.......#...
|
||||
.##..#..#....#.#....#..#....##.
|
||||
..#....#.....###.......#..##..#
|
||||
....#.......#....##..#....#..##
|
||||
....#......##..#....#.#...#.#..
|
||||
.##.#......##..................
|
||||
##.#....#........#..#..#...##.#
|
||||
.......#..#.#...##.....#.#.....
|
||||
..##.#...........#.#.#..#.#.#..
|
||||
.....#....#......#..#.......#..
|
||||
#.#...#.####..##.......#..##...
|
||||
...#....#.....#.##.#..#.##..#..
|
||||
.#.......#......##........##.#.
|
||||
.......#.#...#..#...#..##.#....
|
||||
.#....#........#.#.....##..#..#
|
||||
#..#.....#..#.............#...#
|
||||
#...#....#..#...###..#...#.#...
|
||||
.#..#.....#..........#..##.####
|
||||
#.#.#.#.##.#.#.....##.#........
|
||||
...#....##....#...#..##.......#
|
||||
..##.##.#.#........#..........#
|
||||
..###........###..#..........#.
|
||||
...#......#..##.#........#..#..
|
||||
#.#.#..#........#..#..........#
|
||||
...#........#..##.#...#.###....
|
||||
##......#.####.#....#......#...
|
||||
.#..#......#................#..
|
||||
#.#........#.#.....##.....##...
|
||||
#...............#..#.......#.#.
|
||||
.##..#...........##..#..#.#....
|
||||
#......#.#.......#.#.#.##..#.##
|
||||
.....##.#..###.............##..
|
||||
....##.........#..#...#........
|
||||
.....#.....#.#.#..#.#..........
|
||||
#.........#....##.#.##.....#..#
|
||||
.#.........#......#.#.##.#.#...
|
||||
##.........#.....#..#.#..#.##.#
|
||||
....#......##...#.....#..#..###
|
||||
..#..............#...#..####...
|
||||
#....#...##.#.......#...#..#...
|
||||
#.......###.#.#.......#.......#
|
||||
...##....#.#...........#...###.
|
||||
...........#..#.#.....#..##..#.
|
||||
..#.........#..###..#.....#...#
|
||||
..#.#.....#.#.#...#.#.#......#.
|
||||
........#.....#.#......##....##
|
||||
##.#.#...#.#........#.....#...#
|
||||
........#....#...............#.
|
||||
##.###......####...#####..#....
|
||||
...##...#..#....#........#...#.
|
||||
...###.#..................##.#.
|
||||
##.#.......###.......#...#.#...
|
||||
....#..#.#...#...#....#.#.#..##
|
||||
....#...........#..#...........
|
||||
#..#.#..#...#...#..#...........
|
||||
...#...#.#....#..#....#........
|
||||
#....#.......#.##........#..#..
|
||||
.....#...#..#................#.
|
||||
#......#.......#..........##..#
|
||||
.#....#.#......#.#...#....##..#
|
||||
...#.##...#......#.#...##...##.
|
||||
..#...#..##...#...#....#.......
|
||||
.....#....#.#.#..........#.#...
|
||||
...#...#..#....#..#.#..........
|
||||
......#.#..........##.......#..
|
||||
.#...##.#.#...#..##..#...#.....
|
||||
..#..#.........#........#.#.#..
|
||||
#.#..##..#.....##......#.....#.
|
||||
#..#.....#.#....#...#.#....#.#.
|
||||
......#........##.#..#...#.....
|
||||
...#.##.#.#......#.#..##...#..#
|
||||
....#..###..#..#.....###....##.
|
||||
.....#...#.#.....#..........#.#
|
||||
.#...##..##.....#..#...#.#.#...
|
||||
.##.#......##...##..#...#.....#
|
||||
.#.##....#...#.##.#.#...#.#...#
|
||||
....#.#...#....###.#.....#.....
|
||||
#.....####................#..#.
|
||||
....#.....#...#.#.......##.#...
|
||||
.#...##.#...#..#...........#.#.
|
||||
..#####..#.#...#...##........#.
|
||||
...#...##........#...#.#....###
|
||||
........#.#.#..#.....#.......#.
|
||||
...#...#..##............##.....
|
||||
#.#..###....###.#...#.#...##.##
|
||||
..#.##...#......#..#.........##
|
||||
.##..#..#.....#..#.........#.#.
|
||||
.#..#.#....#.##...#..#.##....##
|
||||
..#...#.#...##.#.#...#...#....#
|
||||
#..........#.......##..##....#.
|
||||
#...###.#......#....#.........#
|
||||
#.....#...##.......##....##....
|
||||
.##.#..#.##......#.##....#..#..
|
||||
............#.#....##.#..#....#
|
||||
.#.........##.##...#....#.....#
|
||||
##....##..#..#....##...#.....##
|
||||
...#.....#...........#.....##..
|
||||
......#...#.........#.......#..
|
||||
............#...##.#.....#.#.#.
|
||||
.#........##..........#.....#.#
|
||||
.###.........#.....#.##...#....
|
||||
.##..#...##...#..#..#.##.......
|
39
day3/part1/main.d
Normal file
39
day3/part1/main.d
Normal file
|
@ -0,0 +1,39 @@
|
|||
import std;
|
||||
|
||||
void main()
|
||||
{
|
||||
File("input", "r").byLineCopy.array.countTrees(3, 1).writeln;
|
||||
}
|
||||
|
||||
ulong countTrees(T)(T input, int angleX, int angleY)
|
||||
in(input.length > 0)
|
||||
{
|
||||
immutable width = input[0].length;
|
||||
size_t count = 0;
|
||||
size_t x = 0;
|
||||
return input.stride(angleY).map!((row) {
|
||||
auto result = row[x];
|
||||
x = (x + angleX) % width;
|
||||
return result;
|
||||
})
|
||||
.filter!(pos => pos == '#')
|
||||
.count;
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
auto input = `..##.......
|
||||
#...#...#..
|
||||
.#....#..#.
|
||||
..#.#...#.#
|
||||
.#...##..#.
|
||||
..#.##.....
|
||||
.#.#.#....#
|
||||
.#........#
|
||||
#.##...#...
|
||||
#...##....#
|
||||
.#..#...#.#`.byChar.splitter("\n").map!array.array;
|
||||
|
||||
assert(input.countTrees(3, 1) == 7);
|
||||
|
||||
}
|
323
day3/part2/input
Normal file
323
day3/part2/input
Normal file
|
@ -0,0 +1,323 @@
|
|||
.......#..#....#...#...#......#
|
||||
..##..#...##.###.#..#.....#.#..
|
||||
#..#.#....#......#..#.........#
|
||||
.#..##...#........#....#..#..#.
|
||||
#.#.#....###...#........#.....#
|
||||
.#...#.#.##.#.##...#.#.........
|
||||
####......#.......###.##.#.....
|
||||
..#...........#...#.#.#........
|
||||
.#.......#....###.####..#......
|
||||
...##........#....##.......##..
|
||||
.###......##.#......##....#.#.#
|
||||
........#.#......##...#......#.
|
||||
#....##.#..#...#.......#.......
|
||||
.#..##........##.........#....#
|
||||
.#..#..#...#....#.#......#.#...
|
||||
..#.#......##.#.......#....##..
|
||||
......##......#.#..##.#..#...#.
|
||||
.....##.......#.#....#.#.......
|
||||
........#.....#.....#..###.#...
|
||||
#........#..#.....#...#.#.#..#.
|
||||
.#..#.....#...#........#.....#.
|
||||
.#.#.....#.....#...#...........
|
||||
.....#.#..#..#...#..#..#..##..#
|
||||
##.#...#....#..#.##..#.....#.#.
|
||||
#.......####......#..#.#....#..
|
||||
......#.#...####.........#.#..#
|
||||
.#.........#..#.#...#..........
|
||||
...#####.#....#.#..#......#.#.#
|
||||
##....#.###....##...##..#.....#
|
||||
...........####.##.#....##.##..
|
||||
#.#.#..........#.#..##.#.######
|
||||
##...#..#...........###..#....#
|
||||
.#.#.#...##..........##.#...#..
|
||||
...#.#........#..##...#....#...
|
||||
......#..#...#..##....#.......#
|
||||
.#..#.......#..#......##....##.
|
||||
.......#.......#........#..##..
|
||||
...#...#...#.##......#.##.#....
|
||||
.........#.........#.#.#.##....
|
||||
..#...................#....#..#
|
||||
.........#..#.....#.#...#....#.
|
||||
#.#.#...#........#..###.#......
|
||||
#.#.#.####......##...#...#....#
|
||||
#...........##..#.#.#....#..#..
|
||||
........#..#.#...........##.#.#
|
||||
.#.........#...........#..#....
|
||||
#............##.#..#....##...##
|
||||
.#....##..#.#....#.......#..#..
|
||||
..#.#...#.#......####.......#..
|
||||
...#.#.......###......#.....#..
|
||||
#......#.......#.#...#.#..##...
|
||||
...#.....#...##.#.....#.#......
|
||||
#.#.#............#..#......#..#
|
||||
....#...#...##.##.##...##.#....
|
||||
..##........#..#........#...##.
|
||||
.......#..#...#.........#.....#
|
||||
...........#.#......#...#......
|
||||
...##..##..##..###..#..#..#..#.
|
||||
#..##.......##..#....#....#.#..
|
||||
#.#.##.#..##.....#....#.#......
|
||||
....#..##......#.#..#....#....#
|
||||
.#.#.........##...#......##.##.
|
||||
##...........#..#.....#.###....
|
||||
.#.###........#...#....##..#...
|
||||
......##.....#.................
|
||||
.#.##..#.#.......#......#.#.#..
|
||||
.#...#....#.##..........##.##..
|
||||
#...##......####.#....#....#...
|
||||
.#...#.##.#.#.....#...#........
|
||||
.#................#.##.#.###...
|
||||
...#.#..#.#.....##.....##....#.
|
||||
..##.#..#..##.....#....#...#.##
|
||||
........###.##..#..###.....#..#
|
||||
..##.....#.......#.#...##......
|
||||
#.#..###...##.###.##.#..#...#..
|
||||
#..#..#.#...#....#...##.....#.#
|
||||
#..................#........#..
|
||||
#.....#.......#.##....##....#..
|
||||
...#.............#.....#...#...
|
||||
...#...#.##..##.....#........#.
|
||||
.......#........##....###..##..
|
||||
.#....#....#.#..#......#....#.#
|
||||
..........#..#.#.....##...#.##.
|
||||
.#...##.#...........#.#.......#
|
||||
..#.##.....#.###.#.............
|
||||
..#....###..........#.#.#......
|
||||
#.....#.####..#.#......#..#.#.#
|
||||
...#........#..#...............
|
||||
.###.#.##.....#.#...........#..
|
||||
..#....#..#....#..##....#......
|
||||
......#..#.....#.#.##.......#.#
|
||||
###..#...#.#..#....#..##.###..#
|
||||
.#....##.###........##...##.#.#
|
||||
........##..##.#....##..#....#.
|
||||
...#..#....#.#....#...#...##...
|
||||
#.....#......#.##........#....#
|
||||
....#....###.##...#.#.##....#..
|
||||
......#.##..#.#..........#...#.
|
||||
...........#...#....##...#....#
|
||||
......#.#.........#....#.#.#...
|
||||
.###..........#.###.##....#...#
|
||||
...##.......#......#....#....#.
|
||||
#..#...#.#..####...#......#..#.
|
||||
....##..#.#.........#..........
|
||||
.##.###.##....##.####....#...#.
|
||||
..##.......#........#...#..#...
|
||||
....#####..........###....#....
|
||||
.#.#..#.#.#....#..#............
|
||||
........#.....#....#.......##..
|
||||
...........##....##..##.....##.
|
||||
..###........#.#.#..#....##...#
|
||||
.....#...........##......#..#..
|
||||
...##........#.##.#......##..#.
|
||||
##..#....#............##..#..#.
|
||||
.#.....#...##.##..............#
|
||||
#..##........#...#...#......##.
|
||||
......##.....#.......####.##..#
|
||||
...#.#....#...#..#.............
|
||||
..#...#..##.###..#..#.......##.
|
||||
##....###.......#...#..#.......
|
||||
#..#.....###.....#.#.........#.
|
||||
#.#....#.............#...#.....
|
||||
..#.#.##..........#.....##.#...
|
||||
.....##......#..#..#.....#..#..
|
||||
##.#..#..#.##......###....#..#.
|
||||
...#............##...#..##.....
|
||||
.#..#....#.........#......#.##.
|
||||
.##.##...#..............#..#.##
|
||||
...#....#...###...#...#....#..#
|
||||
..#...#..####..#....#.#...##..#
|
||||
..............##.##.......##...
|
||||
..##.#..##...........#.#.#...#.
|
||||
..................##.####.###..
|
||||
.#...........#.......#......#..
|
||||
.#.#.#...#....#.........##...##
|
||||
....#..........#.#....#.#.....#
|
||||
..........#.#..........#.#.....
|
||||
...........#.....#.#......#....
|
||||
........#..#.#.#.#.............
|
||||
...###...##...##..####.##......
|
||||
.#..#......###.....#...#.....#.
|
||||
.........##............#.#.....
|
||||
#.#..#.#.#....###.#.#..#..#..##
|
||||
..........#...#.##.#..#..#....#
|
||||
#..#.......##....#..##........#
|
||||
##.#...#....##.............#...
|
||||
....#........#......##..#..#.##
|
||||
.................#.#.#.#.#.....
|
||||
...........#.#.....#.......#...
|
||||
#.......#.......#............#.
|
||||
....#...........#.#.##.....#..#
|
||||
#...#.....#....#..##...#.......
|
||||
..#.....#.....#.##.##....#.....
|
||||
.#.#..#...#..#..##.....##..#...
|
||||
.#.#....#.........####.........
|
||||
#...#..####.....#...#..##......
|
||||
..#...##.#.....#...#.....##....
|
||||
.#...#.....#.#.#......#.......#
|
||||
..#.....##.#..#.#...##.........
|
||||
##.#...#..#....#....#.##.##...#
|
||||
.#..#....#..##.#.......#..#....
|
||||
...##.#......#...###.......#...
|
||||
...#..#.........##.####........
|
||||
#.#..#..##...........#..#......
|
||||
.#...#.#......#.#..........#...
|
||||
...###...#.......#.....#.#...##
|
||||
..#....#.#.##..........##...#..
|
||||
.....###.........#.....#..##..#
|
||||
.......##.....#.#.....#.#..##..
|
||||
.#.#.###..##.......##...#......
|
||||
......#.....#................##
|
||||
.#......##..##.#.#...#...#...##
|
||||
.#...#......#.......#.#........
|
||||
.#..........###...#..#...#.....
|
||||
.........##.....#.#..#..#.#...#
|
||||
#...#...#.........#..#..#....#.
|
||||
###.......#.#.....#....##......
|
||||
.#..#......#..#...........#..#.
|
||||
..##....##..##...#......#......
|
||||
.#........#....#...#....#.....#
|
||||
.#.......#...#...#..##.#.#..#..
|
||||
#...#........#.##.....#.....#..
|
||||
#..##.....#..........#...#...##
|
||||
............#...............#..
|
||||
.#.##...#.....#.#..#..#..#.....
|
||||
.#.#.#...#........#....#...##..
|
||||
##......#.....#.###.#...#.#..#.
|
||||
.........##..#..#.#...#...#...#
|
||||
#...#.#....#..#..#.....#.......
|
||||
.......#.###...#.............#.
|
||||
..#.....#.#.#..###.#....#.....#
|
||||
....#...#.#....#.#..........#..
|
||||
..#......#.###.#.#..#.....#...#
|
||||
#............#..##...##......#.
|
||||
#...........#..#....#.###..###.
|
||||
.#.##.#.#.......#.............#
|
||||
..............#................
|
||||
..#.#.....#.....#...#......#...
|
||||
.#.#.#..#..#.#...........##....
|
||||
.....##.#......#..#.##....#....
|
||||
.......##..#.#.#..#............
|
||||
..#.....#.....#.###..#.....#.#.
|
||||
......##.....#..##.#...#.....#.
|
||||
...#...#....#..#..#........#...
|
||||
..#.##..#....#.........#.#..#..
|
||||
#....#.....###.....#......#....
|
||||
##.....#..#..##.........#.##.##
|
||||
.#.#....#.#..........#.........
|
||||
.##.#...#..#.......#.##...#....
|
||||
...#...#.....#....#...#.#..#...
|
||||
.....#....#.....#.....#.#......
|
||||
...........#.#.......#.......#.
|
||||
.........##.###.##........#....
|
||||
#..##.....#...#.#..............
|
||||
.#...#....##........#.#..#....#
|
||||
..#...#........#...#..#.##.#..#
|
||||
........#...#.....##.#.#....#.#
|
||||
#..#.......###.#....#.#.#......
|
||||
.......#...##....#...#..##..#..
|
||||
.....##........#.#.#..#....##..
|
||||
.#....#..#.#...........#......#
|
||||
...##....#.##.....##.......#...
|
||||
.##..#..#....#.#....#..#....##.
|
||||
..#....#.....###.......#..##..#
|
||||
....#.......#....##..#....#..##
|
||||
....#......##..#....#.#...#.#..
|
||||
.##.#......##..................
|
||||
##.#....#........#..#..#...##.#
|
||||
.......#..#.#...##.....#.#.....
|
||||
..##.#...........#.#.#..#.#.#..
|
||||
.....#....#......#..#.......#..
|
||||
#.#...#.####..##.......#..##...
|
||||
...#....#.....#.##.#..#.##..#..
|
||||
.#.......#......##........##.#.
|
||||
.......#.#...#..#...#..##.#....
|
||||
.#....#........#.#.....##..#..#
|
||||
#..#.....#..#.............#...#
|
||||
#...#....#..#...###..#...#.#...
|
||||
.#..#.....#..........#..##.####
|
||||
#.#.#.#.##.#.#.....##.#........
|
||||
...#....##....#...#..##.......#
|
||||
..##.##.#.#........#..........#
|
||||
..###........###..#..........#.
|
||||
...#......#..##.#........#..#..
|
||||
#.#.#..#........#..#..........#
|
||||
...#........#..##.#...#.###....
|
||||
##......#.####.#....#......#...
|
||||
.#..#......#................#..
|
||||
#.#........#.#.....##.....##...
|
||||
#...............#..#.......#.#.
|
||||
.##..#...........##..#..#.#....
|
||||
#......#.#.......#.#.#.##..#.##
|
||||
.....##.#..###.............##..
|
||||
....##.........#..#...#........
|
||||
.....#.....#.#.#..#.#..........
|
||||
#.........#....##.#.##.....#..#
|
||||
.#.........#......#.#.##.#.#...
|
||||
##.........#.....#..#.#..#.##.#
|
||||
....#......##...#.....#..#..###
|
||||
..#..............#...#..####...
|
||||
#....#...##.#.......#...#..#...
|
||||
#.......###.#.#.......#.......#
|
||||
...##....#.#...........#...###.
|
||||
...........#..#.#.....#..##..#.
|
||||
..#.........#..###..#.....#...#
|
||||
..#.#.....#.#.#...#.#.#......#.
|
||||
........#.....#.#......##....##
|
||||
##.#.#...#.#........#.....#...#
|
||||
........#....#...............#.
|
||||
##.###......####...#####..#....
|
||||
...##...#..#....#........#...#.
|
||||
...###.#..................##.#.
|
||||
##.#.......###.......#...#.#...
|
||||
....#..#.#...#...#....#.#.#..##
|
||||
....#...........#..#...........
|
||||
#..#.#..#...#...#..#...........
|
||||
...#...#.#....#..#....#........
|
||||
#....#.......#.##........#..#..
|
||||
.....#...#..#................#.
|
||||
#......#.......#..........##..#
|
||||
.#....#.#......#.#...#....##..#
|
||||
...#.##...#......#.#...##...##.
|
||||
..#...#..##...#...#....#.......
|
||||
.....#....#.#.#..........#.#...
|
||||
...#...#..#....#..#.#..........
|
||||
......#.#..........##.......#..
|
||||
.#...##.#.#...#..##..#...#.....
|
||||
..#..#.........#........#.#.#..
|
||||
#.#..##..#.....##......#.....#.
|
||||
#..#.....#.#....#...#.#....#.#.
|
||||
......#........##.#..#...#.....
|
||||
...#.##.#.#......#.#..##...#..#
|
||||
....#..###..#..#.....###....##.
|
||||
.....#...#.#.....#..........#.#
|
||||
.#...##..##.....#..#...#.#.#...
|
||||
.##.#......##...##..#...#.....#
|
||||
.#.##....#...#.##.#.#...#.#...#
|
||||
....#.#...#....###.#.....#.....
|
||||
#.....####................#..#.
|
||||
....#.....#...#.#.......##.#...
|
||||
.#...##.#...#..#...........#.#.
|
||||
..#####..#.#...#...##........#.
|
||||
...#...##........#...#.#....###
|
||||
........#.#.#..#.....#.......#.
|
||||
...#...#..##............##.....
|
||||
#.#..###....###.#...#.#...##.##
|
||||
..#.##...#......#..#.........##
|
||||
.##..#..#.....#..#.........#.#.
|
||||
.#..#.#....#.##...#..#.##....##
|
||||
..#...#.#...##.#.#...#...#....#
|
||||
#..........#.......##..##....#.
|
||||
#...###.#......#....#.........#
|
||||
#.....#...##.......##....##....
|
||||
.##.#..#.##......#.##....#..#..
|
||||
............#.#....##.#..#....#
|
||||
.#.........##.##...#....#.....#
|
||||
##....##..#..#....##...#.....##
|
||||
...#.....#...........#.....##..
|
||||
......#...#.........#.......#..
|
||||
............#...##.#.....#.#.#.
|
||||
.#........##..........#.....#.#
|
||||
.###.........#.....#.##...#....
|
||||
.##..#...##...#..#..#.##.......
|
113
day3/part2/main.d
Normal file
113
day3/part2/main.d
Normal file
|
@ -0,0 +1,113 @@
|
|||
import std;
|
||||
|
||||
void main()
|
||||
{
|
||||
File("input", "r").byLineCopy.array.productOfTreesForDefaultSlopes.writeln;
|
||||
}
|
||||
|
||||
alias product = partial!(reverseArgs!(fold!((a, b) => a * b)), 1UL);
|
||||
|
||||
auto productOfTreesForDefaultSlopes(const char[][] input)
|
||||
{
|
||||
return [tuple(1, 1), tuple(3, 1), tuple(5, 1), tuple(7, 1), tuple(1, 2)].map!(
|
||||
slope => input.dup.countTrees(slope[0], slope[1])).product;
|
||||
}
|
||||
|
||||
auto countTrees(const char[][] input, int angleX, int angleY)
|
||||
in(input.length > 0)
|
||||
{
|
||||
immutable width = input[0].length;
|
||||
size_t x = 0;
|
||||
return input.stride(angleY).map!((row) {
|
||||
auto result = row[x];
|
||||
x = (x + angleX) % width;
|
||||
return result;
|
||||
})
|
||||
.filter!(pos => pos == '#')
|
||||
.count;
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
auto input = `..##.......
|
||||
#...#...#..
|
||||
.#....#..#.
|
||||
..#.#...#.#
|
||||
.#...##..#.
|
||||
..#.##.....
|
||||
.#.#.#....#
|
||||
.#........#
|
||||
#.##...#...
|
||||
#...##....#
|
||||
.#..#...#.#`.byChar.splitter("\n").map!array.array;
|
||||
|
||||
assert(input.countTrees(1, 1) == 2);
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
auto input = `..##.......
|
||||
#...#...#..
|
||||
.#....#..#.
|
||||
..#.#...#.#
|
||||
.#...##..#.
|
||||
..#.##.....
|
||||
.#.#.#....#
|
||||
.#........#
|
||||
#.##...#...
|
||||
#...##....#
|
||||
.#..#...#.#`.byChar.splitter("\n").map!array.array;
|
||||
|
||||
assert(input.countTrees(3, 1) == 7);
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
auto input = `..##.......
|
||||
#...#...#..
|
||||
.#....#..#.
|
||||
..#.#...#.#
|
||||
.#...##..#.
|
||||
..#.##.....
|
||||
.#.#.#....#
|
||||
.#........#
|
||||
#.##...#...
|
||||
#...##....#
|
||||
.#..#...#.#`.byChar.splitter("\n").map!array.array;
|
||||
|
||||
assert(input.countTrees(5, 1) == 3);
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
auto input = `..##.......
|
||||
#...#...#..
|
||||
.#....#..#.
|
||||
..#.#...#.#
|
||||
.#...##..#.
|
||||
..#.##.....
|
||||
.#.#.#....#
|
||||
.#........#
|
||||
#.##...#...
|
||||
#...##....#
|
||||
.#..#...#.#`.byChar.splitter("\n").map!array.array;
|
||||
|
||||
assert(input.countTrees(7, 1) == 4);
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
auto input = `..##.......
|
||||
#...#...#..
|
||||
.#....#..#.
|
||||
..#.#...#.#
|
||||
.#...##..#.
|
||||
..#.##.....
|
||||
.#.#.#....#
|
||||
.#........#
|
||||
#.##...#...
|
||||
#...##....#
|
||||
.#..#...#.#`.byChar.splitter("\n").map!array.array;
|
||||
|
||||
assert(input.countTrees(1, 2) == 2);
|
||||
}
|
Loading…
Reference in a new issue