diff options
author | Akshay <[email protected]> | 2020-12-03 05:53:13 +0000 |
---|---|---|
committer | Akshay <[email protected]> | 2020-12-03 05:53:13 +0000 |
commit | 6bd6cf1350e96011c08652cdbb1dd39279666715 (patch) | |
tree | 61936f91282c5593371b2da275e3142d16db6b42 | |
parent | e80d10cdc7c3ff1e00a698835acbef41eefb945b (diff) |
add initial day 3 solution
-rw-r--r-- | aoc.cabal | 6 | ||||
-rw-r--r-- | execs/Day02.hs | 4 | ||||
-rw-r--r-- | execs/Day03.hs | 18 | ||||
-rw-r--r-- | input/03 | 323 |
4 files changed, 347 insertions, 4 deletions
@@ -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 | |||
31 | executable 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 @@ | |||
1 | module Main where | 1 | module Main where |
2 | 2 | ||
3 | import Data.Char | ||
4 | import Data.Either | ||
5 | import Control.Monad | ||
6 | import Text.ParserCombinators.Parsec | 3 | import Text.ParserCombinators.Parsec |
7 | import Text.Parsec.Char | 4 | import Text.Parsec.Char |
8 | 5 | ||
@@ -42,4 +39,3 @@ main :: IO () | |||
42 | main = do | 39 | main = 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 @@ | |||
1 | module Main where | ||
2 | |||
3 | main :: IO () | ||
4 | main = 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 | |||
14 | countTrees :: Int -> Int -> [String] -> Int | ||
15 | countTrees 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 | .#...##..##.#.........#.##...#. | ||