Rearranged file locations
[advent-of-code-17.git] / src / advent01 / advent01-Copy1.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "metadata": {},
7 "outputs": [],
8 "source": [
9 "{-# LANGUAGE NegativeLiterals #-}\n",
10 "{-# LANGUAGE FlexibleContexts #-}"
11 ]
12 },
13 {
14 "cell_type": "code",
15 "execution_count": 10,
16 "metadata": {},
17 "outputs": [],
18 "source": [
19 "import Data.List (tails)\n",
20 "import Data.Char (digitToInt)"
21 ]
22 },
23 {
24 "cell_type": "code",
25 "execution_count": 11,
26 "metadata": {},
27 "outputs": [],
28 "source": [
29 "digits = \"1122\""
30 ]
31 },
32 {
33 "cell_type": "code",
34 "execution_count": 13,
35 "metadata": {},
36 "outputs": [
37 {
38 "data": {
39 "text/plain": [
40 "3"
41 ]
42 },
43 "metadata": {},
44 "output_type": "display_data"
45 }
46 ],
47 "source": [
48 "sum $ map (digitToInt . fst) $ filter (uncurry (==)) $ zip digits $ drop 1 $ cycle digits"
49 ]
50 },
51 {
52 "cell_type": "code",
53 "execution_count": 15,
54 "metadata": {},
55 "outputs": [],
56 "source": [
57 "solve n digits = sum $ map (digitToInt . fst) \n",
58 " $ filter (uncurry (==)) \n",
59 " $ zip digits \n",
60 " $ drop n \n",
61 " $ cycle digits"
62 ]
63 },
64 {
65 "cell_type": "code",
66 "execution_count": 37,
67 "metadata": {},
68 "outputs": [],
69 "source": [
70 "solve n digits = sum $ zipWith (\\a b -> if a == b then digitToInt a else 0) digits \n",
71 " $ drop n \n",
72 " $ cycle digits"
73 ]
74 },
75 {
76 "cell_type": "code",
77 "execution_count": 38,
78 "metadata": {},
79 "outputs": [],
80 "source": [
81 "part1 = solve 1"
82 ]
83 },
84 {
85 "cell_type": "code",
86 "execution_count": 39,
87 "metadata": {},
88 "outputs": [
89 {
90 "data": {
91 "text/plain": [
92 "3"
93 ]
94 },
95 "metadata": {},
96 "output_type": "display_data"
97 }
98 ],
99 "source": [
100 "part1 \"1122\""
101 ]
102 },
103 {
104 "cell_type": "code",
105 "execution_count": 40,
106 "metadata": {},
107 "outputs": [
108 {
109 "data": {
110 "text/plain": [
111 "4"
112 ]
113 },
114 "metadata": {},
115 "output_type": "display_data"
116 }
117 ],
118 "source": [
119 "part1 \"1111\""
120 ]
121 },
122 {
123 "cell_type": "code",
124 "execution_count": 41,
125 "metadata": {},
126 "outputs": [
127 {
128 "data": {
129 "text/plain": [
130 "0"
131 ]
132 },
133 "metadata": {},
134 "output_type": "display_data"
135 }
136 ],
137 "source": [
138 "part1 \"1234\""
139 ]
140 },
141 {
142 "cell_type": "code",
143 "execution_count": 42,
144 "metadata": {},
145 "outputs": [
146 {
147 "data": {
148 "text/plain": [
149 "9"
150 ]
151 },
152 "metadata": {},
153 "output_type": "display_data"
154 }
155 ],
156 "source": [
157 "part1 \"91212129\""
158 ]
159 },
160 {
161 "cell_type": "code",
162 "execution_count": 43,
163 "metadata": {},
164 "outputs": [],
165 "source": [
166 "part2 digits = solve (length digits `div` 2) digits"
167 ]
168 },
169 {
170 "cell_type": "code",
171 "execution_count": 44,
172 "metadata": {},
173 "outputs": [],
174 "source": [
175 "part2_extract :: String -> [String]\n",
176 "part2_extract digits = map (\\ds -> (take 1 ds) ++ (take 1 $ drop offset ds)) \n",
177 " $ take (length digits) \n",
178 " $ tails (digits ++ digits)\n",
179 " where offset = length digits `div` 2"
180 ]
181 },
182 {
183 "cell_type": "code",
184 "execution_count": 45,
185 "metadata": {},
186 "outputs": [
187 {
188 "data": {
189 "text/plain": [
190 "[\"12\",\"12\",\"21\",\"21\"]"
191 ]
192 },
193 "metadata": {},
194 "output_type": "display_data"
195 }
196 ],
197 "source": [
198 "part2_extract \"1122\""
199 ]
200 },
201 {
202 "cell_type": "code",
203 "execution_count": 46,
204 "metadata": {},
205 "outputs": [
206 {
207 "data": {
208 "text/plain": [
209 "0"
210 ]
211 },
212 "metadata": {},
213 "output_type": "display_data"
214 }
215 ],
216 "source": [
217 "part2 \"1122\""
218 ]
219 },
220 {
221 "cell_type": "code",
222 "execution_count": 47,
223 "metadata": {},
224 "outputs": [
225 {
226 "data": {
227 "text/plain": [
228 "[\"11\",\"22\",\"11\",\"22\"]"
229 ]
230 },
231 "metadata": {},
232 "output_type": "display_data"
233 }
234 ],
235 "source": [
236 "part2_extract \"1212\""
237 ]
238 },
239 {
240 "cell_type": "code",
241 "execution_count": 48,
242 "metadata": {},
243 "outputs": [
244 {
245 "data": {
246 "text/plain": [
247 "6"
248 ]
249 },
250 "metadata": {},
251 "output_type": "display_data"
252 }
253 ],
254 "source": [
255 "part2 \"1212\""
256 ]
257 },
258 {
259 "cell_type": "code",
260 "execution_count": 49,
261 "metadata": {},
262 "outputs": [
263 {
264 "data": {
265 "text/plain": [
266 "[\"12\",\"21\",\"21\",\"12\"]"
267 ]
268 },
269 "metadata": {},
270 "output_type": "display_data"
271 }
272 ],
273 "source": [
274 "part2_extract \"1221\""
275 ]
276 },
277 {
278 "cell_type": "code",
279 "execution_count": 50,
280 "metadata": {},
281 "outputs": [
282 {
283 "data": {
284 "text/plain": [
285 "0"
286 ]
287 },
288 "metadata": {},
289 "output_type": "display_data"
290 }
291 ],
292 "source": [
293 "part2 \"1221\""
294 ]
295 },
296 {
297 "cell_type": "code",
298 "execution_count": 51,
299 "metadata": {},
300 "outputs": [
301 {
302 "data": {
303 "text/plain": [
304 "[\"14\",\"22\",\"35\",\"41\",\"22\",\"53\"]"
305 ]
306 },
307 "metadata": {},
308 "output_type": "display_data"
309 }
310 ],
311 "source": [
312 "part2_extract \"123425\""
313 ]
314 },
315 {
316 "cell_type": "code",
317 "execution_count": 52,
318 "metadata": {},
319 "outputs": [
320 {
321 "data": {
322 "text/plain": [
323 "4"
324 ]
325 },
326 "metadata": {},
327 "output_type": "display_data"
328 }
329 ],
330 "source": [
331 "part2 \"123425\""
332 ]
333 },
334 {
335 "cell_type": "code",
336 "execution_count": 53,
337 "metadata": {},
338 "outputs": [
339 {
340 "data": {
341 "text/plain": [
342 "[\"11\",\"22\",\"33\",\"11\",\"22\",\"33\"]"
343 ]
344 },
345 "metadata": {},
346 "output_type": "display_data"
347 }
348 ],
349 "source": [
350 "part2_extract \"123123\""
351 ]
352 },
353 {
354 "cell_type": "code",
355 "execution_count": 54,
356 "metadata": {},
357 "outputs": [
358 {
359 "data": {
360 "text/plain": [
361 "12"
362 ]
363 },
364 "metadata": {},
365 "output_type": "display_data"
366 }
367 ],
368 "source": [
369 "part2 \"123123\""
370 ]
371 },
372 {
373 "cell_type": "code",
374 "execution_count": 55,
375 "metadata": {},
376 "outputs": [
377 {
378 "data": {
379 "text/plain": [
380 "[\"11\",\"24\",\"11\",\"35\",\"11\",\"42\",\"11\",\"53\"]"
381 ]
382 },
383 "metadata": {},
384 "output_type": "display_data"
385 }
386 ],
387 "source": [
388 "part2_extract \"12131415\""
389 ]
390 },
391 {
392 "cell_type": "code",
393 "execution_count": 56,
394 "metadata": {},
395 "outputs": [
396 {
397 "data": {
398 "text/plain": [
399 "4"
400 ]
401 },
402 "metadata": {},
403 "output_type": "display_data"
404 }
405 ],
406 "source": [
407 "part2 \"12131415\""
408 ]
409 },
410 {
411 "cell_type": "code",
412 "execution_count": 57,
413 "metadata": {},
414 "outputs": [],
415 "source": [
416 "main :: IO ()\n",
417 "main = do \n",
418 " digits <- readFile \"../../data/advent01.txt\"\n",
419 " print $ part1 digits\n",
420 " print $ part2 digits"
421 ]
422 },
423 {
424 "cell_type": "code",
425 "execution_count": 58,
426 "metadata": {},
427 "outputs": [
428 {
429 "data": {
430 "text/plain": [
431 "1158\n",
432 "1132"
433 ]
434 },
435 "metadata": {},
436 "output_type": "display_data"
437 }
438 ],
439 "source": [
440 "main"
441 ]
442 },
443 {
444 "cell_type": "code",
445 "execution_count": null,
446 "metadata": {},
447 "outputs": [],
448 "source": []
449 }
450 ],
451 "metadata": {
452 "kernelspec": {
453 "display_name": "Haskell",
454 "language": "haskell",
455 "name": "haskell"
456 },
457 "language_info": {
458 "codemirror_mode": "ihaskell",
459 "file_extension": ".hs",
460 "name": "haskell",
461 "version": "8.0.2"
462 }
463 },
464 "nbformat": 4,
465 "nbformat_minor": 2
466 }