9 "{-# LANGUAGE NegativeLiterals #-}\n",
10 "{-# LANGUAGE FlexibleContexts #-}"
15 "execution_count": 10,
19 "import Data.List (tails)\n",
20 "import Data.Char (digitToInt)"
25 "execution_count": 11,
34 "execution_count": 13,
44 "output_type": "display_data"
48 "sum $ map (digitToInt . fst) $ filter (uncurry (==)) $ zip digits $ drop 1 $ cycle digits"
53 "execution_count": 15,
57 "solve n digits = sum $ map (digitToInt . fst) \n",
58 " $ filter (uncurry (==)) \n",
66 "execution_count": 37,
70 "solve n digits = sum $ zipWith (\\a b -> if a == b then digitToInt a else 0) digits \n",
77 "execution_count": 38,
86 "execution_count": 39,
96 "output_type": "display_data"
105 "execution_count": 40,
115 "output_type": "display_data"
124 "execution_count": 41,
134 "output_type": "display_data"
143 "execution_count": 42,
153 "output_type": "display_data"
162 "execution_count": 43,
166 "part2 digits = solve (length digits `div` 2) digits"
171 "execution_count": 44,
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"
184 "execution_count": 45,
190 "[\"12\",\"12\",\"21\",\"21\"]"
194 "output_type": "display_data"
198 "part2_extract \"1122\""
203 "execution_count": 46,
213 "output_type": "display_data"
222 "execution_count": 47,
228 "[\"11\",\"22\",\"11\",\"22\"]"
232 "output_type": "display_data"
236 "part2_extract \"1212\""
241 "execution_count": 48,
251 "output_type": "display_data"
260 "execution_count": 49,
266 "[\"12\",\"21\",\"21\",\"12\"]"
270 "output_type": "display_data"
274 "part2_extract \"1221\""
279 "execution_count": 50,
289 "output_type": "display_data"
298 "execution_count": 51,
304 "[\"14\",\"22\",\"35\",\"41\",\"22\",\"53\"]"
308 "output_type": "display_data"
312 "part2_extract \"123425\""
317 "execution_count": 52,
327 "output_type": "display_data"
336 "execution_count": 53,
342 "[\"11\",\"22\",\"33\",\"11\",\"22\",\"33\"]"
346 "output_type": "display_data"
350 "part2_extract \"123123\""
355 "execution_count": 54,
365 "output_type": "display_data"
374 "execution_count": 55,
380 "[\"11\",\"24\",\"11\",\"35\",\"11\",\"42\",\"11\",\"53\"]"
384 "output_type": "display_data"
388 "part2_extract \"12131415\""
393 "execution_count": 56,
403 "output_type": "display_data"
412 "execution_count": 57,
418 " digits <- readFile \"../../data/advent01.txt\"\n",
419 " print $ part1 digits\n",
420 " print $ part2 digits"
425 "execution_count": 58,
436 "output_type": "display_data"
445 "execution_count": null,
453 "display_name": "Haskell",
454 "language": "haskell",
458 "codemirror_mode": "ihaskell",
459 "file_extension": ".hs",