aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay <[email protected]>2020-12-03 05:53:13 +0000
committerAkshay <[email protected]>2020-12-03 05:53:13 +0000
commit6bd6cf1350e96011c08652cdbb1dd39279666715 (patch)
tree61936f91282c5593371b2da275e3142d16db6b42
parente80d10cdc7c3ff1e00a698835acbef41eefb945b (diff)
add initial day 3 solution
-rw-r--r--aoc.cabal6
-rw-r--r--execs/Day02.hs4
-rw-r--r--execs/Day03.hs18
-rw-r--r--input/03323
4 files changed, 347 insertions, 4 deletions
diff --git a/aoc.cabal b/aoc.cabal
index 6dbd463..e88e933 100644
--- a/aoc.cabal
+++ b/aoc.cabal
@@ -27,3 +27,9 @@ executable Day02
27 build-depends: base, parsec 27 build-depends: base, parsec
28 default-language: Haskell2010 28 default-language: Haskell2010
29 hs-source-dirs: execs 29 hs-source-dirs: execs
30
31executable Day03
32 main-is: Day03.hs
33 build-depends: base, parsec
34 default-language: Haskell2010
35 hs-source-dirs: execs
diff --git a/execs/Day02.hs b/execs/Day02.hs
index 87c90ec..f67778b 100644
--- a/execs/Day02.hs
+++ b/execs/Day02.hs
@@ -1,8 +1,5 @@
1module Main where 1module Main where
2 2
3import Data.Char
4import Data.Either
5import Control.Monad
6import Text.ParserCombinators.Parsec 3import Text.ParserCombinators.Parsec
7import Text.Parsec.Char 4import Text.Parsec.Char
8 5
@@ -42,4 +39,3 @@ main :: IO ()
42main = do 39main = do
43 n <- map (fromEnum . doCheck2 . parseLine parseProp) . lines <$> readFile "input/02" 40 n <- map (fromEnum . doCheck2 . parseLine parseProp) . lines <$> readFile "input/02"
44 print $ sum n 41 print $ sum n
45
diff --git a/execs/Day03.hs b/execs/Day03.hs
new file mode 100644
index 0000000..a000e59
--- /dev/null
+++ b/execs/Day03.hs
@@ -0,0 +1,18 @@
1module Main where
2
3main :: IO ()
4main = do
5 n <- lines <$> readFile "input/03"
6 print $ countTrees 3 1 n
7 print $ product [ countTrees 1 1 n
8 , countTrees 3 1 n
9 , countTrees 5 1 n
10 , countTrees 7 1 n
11 , countTrees 1 2 n
12 ]
13
14countTrees :: Int -> Int -> [String] -> Int
15countTrees right down ls = go (map cycle ls)
16 where go [] = 0
17 go remaining@(r:rs) = i (head r) + go (map (drop right) (drop down remaining))
18 where i = fromEnum . (== '#')
diff --git a/input/03 b/input/03
new file mode 100644
index 0000000..534b00b
--- /dev/null
+++ b/input/03
@@ -0,0 +1,323 @@
1.............#...#....#.....##.
2.#...##.........#.#.........#.#
3.....##......#.......#.........
4.......#...........#.#.........
5#...........#...#..#.#......#..
6.........##....#.#...#.........
7.....#.........#.#...........#.
8....#...............##....##...
9#.#.............#..#.......#.#.
10...#...........................
11......#..#....#.............#..
12........#......#.......#.......
13....#.....#..#.#...#.........#.
14..#.#.......#.##...#....#.....#
15...........#.........#..#......
16#...........#.#..#...#.#.#....#
17........#......................
18....#.#.....#....#.......#..#..
19.............................#.
20....##..........#.....##......#
21......#.....................#..
22..#.....##.......#.............
23....#.#..............#.#.......
24..#.#........#.....#..##.......
25.....#...##.........##....#.#..
26.#....#..#..#...........#......
27.............#.....##........#.
28..#....#............#.........#
29###..........#........#.......#
30#...#..#.#.#.........#..#......
31..#....#......#.............#..
32#...#........#..#...#.....#....
33.#..........#.#........#.......
34#.....#.........#..#......#....
35....#....##........#......#....
36.......#....#.....#..#..#.....#
37.........#...#.#...#.##........
38.##.##...........#..##..#......
39.#.##....#........#...#........
40.......##.........##.####.....#
41....#..##....#.................
42.#........#..........#.........
43##....##..........##........#..
44#......#...........#....#..#...
45.......#..#....##..##.....#....
46.........#.#.#...#.....#.......
47......#...#...#....#......#....
48##....#..........#....##....##.
49###.........#...#...#..........
50#.....##.#........#.......#....
51#...............#...##.#......#
52..#.....####.###......#......#.
53....#.......#..........#.......
54....##..............#.#.#......
55.......##..#.......#...........
56..#.......##....#.......###...#
57........#...#.......#.#...#....
58.........##....#..#....#.......
59............#.#.......#.#......
60.....#.....#...#....#.##.......
61.......#.........#.......#.....
62.#..#...#.....#............#.##
63.......#.#......##.............
64##.#......#.....#.#............
65.#....#.....#............#...#.
66.........#.......#.#...........
67#............#.##...#..#...#.#.
68......#....#.......#....#......
69..........#........#..#.#......
70#..##.......#.........#..#.....
71.........#.....##........#.#..#
72..#................#...........
73....#..#........##.........#..#
74###...#....##.#......##.......#
75.......#......##..#.......#....
76.......###...#...#..........##.
77................#.......#......
78.#......##.##........#.........
79....##.#.....##.......#........
80...........#...........#.....#.
81..#........#..#.#...#.#........
82#...............#...#.##.##.#.#
83................#.......#......
84.#..#......#........#.#........
85...##..#.......#.......#..#....
86.#.....#.#....##..#........#...
87........##......#..........#...
88.#.......#.......#...#..#......
89.#..##.....#....#............#.
90...#..........#....#........#..
91..#.#..#.......#.#.##..........
92#........###.....#.#.......#.##
93.....#....##.............#.#..#
94..##............#...##.........
95...#.........#...........#.....
96...#......#.#...#..###.........
97.............#...##............
98.....##..##.####.#..#......#.#.
99.#...#.....#.....#.#.....#.....
100.........#.......###.....#..##.
101.##.#..#..........#.##.#.#.....
102.#...#...#.#.##......#..#......
103.............#......#......#...
104#.....................#......#.
105...#.....#.....#....#........#.
106................##..#....#..#..
107#.###...#.....................#
108...#..#....#.......#.........#.
109...........#..#..#...........#.
110.......#..#......#....#.#......
111..........#......#..#....#.....
112.#.#.....#...#.#...#...#.#....#
113.....#.......#............#...#
114#.#....#......#......#........#
115.#.#..#.........##...#.........
116#..###..#......................
117..#.#..#.......................
118.##.....#...#......#..#........
119...#...........#...#.......##..
120..#...........#........#.......
121........#....#.....#.#.........
122..........#...........#.....#..
123......#...#...##.#.............
124.#...#...##....................
125............###.........#......
126.#.#...................#..#....
127....#.#...#.#........#.#.......
128....#...#...........#.......#.#
129...........#............#...##.
130.....####....#.#......#.#......
131.##.............#............#.
132......#.........#............##
133#.#....#...##....#.......#....#
134.....#.#....#..#..#...#..#.#..#
135.........................#.....
136......#.#....###.......#....#..
137.....................##.#...#.#
138..#.....#.#.#...#...#..........
139........#..##........#...#...#.
140..........#.#.##....#....##....
141.............#..#..............
142..#.##..#.......#...#..#..##..#
143..#..#....#.#..........#..#....
144..........#....#...#......#....
145.##...#.......................#
146.#.....#....#..........#.......
147...........#..#......##.....#..
148......###.#..##....#...#.##....
149.......#..#.#....#.............
150...#..#......##.........###.#..
151...........#............##...#.
152...#...#...........##.....#....
153..................#............
154.#.#.#...#..............#..##..
155#.#....#........#.........#.##.
156#.#.#.......#.....#..........#.
157...##.....##.#.....#...........
158.#....#..............##...##..#
159........##.....................
160#..#..#.....###.............#..
161.......#...........#...........
162.........#.....................
163.......#...#...#.....##........
164......#.........#........#.....
165...#....##..#.####.#.......#.#.
166.....#..#......#........#.##..#
167.##....#......##......#...###..
168..###.#........##.#...#.......#
169............#......##....#.#...
170.....#....##..##............##.
171......##....#.#...#....#.#..#.#
172.......#.........#.#.....#.#...
173.......#.#....#................
174.##...###..#.....#............#
175#.#......#.#..#..#.#...#..#..#.
176..#.#.#.....#............#...##
177.##....###.........#..#........
178.#..#.#..#.#....#.........##.#.
179....#..#...##.##........#......
180........#.#....##....#....#....
181.......#..#..#.#..............#
182#....#....#.....#....#.........
183.#.###...#....#.......#........
184.........#.#....##....#...#....
185....#.............#.....##.##..
186.....#.....#...##..#.#.##...##.
187.........#..#................##
188...##..##......#.....#........#
189.#....#.....#.#......#..###....
190#.....#..#.....................
191....#.#...#.#.................#
192.....##..................#.....
193#....##...#.##..###...#........
194##.#.........#.......#....#....
195.#.#.............##..#.##......
196...#.#..............#......#...
197.............#.........#.....#.
198#.......#........#......#.....#
199.....#..............#.##.#.....
200#......##...................#..
201##.#.....#..........#........#.
202#...........##...........#.....
203.#...#.....#..#..##....#.......
204.....#.........#....##.#.......
205#........#......#.............#
206.#..................####.#.....
207#...#......#....##...#.#..#..#.
208............#.#............#...
209............#........#.#..###..
210.#..#..#..#.#.#.....#.#........
211#.....#..#.#...#..#..#........#
212#................#....#..#.....
213....#..#..#.#......#.#..#.....#
214.#..#.......#...##.#.#.....#..#
215#.....................#.......#
216.............#.......#...#.....
217....#......#.........###.##....
218....#..#.......#.#........#....
219....#...#....#.#....#..........
220...#..#......#.............#...
221.......###.#.........#....#.#..
222..#.....##.....................
223.#.#...........#..##....#......
224..........##.#....#.#..........
225...........#.#..#.#..#.#.......
226..........#..#...#.....##......
227.....#.........#...#.#..#......
228#.#................#..........#
229...#.....##.#..#...#.##.......#
230.....##...........#............
231.....#...#...#...#.#.....#.....
232...........##..................
233.........#................#....
234......#.....#.#...#.......#....
235...#...#........#...#...#.#.#..
236...............##..#....##...#.
237...#.#...........##.......##..#
238...........#............#......
239.#....#.#.......##.#.#.#.......
240.....#.#..#.#.#................
241.#............#...#.#..........
242.....#.......#.#.......#.....#.
243#....#...........#...#....##...
244..#...#..##.....#....#..#......
245#.#.........#..#.#..#.#......#.
246................#......##......
247#........#..............#....#.
248........#..#.#........#..#..#..
249#..........#......#............
250..##.......#..#.......#....#...
251.#........#..#..#.#.......##...
252................#..............
253#.................#...........#
254##..#...................#....##
255#..#....#.....#.#..#.#.#......#
256#................#.#.#...#.....
257.............#..#...#..##...#.#
258#..................#...........
259..............#..#.....##.....#
260..#...............#.#..........
261.....#......#....#..#...#......
262.#......#...##.....###.....#...
263...##...##.##....#.#.#..#......
264....#.#.......#..##....#.##....
265...#.........#.#.....#...#...##
266.##.#.........##..#.##..#......
267.#...#......#......#.........#.
268.............#.................
269..........#..............#.....
270##...........#...#...###....#..
271....#...............#..........
272.......####.....#......#.......
273........#..........#..#........
274..#.......#..#.................
275......#.#..##...##....#........
276.##...#........#...#....#...#..
277.......................#.......
278.........##..#..#...#....##...#
279..#..#...#.....#.........#..#..
280.......#....#.........#...#..#.
281.............#.................
282.....##..#.....###....##.#.....
283....#.#..#..#.#.....##....#..#.
284......#..#..............#.##..#
285..#..#......#.#.........#..#...
286..........#.#..#....#.....#....
287.....................#.........
288...#.....#.......##..#.#.......
289.....#...#..........###....#.#.
290......#.....##............#...#
291.......#..........#.#..#...#..#
292#...#..#...........#..##..#....
293.#......#.......##.....#..#....
294...#..#....#.......##......#...
295........#.......##...#.......#.
296.....#........#................
297......#........#....#..........
298...#....#....###.........#.#...
299##..............#......#..#.#..
300.........##....#........#..#.#.
301.......#.##.#........#........#
302.....###..#..#...........#....#
303.......#....##.......#.#...#...
304#..............#.#....#..#...#.
305#..#....#..#.#............#..#.
306.#...##.#..................#...
307...#...............##.........#
308###..............#.#..#.#.#....
309.#......#.#.....##.......#.....
310...#.................#.#.......
311.#...#....#...#..#......#...#..
312...##....#........#.#.#..#.....
313..#.....#........#....#.#......
314...........#.#...#.............
315......#.....#.....#.........#..
316.#.##.###...#.##.......#.......
317.............#....#.......#....
318..............#...........#....
319.............#..#.#.....#....#.
320.......#........##...##..##....
321..##...#............#..#......#
322.............#...##.....#......
323.#...##..##.#.........#.##...#.