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 |
|
||||
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|
||||
| | | [1] | [2] | 3 | 4 | 5 |
|
||||
| | | [1] | [2] | [3] | 4 | 5 |
|
||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|
||||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|
||||
| 21 | 22 | 23 | 24 | 25 | | |
|
||||
|
@ -23,3 +23,4 @@ asdf install
|
|||
[haskell]: https://www.haskell.org
|
||||
[1]: ./01
|
||||
[2]: ./02
|
||||
[3]: ./03
|
||||
|
|
Loading…
Reference in a new issue