solve: day 3, part 1
This commit is contained in:
parent
f604270ea9
commit
6b01019193
5 changed files with 385 additions and 1 deletions
5
2020/03/README.ms
Normal file
5
2020/03/README.ms
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Day 3
|
||||||
|
|
||||||
|
## Part 1
|
||||||
|
|
||||||
|
Advent of Code _loves_ some cycles...
|
323
2020/03/input.txt
Normal file
323
2020/03/input.txt
Normal file
|
@ -0,0 +1,323 @@
|
||||||
|
......#...........#...#........
|
||||||
|
.#.....#...##.......#.....##...
|
||||||
|
......#.#....#.................
|
||||||
|
..............#.#.......#......
|
||||||
|
.....#.#...##...#.#..#..#..#..#
|
||||||
|
.......##...#..#...........#...
|
||||||
|
.......#.##.#...#.#.........#..
|
||||||
|
..#...##............##......#.#
|
||||||
|
.......#.......##......##.##.#.
|
||||||
|
...#...#........#....#........#
|
||||||
|
#............###.#......#.....#
|
||||||
|
..#........#....#..#..........#
|
||||||
|
..#..##....#......#..#......#..
|
||||||
|
........#......#......#..#..#..
|
||||||
|
..#...#....#..##.......#.#.....
|
||||||
|
.....#.#......#..#....#.##.#..#
|
||||||
|
......###.....#..#..........#..
|
||||||
|
.#................#.#..........
|
||||||
|
.........#..#...#......##......
|
||||||
|
##...#....#...#.#...#.##..#....
|
||||||
|
...##...#....#.........###.....
|
||||||
|
.#.#....#.........##...........
|
||||||
|
....#.#..#..#...........#......
|
||||||
|
..#..#.#....#....#...#.........
|
||||||
|
..........##.....#.##..........
|
||||||
|
..#.#....#..##......#.#.....##.
|
||||||
|
..#...#.##......#..........#...
|
||||||
|
......#....#..#.....#.....#...#
|
||||||
|
#.#...##.#.##.........#..#.....
|
||||||
|
...#.#.#.........#.....#.#.#...
|
||||||
|
..#.........#...............#..
|
||||||
|
#..##.....#.........#....#.....
|
||||||
|
...#....##..##...........##..#.
|
||||||
|
......##.................#.#...
|
||||||
|
##.......#....#.#.#.....#......
|
||||||
|
....#.#...#.................##.
|
||||||
|
#...#.........##.....#.........
|
||||||
|
#....#.###..#.....##.#....#....
|
||||||
|
#..#....#...#....#.#.#.........
|
||||||
|
.......#...........#....#.....#
|
||||||
|
#...#.............#........#...
|
||||||
|
.......#.....#...#..#.........#
|
||||||
|
.##.....##.....##.......#......
|
||||||
|
....##...##.......#..#.#.....#.
|
||||||
|
.##.........#......#........##.
|
||||||
|
.......#...#...###.#..#........
|
||||||
|
..#..###......##..##...........
|
||||||
|
.#..#......##..#.#.........#...
|
||||||
|
...#.......#........#...#.#....
|
||||||
|
...#....#..#....#.....##.......
|
||||||
|
............#......#..........#
|
||||||
|
.#.......#......#.#....#..#.#..
|
||||||
|
##.........#.#.#..........#....
|
||||||
|
....##.....#...................
|
||||||
|
.......#..#........#...........
|
||||||
|
....##.#..#......###.......#...
|
||||||
|
....#....#...#.#......#...#...#
|
||||||
|
.......#.....##..#....#...#....
|
||||||
|
#...#........#.........#..##...
|
||||||
|
...........##.........#.#...#..
|
||||||
|
....................#....#.##..
|
||||||
|
.#..#..#.........#....#..#..##.
|
||||||
|
......................#........
|
||||||
|
..###....#.......#.....###.##..
|
||||||
|
......#......#.......#.....#..#
|
||||||
|
.....#...#.##...#......#....#..
|
||||||
|
.....#.....##.............#....
|
||||||
|
....#......##..#....#.......#..
|
||||||
|
.##....#..##......###....#..#..
|
||||||
|
...###.#.............##...#.#..
|
||||||
|
.....#.....#.....#...#..#.#....
|
||||||
|
..#.#.....###......#.......#...
|
||||||
|
..........#.##......#.........#
|
||||||
|
..##..#.......................#
|
||||||
|
........#......#............#..
|
||||||
|
#..#..#..#.#......#..#....#....
|
||||||
|
...##......#.............#....#
|
||||||
|
...........#..#..##.......#....
|
||||||
|
.....#.........#.#..#..........
|
||||||
|
##...#.......#.#....#..#..#....
|
||||||
|
#.#.#...........#.##.#.#..###..
|
||||||
|
#..#...........#.........##....
|
||||||
|
............#.#..............#.
|
||||||
|
.#....#....##.#...........#..#.
|
||||||
|
....#...#..#...#....#....#.....
|
||||||
|
....#....#...#..#......#.......
|
||||||
|
.#.#.........#.......#.##......
|
||||||
|
.#..##...#........#...........#
|
||||||
|
##...#..#...#...#.....#...#....
|
||||||
|
....###.#..#.......##.#..#...#.
|
||||||
|
...##.......####...##.#........
|
||||||
|
#....#....#.#............#..#..
|
||||||
|
#.#.#...#...................##.
|
||||||
|
##......#...........#..........
|
||||||
|
#..#..#....#.#...#......#......
|
||||||
|
.##...#.....#...#........#.....
|
||||||
|
..#............#..............#
|
||||||
|
###........#..#....#...#......#
|
||||||
|
###..##......#.##...........#..
|
||||||
|
........#......#..#.....#......
|
||||||
|
...#..........#..#...........#.
|
||||||
|
....#..#..#....#........#....#.
|
||||||
|
.#.................#####..##..#
|
||||||
|
.....#...##..#..........#.##...
|
||||||
|
..#..............#...####......
|
||||||
|
.....#.##..................#.#.
|
||||||
|
...#.#..#..#........#..........
|
||||||
|
...........#....#.#..#.........
|
||||||
|
.....##.......#......#..#.#.#..
|
||||||
|
...#.............##...#........
|
||||||
|
...............#.......##.##.##
|
||||||
|
.....#........#........#.#..#..
|
||||||
|
...#..#.........#...##...###...
|
||||||
|
...#.#.............###.#.....#.
|
||||||
|
.#..........#......###.#.#.....
|
||||||
|
....##..##.............###.....
|
||||||
|
..#..#.#...##...#.......##.....
|
||||||
|
..........###........#.....#.#.
|
||||||
|
#.#....#..#..#......#...#...#..
|
||||||
|
.........#......##.......#.#..#
|
||||||
|
...#.....#.........##..#..#....
|
||||||
|
.....##.#..##.##..##...........
|
||||||
|
...#.#.##....#..#..#......#..#.
|
||||||
|
#....#....#.............#...##.
|
||||||
|
#......#..#.####.#.##.#....##..
|
||||||
|
##.#.#....##..................#
|
||||||
|
.....##......#.......##.......#
|
||||||
|
..#......#.#..#...##......##...
|
||||||
|
..#....##....#.........#..##...
|
||||||
|
.###.....#....##...........#...
|
||||||
|
.........#......#.#........#...
|
||||||
|
...#...#..#.#....######.#..#...
|
||||||
|
###......#.#.#.........##.#....
|
||||||
|
.....#...#.........#...#.......
|
||||||
|
....#.............#.#.........#
|
||||||
|
..##...#...#.......#......#....
|
||||||
|
.....#...#.#...#...#..#........
|
||||||
|
.#......#......................
|
||||||
|
...###..#..#....#...##.#.......
|
||||||
|
.#.#.....##...#...#.....#...##.
|
||||||
|
.....###..###....##............
|
||||||
|
.....##....#..#.....#.##.......
|
||||||
|
#........#.........#...#..#....
|
||||||
|
...#.#.........#..#.......#.#..
|
||||||
|
....#.#....##.....#..........#.
|
||||||
|
.#..#....#..#.#..#..#.........#
|
||||||
|
#...#....#..............#......
|
||||||
|
.........#.....#.##...##...###.
|
||||||
|
.....#....##............#..#...
|
||||||
|
.....#.#...........#..#....#...
|
||||||
|
.#..........#...#......#.....#.
|
||||||
|
.#...........#.....#..#........
|
||||||
|
..............#......##...#..#.
|
||||||
|
...#.........#..#....#..##...##
|
||||||
|
..##...#..................#....
|
||||||
|
#.....#.................#......
|
||||||
|
...#......#..#..........#.#....
|
||||||
|
......#..#.....#.....##...#..#.
|
||||||
|
......#........#..........#....
|
||||||
|
...##.##....#..##.#..........#.
|
||||||
|
..........#..#.#.##............
|
||||||
|
..##........................#..
|
||||||
|
.....#.#.#......#....#....##...
|
||||||
|
#....#.........#........#......
|
||||||
|
.##.......#...#...#........##..
|
||||||
|
....##......#....#.#..........#
|
||||||
|
..#.......#..............#.....
|
||||||
|
.....#......#.#...#..#.#.#....#
|
||||||
|
.....#..#........#.##.##.......
|
||||||
|
##........#..........#.........
|
||||||
|
.....#..##....#.#......###..##.
|
||||||
|
#.#...##.........#.#.....#..#..
|
||||||
|
#....#.#...#........#.....#..#.
|
||||||
|
........................#......
|
||||||
|
....###......#............#...#
|
||||||
|
...#..##......#..##.........#..
|
||||||
|
.............#...#......#..#..#
|
||||||
|
....#......#....#...........#..
|
||||||
|
..#.#.####.#.....##........#..#
|
||||||
|
#..#...#..#..#.......#.#..#....
|
||||||
|
..#..#..#....#.#.........##..#.
|
||||||
|
.......#......#.#............#.
|
||||||
|
...#.............#.#.....#.....
|
||||||
|
...#.#.........##...#.#.......#
|
||||||
|
........#...#...........##...#.
|
||||||
|
..........#....#......#....##..
|
||||||
|
..........#...........#........
|
||||||
|
...#..#...#..........#......#..
|
||||||
|
......#......#....#.....#..#.#.
|
||||||
|
........##.................#..#
|
||||||
|
.#........#.#...........#......
|
||||||
|
#...#........#.#.#.....#.#.#...
|
||||||
|
.........#........#..#..#....#.
|
||||||
|
##........#..........#....#..#.
|
||||||
|
.#.##...........#..#.#..##....#
|
||||||
|
.......#.#....#..#......#......
|
||||||
|
..#.....#........##..#......###
|
||||||
|
..#...#..................#....#
|
||||||
|
......#...#..#.##.......#......
|
||||||
|
........#...#.#................
|
||||||
|
.........#............#........
|
||||||
|
..#.....##....#.#..##..........
|
||||||
|
#.....#..........#....#........
|
||||||
|
....#.#...#...##....#.....##...
|
||||||
|
..#.#.......#.............#...#
|
||||||
|
...##..............#......#....
|
||||||
|
#......#...#................##.
|
||||||
|
.#.#...#.#..#..................
|
||||||
|
...##.......#...........#.#.#..
|
||||||
|
#......#.#.#........#.##...####
|
||||||
|
.......#..#.#.........#.#.##..#
|
||||||
|
..............#....#.........#.
|
||||||
|
...........#.#..#....##......#.
|
||||||
|
#.............#...##..#.......#
|
||||||
|
.........#............#...#.##.
|
||||||
|
.......#.........#.#.....#..#..
|
||||||
|
........................#.#.##.
|
||||||
|
#......#.#......#.........#....
|
||||||
|
...#.......#.......#.....#.....
|
||||||
|
#..#....#................#...#.
|
||||||
|
........#.#..##......#.........
|
||||||
|
#..#...##....##....##.........#
|
||||||
|
.......#...#...###.............
|
||||||
|
#.#..#........#.#.#............
|
||||||
|
#.....#........##.........#.#..
|
||||||
|
.#..........#....#.#....###....
|
||||||
|
.#.....#...#.#........#..#.##..
|
||||||
|
...#.##......#..#.............#
|
||||||
|
..##..#.#...................#..
|
||||||
|
.....#....#...#.#...#...#......
|
||||||
|
.....#..#.#....#.#.............
|
||||||
|
#.#....#.#.##..###..........#..
|
||||||
|
........#.#.............#..#...
|
||||||
|
.........#.......#.............
|
||||||
|
.##.#............##...#........
|
||||||
|
......#................#.......
|
||||||
|
...............#..#...........#
|
||||||
|
...#.......#...#.##.....#....#.
|
||||||
|
##..##..#..........#...........
|
||||||
|
.##.#.......#...#..#...#...#...
|
||||||
|
....#..#...........#....#.##...
|
||||||
|
.#........#........#....#......
|
||||||
|
.......#...#.##.#..#.#..#......
|
||||||
|
.#..#......#....#...##....#.#..
|
||||||
|
......#...##.#.....##.###.....#
|
||||||
|
.#....#..#......#...#.#.....#..
|
||||||
|
#............#....##...##.##...
|
||||||
|
#...#.#....#...#.......##...##.
|
||||||
|
#...........#.##..#....#.....#.
|
||||||
|
...#..#...#.........#.......#..
|
||||||
|
.#....#.....#............#.#..#
|
||||||
|
.#.....#.#...#.#....##......###
|
||||||
|
..#..#.#.#...#..#.............#
|
||||||
|
...#...#..#....#........#...##.
|
||||||
|
.......#.....#...##...........#
|
||||||
|
#.##.................#...##...#
|
||||||
|
..............##........#.....#
|
||||||
|
............#...#..#.......#.#.
|
||||||
|
#.#.....#.........#...#......#.
|
||||||
|
#.###..#......#..#..#...#.....#
|
||||||
|
.....#.......#.................
|
||||||
|
........#..#......#.#...#......
|
||||||
|
#.......#..#........#...#..#...
|
||||||
|
..#...#.......##.............#.
|
||||||
|
#.......#.......##...#.........
|
||||||
|
.........#....#.#..##.....#...#
|
||||||
|
..#.....#.#.......#....#.......
|
||||||
|
...#.......#.....#..##.#..#....
|
||||||
|
....#.......#.#.#..............
|
||||||
|
.#..#......#........#.#..##..##
|
||||||
|
....#...#.##.#...#....##...#...
|
||||||
|
#..##..#.....#.......#.........
|
||||||
|
....#..#..#.#............#.....
|
||||||
|
#.......##...##..##............
|
||||||
|
...............................
|
||||||
|
....#.......#.##...#.....#.#...
|
||||||
|
...#........#....#.#..#..#.....
|
||||||
|
##.......#.....##.#.#....#....#
|
||||||
|
#.............#...........#.##.
|
||||||
|
#...........#.#..........#.....
|
||||||
|
#..#....#....#.#.........#.#...
|
||||||
|
......#.#.#..#.#.#.............
|
||||||
|
...#.....#........##....#......
|
||||||
|
..#...#...#.#.......#......#...
|
||||||
|
.##........#...#..#..........#.
|
||||||
|
..#...........#..##.....##.....
|
||||||
|
............#..#.#...#.....#...
|
||||||
|
..........#....##.......#......
|
||||||
|
....#....#.................#..#
|
||||||
|
....#...............#.........#
|
||||||
|
..#.#...#......#..........##...
|
||||||
|
.....#...........#.........#..#
|
||||||
|
.......#.....##.....#.#........
|
||||||
|
.#.#..........#....#...........
|
||||||
|
.#..##....#........#....#......
|
||||||
|
....#.#..#.......#..#.........#
|
||||||
|
..#....#.....#......#..#.......
|
||||||
|
......#........#.......#...#.#.
|
||||||
|
.......#.......#....#.....##...
|
||||||
|
....##........#..#...#.#..#...#
|
||||||
|
.#......#...........##....#....
|
||||||
|
##....##......#.......#.......#
|
||||||
|
.##....#.##......#.......##..#.
|
||||||
|
...#..#.#.#.......#..#.###.....
|
||||||
|
..........##....#..#.##........
|
||||||
|
...#........###.#..#........#..
|
||||||
|
.....#....#..##....#.....#....#
|
||||||
|
#..........#..........#.#....#.
|
||||||
|
..#....#.....#..............#..
|
||||||
|
#..................#......#.##.
|
||||||
|
.#...#.#.....#.........##......
|
||||||
|
...#...........#.....#......#..
|
||||||
|
......#.....#.#..##......##....
|
||||||
|
...#....###..#.....#..#..##..##
|
||||||
|
......#.......##..#..#.........
|
||||||
|
#..#.#....#.#..#..........##.#.
|
||||||
|
..#..#..##..#.#.#.#.....#......
|
||||||
|
..#.#...#..#.....###.#.........
|
||||||
|
##.#.#......#........#.####....
|
||||||
|
.............#..#..#....#......
|
||||||
|
...##..........#.......#.#....#
|
||||||
|
..#.....................#......
|
||||||
|
..#..#...##...#.##........#....
|
44
2020/03/part1.hs
Executable file
44
2020/03/part1.hs
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env runghc
|
||||||
|
|
||||||
|
import Data.Array
|
||||||
|
|
||||||
|
data Cell = Open | Tree
|
||||||
|
deriving (Eq)
|
||||||
|
|
||||||
|
charToCell '.' = Open
|
||||||
|
charToCell '#' = Tree
|
||||||
|
|
||||||
|
isValidCell '.' = True
|
||||||
|
isValidCell '#' = True
|
||||||
|
isValidCell _ = False
|
||||||
|
|
||||||
|
instance Read Cell where
|
||||||
|
readsPrec _ (c:rest) = [(charToCell c, rest)]
|
||||||
|
readList input =
|
||||||
|
let (valid, rest) = span isValidCell input
|
||||||
|
in [(map charToCell valid, rest)]
|
||||||
|
|
||||||
|
cellToChar Open = '.'
|
||||||
|
cellToChar Tree = '#'
|
||||||
|
|
||||||
|
instance Show Cell where
|
||||||
|
show cell = [cellToChar cell]
|
||||||
|
showList = (++) . map cellToChar
|
||||||
|
|
||||||
|
main = interact (show . solve . map (read :: String -> [Cell]) . lines)
|
||||||
|
|
||||||
|
solve rows = count (==Tree) $ map at path
|
||||||
|
where
|
||||||
|
board = toArray $ map toArray rows
|
||||||
|
(_, y) = fmap (+1) $ bounds board
|
||||||
|
(_, x) = fmap (+1) $ bounds $ board ! 0
|
||||||
|
xIdx i = mod i x
|
||||||
|
yIdx i = mod i y
|
||||||
|
deltaY = 1
|
||||||
|
deltaX = 3
|
||||||
|
at (x', y') = (board ! (yIdx y')) ! (xIdx x')
|
||||||
|
path = [(i*3, i) | i <- [0..y]]
|
||||||
|
|
||||||
|
count predicate xs = length $ filter predicate xs
|
||||||
|
|
||||||
|
toArray l = listArray (0, length l - 1) l
|
11
2020/03/small.txt
Normal file
11
2020/03/small.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
..##.......
|
||||||
|
#...#...#..
|
||||||
|
.#....#..#.
|
||||||
|
..#.#...#.#
|
||||||
|
.#...##..#.
|
||||||
|
..#.##.....
|
||||||
|
.#.#.#....#
|
||||||
|
.#........#
|
||||||
|
#.##...#...
|
||||||
|
#...##....#
|
||||||
|
.#..#...#.#
|
|
@ -14,7 +14,7 @@ asdf install
|
||||||
|
|
||||||
| S | M | T | W | T | F | S |
|
| S | M | T | W | T | F | S |
|
||||||
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|
||||||
| | | [1] | [2] | 3 | 4 | 5 |
|
| | | [1] | [2] | [3] | 4 | 5 |
|
||||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|
||||||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|
||||||
| 21 | 22 | 23 | 24 | 25 | | |
|
| 21 | 22 | 23 | 24 | 25 | | |
|
||||||
|
@ -23,3 +23,4 @@ asdf install
|
||||||
[haskell]: https://www.haskell.org
|
[haskell]: https://www.haskell.org
|
||||||
[1]: ./01
|
[1]: ./01
|
||||||
[2]: ./02
|
[2]: ./02
|
||||||
|
[3]: ./03
|
||||||
|
|
Loading…
Reference in a new issue