X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=adventofcode1702%2Fapp%2Fadvent02.ipynb;fp=adventofcode1702%2Fapp%2Fadvent02.ipynb;h=0000000000000000000000000000000000000000;hb=0d01bb3582b4b7f5ee86ff37a8136161c5c061c3;hp=66a1ac908026510654c37193b4653becb4b43f6f;hpb=89bf7fd456e520c5483fa138b5a49f07f2703df4;p=advent-of-code-17.git diff --git a/adventofcode1702/app/advent02.ipynb b/adventofcode1702/app/advent02.ipynb deleted file mode 100644 index 66a1ac9..0000000 --- a/adventofcode1702/app/advent02.ipynb +++ /dev/null @@ -1,325 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "{-# LANGUAGE NegativeLiterals #-}\n", - "{-# LANGUAGE FlexibleContexts #-}" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "import Text.Parsec \n", - "import Text.ParserCombinators.Parsec.Number" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "sFile = sLine `sepEndBy` newline \n", - "sLine = int `sepBy` onlySpaces" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "onlySpaces = many (oneOf \" \\t\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "parseFile :: String -> Either ParseError [[Int]]\n", - "parseFile input = parse sFile \"(unknown)\" input\n", - "\n", - "parseLine :: String -> Either ParseError [Int]\n", - "parseLine input = parse sLine \"(unknown)\" input\n", - "\n", - "successfulParse :: Either ParseError [a] -> [a]\n", - "successfulParse (Left _) = []\n", - "successfulParse (Right a) = a" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [], - "source": [ - "main :: IO ()\n", - "main = do \n", - " text <- readFile \"../../data/advent02.txt\"\n", - " let sheet = successfulParse $ parseFile text\n", - "-- print sheet\n", - " print $ part1 sheet\n", - " print $ part2 sheet" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "39126\n", - "258" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "main" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Right [179,2358,5197,867,163,4418,3135,5049,187,166,4682,5080,5541,172,4294,1397]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "parseLine \"179 2358 5197 867 163 4418 3135 5049 187 166 4682 5080 5541 172 4294 1397\"" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Right [[1,2],[8,9]]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "parseFile \"1 2\\n8 9\"" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[1,2],[8,9]]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "successfulParse $ parseFile \"1 2\\n8 9\"" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "cSum :: [Int] -> Int\n", - "cSum row = (maximum row) - (minimum row)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [], - "source": [ - "check :: [[Int]] -> Int\n", - "check = sum . (map cSum)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "check $ successfulParse $ parseFile \"1 2\\n8 9\"" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "part1 = check" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(2,1),(3,1),(4,1),(4,2)]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "digits = [1,2,3,4]\n", - "[(a, b) | a <- digits, b <- digits, a /= b, a `mod` b == 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(1,1),(2,2),(3,3),(4,4)]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "zip digits digits" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[179,2358,5197,867,163,4418,3135,5049,187,166,4682,5080,5541,172,4294,1397]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "Right digits = parseLine \"179 2358 5197 867 163 4418 3135 5049 187 166 4682 5080 5541 172 4294 1397\"\n", - "digits" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "27" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "sum [a `div` b | a <- digits, b <- digits, a /= b, a `mod` b == 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [], - "source": [ - "p2cSum digits = sum [a `div` b | a <- digits, b <- digits, a /= b, a `mod` b == 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [], - "source": [ - "part2 = sum . map p2cSum" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Haskell", - "language": "haskell", - "name": "haskell" - }, - "language_info": { - "codemirror_mode": "ihaskell", - "file_extension": ".hs", - "name": "haskell", - "version": "8.0.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}