{
"cells": [
{
"cell_type": "code",
"execution_count": 274,
"metadata": {
"Collapsed": "false"
},
"outputs": [],
"source": [
"import glob\n",
"import json\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 275,
"metadata": {
"Collapsed": "false",
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent01) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent01' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent01' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent01' for advent-of-code21-0.1.0.0..\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent01/build/advent01/advent01 ...\n",
"1521\n",
"1543\n",
" 20,426,624 bytes allocated in the heap\n",
" 1,552,136 bytes copied during GC\n",
" 412,104 bytes maximum residency (2 sample(s))\n",
" 136,760 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 3 colls, 3 par 0.002s 0.001s 0.0003s 0.0003s\n",
" Gen 1 2 colls, 1 par 0.002s 0.001s 0.0004s 0.0004s\n",
"\n",
" Parallel GC work balance: 29.88% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.013s ( 0.012s elapsed)\n",
" GC time 0.004s ( 0.001s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.023s ( 0.017s elapsed)\n",
"\n",
" Alloc rate 1,561,715,663 bytes per MUT second\n",
"\n",
" Productivity 57.8% of total user, 71.1% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent02) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent02' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent02' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent02' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent02/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent02/build/advent02/advent02-tmp/Main.dyn_o ) [Data.Attoparsec.Text changed]\n",
"\n",
"\u001b[;1madvent02/Main.hs:55:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" courseP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Command]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m55 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mcourseP\u001b[0m\u001b[0m = commandP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent02/Main.hs:56:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" commandP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Command\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m56 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mcommandP\u001b[0m\u001b[0m = forwardP <|> upP <|> downP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent02/Main.hs:58:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" forwardP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Command\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m58 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mforwardP\u001b[0m\u001b[0m = Forward <$> (\"forward \" *> decimal)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent02/Main.hs:59:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" upP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Command\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m59 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mupP\u001b[0m\u001b[0m = Up <$> (\"up \" *> decimal)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent02/Main.hs:60:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" downP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Command\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m60 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mdownP\u001b[0m\u001b[0m = Down <$> (\"down \" *> decimal)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent02/Main.hs:63:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> [Command]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m63 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent02/build/advent02/advent02 ...\n",
"2039912\n",
"1942068080\n",
" 2,701,328 bytes allocated in the heap\n",
" 64 bytes copied during GC\n",
" 223,280 bytes maximum residency (1 sample(s))\n",
" 124,880 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 0 colls, 0 par 0.000s 0.000s 0.0000s 0.0000s\n",
" Gen 1 1 colls, 0 par 0.000s 0.000s 0.0003s 0.0003s\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.003s elapsed)\n",
" MUT time 0.003s ( 0.003s elapsed)\n",
" GC time 0.000s ( 0.000s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.002s elapsed)\n",
" Total time 0.009s ( 0.007s elapsed)\n",
"\n",
" Alloc rate 975,508,007 bytes per MUT second\n",
"\n",
" Productivity 29.6% of total user, 39.3% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent03) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent03' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent03' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent03' for advent-of-code21-0.1.0.0..\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent03/build/advent03/advent03 ...\n",
"2724524\n",
"2775870\n",
" 12,725,280 bytes allocated in the heap\n",
" 3,135,472 bytes copied during GC\n",
" 214,088 bytes maximum residency (1 sample(s))\n",
" 125,880 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 2 colls, 2 par 0.005s 0.004s 0.0021s 0.0024s\n",
" Gen 1 1 colls, 0 par 0.000s 0.000s 0.0004s 0.0004s\n",
"\n",
" Parallel GC work balance: 8.64% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.008s ( 0.007s elapsed)\n",
" GC time 0.006s ( 0.005s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.019s ( 0.015s elapsed)\n",
"\n",
" Alloc rate 1,635,549,285 bytes per MUT second\n",
"\n",
" Productivity 40.4% of total user, 47.5% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent04) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent04' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent04' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent04' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent04/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent04/build/advent04/advent04-tmp/Main.dyn_o ) [Data.Attoparsec.Text changed]\n",
"\n",
"\u001b[;1madvent04/Main.hs:72:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘forceCall’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m72 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mforceCall\u001b[0m\u001b[0m (BingoNum n _) = BingoNum n True\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:99:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" bingoP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text ([Int], [[[Int]]])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m99 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mbingoP\u001b[0m\u001b[0m = (,) <$> calledP <*> (blankLines *> squaresP)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:101:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" calledP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Int]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m101 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mcalledP\u001b[0m\u001b[0m = decimal `sepBy` \",\"\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:103:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" squaresP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [[[Int]]]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m103 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msquaresP\u001b[0m\u001b[0m = squareP `sepBy` blankLines\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:104:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" squareP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [[Int]]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m104 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msquareP\u001b[0m\u001b[0m = rowP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:105:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" rowP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Int]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m105 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mrowP\u001b[0m\u001b[0m = paddedDecimal `sepBy1` \" \"\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:108:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" paddedDecimal :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m108 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpaddedDecimal\u001b[0m\u001b[0m = (many \" \") *> decimal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:110:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" blankLines :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [()]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m110 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mblankLines\u001b[0m\u001b[0m = many1 endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent04/Main.hs:113:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> ([Int], [[[Int]]])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m113 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent04/build/advent04/advent04 ...\n",
"82440\n",
"20774\n",
" 87,851,256 bytes allocated in the heap\n",
" 15,993,040 bytes copied during GC\n",
" 2,460,448 bytes maximum residency (4 sample(s))\n",
" 153,864 bytes maximum slop\n",
" 65 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 18 colls, 18 par 0.016s 0.012s 0.0007s 0.0010s\n",
" Gen 1 4 colls, 3 par 0.040s 0.006s 0.0015s 0.0037s\n",
"\n",
" Parallel GC work balance: 28.31% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.038s ( 0.033s elapsed)\n",
" GC time 0.057s ( 0.018s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.100s ( 0.054s elapsed)\n",
"\n",
" Alloc rate 2,339,122,861 bytes per MUT second\n",
"\n",
" Productivity 37.5% of total user, 60.6% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent05) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent05' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent05' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent05' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent05/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent05/build/advent05/advent05-tmp/Main.dyn_o ) [Linear changed]\n",
"\n",
"\u001b[;1madvent05/Main.hs:7:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘Control.Applicative’ is redundant\n",
" except perhaps to import instances from ‘Control.Applicative’\n",
" To import instances alone, use: import Control.Applicative()\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m7 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Control.Applicative\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent05/Main.hs:26:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part1 :: [Line] -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m26 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart1\u001b[0m\u001b[0m trace = M.size $ M.filter (> 1) diagram\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent05/Main.hs:30:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part2 :: [Line] -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m30 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart2\u001b[0m\u001b[0m trace = M.size $ M.filter (> 1) diagram\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent05/Main.hs:66:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" traceP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Line]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m66 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mtraceP\u001b[0m\u001b[0m = lineP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent05/Main.hs:67:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" lineP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Line\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m67 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mlineP\u001b[0m\u001b[0m = Line <$> (pointP <* \" -> \") <*> pointP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent05/Main.hs:68:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" pointP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (V2 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m68 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpointP\u001b[0m\u001b[0m = V2 <$> (decimal <* \",\") <*> decimal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent05/Main.hs:71:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> [Line]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m71 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent05/build/advent05/advent05 ...\n",
"5092\n",
"20484\n",
" 575,260,608 bytes allocated in the heap\n",
" 446,639,040 bytes copied during GC\n",
" 24,474,608 bytes maximum residency (14 sample(s))\n",
" 367,632 bytes maximum slop\n",
" 115 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 106 colls, 106 par 0.208s 0.183s 0.0017s 0.0045s\n",
" Gen 1 14 colls, 13 par 0.528s 0.105s 0.0075s 0.0152s\n",
"\n",
" Parallel GC work balance: 25.86% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.393s ( 0.353s elapsed)\n",
" GC time 0.716s ( 0.268s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.020s ( 0.020s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 1.135s ( 0.644s elapsed)\n",
"\n",
" Alloc rate 1,464,438,774 bytes per MUT second\n",
"\n",
" Productivity 36.4% of total user, 58.0% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent06) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent06' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent06' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent06' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent06/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent06/build/advent06/advent06-tmp/Main.dyn_o ) [Data.List.Split changed]\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent06/build/advent06/advent06 ...\n",
"352195\n",
"1600306001288\n",
" 3,994,656 bytes allocated in the heap\n",
" 64 bytes copied during GC\n",
" 223,184 bytes maximum residency (1 sample(s))\n",
" 124,976 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 0 colls, 0 par 0.000s 0.000s 0.0000s 0.0000s\n",
" Gen 1 1 colls, 0 par 0.000s 0.000s 0.0004s 0.0004s\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.004s ( 0.004s elapsed)\n",
" GC time 0.000s ( 0.000s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.009s ( 0.007s elapsed)\n",
"\n",
" Alloc rate 1,117,434,116 bytes per MUT second\n",
"\n",
" Productivity 38.0% of total user, 50.0% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent07) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent07' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent07' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent07' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent07/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent07/build/advent07/advent07-tmp/Main.dyn_o ) [Data.List.Split changed]\n",
"\n",
"\u001b[;1madvent07/Main.hs:12:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part1 :: [Int] -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m12 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart1\u001b[0m\u001b[0m = bestFuel loss1\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent07/Main.hs:13:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part2 :: [Int] -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m13 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart2\u001b[0m\u001b[0m = bestFuel loss2\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent07/build/advent07/advent07 ...\n",
"336721\n",
"91638945\n",
" 9,374,760 bytes allocated in the heap\n",
" 532,856 bytes copied during GC\n",
" 318,896 bytes maximum residency (2 sample(s))\n",
" 135,760 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 1 colls, 1 par 0.001s 0.000s 0.0002s 0.0002s\n",
" Gen 1 2 colls, 1 par 0.002s 0.001s 0.0003s 0.0004s\n",
"\n",
" Parallel GC work balance: 55.07% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.009s ( 0.009s elapsed)\n",
" GC time 0.002s ( 0.001s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.017s ( 0.012s elapsed)\n",
"\n",
" Alloc rate 1,025,488,891 bytes per MUT second\n",
"\n",
" Productivity 53.8% of total user, 70.2% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent08) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent08' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent08' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent08' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent08/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent08/build/advent08/advent08-tmp/Main.dyn_o ) [Data.Attoparsec.Text changed]\n",
"\n",
"\u001b[;1madvent08/Main.hs:99:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" displaysP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Display]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m99 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mdisplaysP\u001b[0m\u001b[0m = displayP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent08/Main.hs:100:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" displayP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Display\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m100 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mdisplayP\u001b[0m\u001b[0m = Display <$> (patternsP <* \" | \") <*> patternsP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent08/Main.hs:102:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" patternsP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [[Char]]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m102 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpatternsP\u001b[0m\u001b[0m = patternP `sepBy` \" \"\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent08/Main.hs:103:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" patternP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Char]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m103 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpatternP\u001b[0m\u001b[0m = many1 letter\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent08/Main.hs:106:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> [Display]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m106 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent08/build/advent08/advent08 ...\n",
"255\n",
"982158\n",
" 3,831,978,128 bytes allocated in the heap\n",
" 41,889,816 bytes copied during GC\n",
" 2,251,264 bytes maximum residency (19 sample(s))\n",
" 162,616 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 906 colls, 906 par 0.240s 0.062s 0.0001s 0.0012s\n",
" Gen 1 19 colls, 18 par 0.078s 0.031s 0.0016s 0.0025s\n",
"\n",
" Parallel GC work balance: 32.00% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 1.966s ( 1.771s elapsed)\n",
" GC time 0.304s ( 0.080s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.014s ( 0.014s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 2.290s ( 1.868s elapsed)\n",
"\n",
" Alloc rate 1,949,274,255 bytes per MUT second\n",
"\n",
" Productivity 86.5% of total user, 95.5% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent09) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent09' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent09' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent09' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent09/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent09/build/advent09/advent09-tmp/Main.dyn_o ) [Linear changed]\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent09/build/advent09/advent09 ...\n",
"15\n",
"1134\n",
" 632,576 bytes allocated in the heap\n",
" 64 bytes copied during GC\n",
" 223,184 bytes maximum residency (1 sample(s))\n",
" 124,976 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 0 colls, 0 par 0.000s 0.000s 0.0000s 0.0000s\n",
" Gen 1 1 colls, 0 par 0.000s 0.000s 0.0003s 0.0003s\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.001s ( 0.001s elapsed)\n",
" GC time 0.000s ( 0.000s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.007s ( 0.004s elapsed)\n",
"\n",
" Alloc rate 1,193,744,586 bytes per MUT second\n",
"\n",
" Productivity 8.1% of total user, 14.0% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent10) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent10' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent10' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent10' for advent-of-code21-0.1.0.0..\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent10/build/advent10/advent10 ...\n",
"339537\n",
"2412013412\n",
" 3,868,496 bytes allocated in the heap\n",
" 64 bytes copied during GC\n",
" 223,184 bytes maximum residency (1 sample(s))\n",
" 124,976 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 0 colls, 0 par 0.000s 0.000s 0.0000s 0.0000s\n",
" Gen 1 1 colls, 0 par 0.000s 0.000s 0.0003s 0.0003s\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.003s ( 0.003s elapsed)\n",
" GC time 0.000s ( 0.000s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.009s ( 0.006s elapsed)\n",
"\n",
" Alloc rate 1,516,570,168 bytes per MUT second\n",
"\n",
" Productivity 29.7% of total user, 42.9% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent11) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent11' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent11' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent11' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent11/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent11/build/advent11/advent11-tmp/Main.dyn_o ) [Linear changed]\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent11/build/advent11/advent11 ...\n",
"1627\n",
"329\n",
" 54,909,424 bytes allocated in the heap\n",
" 1,785,512 bytes copied during GC\n",
" 268,416 bytes maximum residency (2 sample(s))\n",
" 141,184 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 12 colls, 12 par 0.005s 0.002s 0.0001s 0.0002s\n",
" Gen 1 2 colls, 1 par 0.002s 0.001s 0.0003s 0.0004s\n",
"\n",
" Parallel GC work balance: 20.48% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.031s ( 0.028s elapsed)\n",
" GC time 0.006s ( 0.002s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.044s ( 0.034s elapsed)\n",
"\n",
" Alloc rate 1,758,386,456 bytes per MUT second\n",
"\n",
" Productivity 71.4% of total user, 83.2% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent12) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent12' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent12' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent12' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent12/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent12/build/advent12/advent12-tmp/Main.dyn_o ) [Data.Attoparsec.Text changed]\n",
"\n",
"\u001b[;1madvent12/Main.hs:85:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" graphP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [([Char], [Char])]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m85 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgraphP\u001b[0m\u001b[0m = edgeP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent12/Main.hs:86:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" edgeP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text ([Char], [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m86 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35medgeP\u001b[0m\u001b[0m = (,) <$> many1 letter <* \"-\" <*> many1 letter\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent12/Main.hs:89:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> [([Char], [Char])]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m89 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent12/build/advent12/advent12 ...\n",
"4495\n",
"131254\n",
" 1,018,073,152 bytes allocated in the heap\n",
" 457,994,984 bytes copied during GC\n",
" 38,962,240 bytes maximum residency (19 sample(s))\n",
" 366,016 bytes maximum slop\n",
" 129 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 227 colls, 227 par 0.234s 0.181s 0.0008s 0.0049s\n",
" Gen 1 19 colls, 18 par 1.223s 0.291s 0.0153s 0.0553s\n",
"\n",
" Parallel GC work balance: 57.92% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 1.524s ( 1.436s elapsed)\n",
" GC time 1.323s ( 0.338s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.135s ( 0.134s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 2.987s ( 1.911s elapsed)\n",
"\n",
" Alloc rate 668,225,062 bytes per MUT second\n",
"\n",
" Productivity 55.5% of total user, 82.1% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent13) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent13' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent13' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent13' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent13/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent13/build/advent13/advent13-tmp/Main.dyn_o ) [Linear changed]\n",
"\n",
"\u001b[;1madvent13/Main.hs:11:24: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘^+^’ from module ‘Linear’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m11 |\u001b[0m\u001b[0m import Linear (V2(..), \u001b[;1m\u001b[35m(^+^)\u001b[0m\u001b[0m)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent13/Main.hs:66:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" inputP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (S.Set (V2 Int), [Fold])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m66 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35minputP\u001b[0m\u001b[0m = (,) <$> sheetP <* many1 endOfLine <*> foldsP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent13/Main.hs:68:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" sheetP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (S.Set (V2 Int))\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m68 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msheetP\u001b[0m\u001b[0m = S.fromList <$> dotP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent13/Main.hs:69:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" dotP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (V2 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m69 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mdotP\u001b[0m\u001b[0m = V2 <$> decimal <* \",\" <*> decimal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent13/Main.hs:71:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" foldsP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Fold]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m71 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mfoldsP\u001b[0m\u001b[0m = foldP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent13/Main.hs:72:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" foldP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Fold\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m72 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mfoldP\u001b[0m\u001b[0m = Fold <$> (\"fold along \" *> axisP) <* \"=\" <*> decimal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent13/Main.hs:74:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" axisP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Axis\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m74 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35maxisP\u001b[0m\u001b[0m = (\"x\" *> pure X) <|> (\"y\" *> pure Y)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent13/Main.hs:77:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text\n",
" -> (S.Set (V2 Int), [Fold])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m77 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent13/build/advent13/advent13 ...\n",
"763\n",
"███ █ █ ██ █ ███ ██ ███ ██ \n",
"█ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n",
"█ █ ████ █ █ █ █ █ █ █ █ █ █\n",
"███ █ █ ████ █ ███ █ ███ ████\n",
"█ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n",
"█ █ █ █ █ █ ████ █ █ ██ █ █ █ █\n",
"\n",
" 6,531,504 bytes allocated in the heap\n",
" 354,392 bytes copied during GC\n",
" 214,088 bytes maximum residency (1 sample(s))\n",
" 125,880 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 1 colls, 1 par 0.001s 0.000s 0.0002s 0.0002s\n",
" Gen 1 1 colls, 0 par 0.000s 0.000s 0.0003s 0.0003s\n",
"\n",
" Parallel GC work balance: 31.97% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.006s ( 0.006s elapsed)\n",
" GC time 0.001s ( 0.001s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.013s ( 0.009s elapsed)\n",
"\n",
" Alloc rate 1,104,134,445 bytes per MUT second\n",
"\n",
" Productivity 46.5% of total user, 62.0% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent14) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent14' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent14' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent14' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent14/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent14/build/advent14/advent14-tmp/Main.dyn_o ) [Data.MultiSet changed]\n",
"\n",
"\u001b[;1madvent14/Main.hs:7:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘Control.Applicative’ is redundant\n",
" except perhaps to import instances from ‘Control.Applicative’\n",
" To import instances alone, use: import Control.Applicative()\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m7 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Control.Applicative\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:67:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-local-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘elems’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m67 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35melems\u001b[0m\u001b[0m = S.union (MS.toSet firsts) (MS.toSet seconds)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:73:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" stringify :: (a, a) -> [a]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m73 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mstringify\u001b[0m\u001b[0m (a, b) = [a, b]\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:81:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" inputP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text ([Char], M.Map [Char] [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m81 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35minputP\u001b[0m\u001b[0m = (,) <$> (many1 letter) <* many1 endOfLine <*> rulesP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:83:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" rulesP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (M.Map [Char] [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m83 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mrulesP\u001b[0m\u001b[0m = M.fromList <$> ruleP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:84:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" ruleP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text ([Char], [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m84 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mruleP\u001b[0m\u001b[0m = (,) <$> many1 letter <* \" -> \" <*> many1 letter\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:87:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text\n",
" -> ([Char], M.Map [Char] [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m87 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"[1 of 1] Compiling Main ( advent14/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent14/build/advent14/advent14-tmp/Main.p_o )\n",
"\n",
"\u001b[;1madvent14/Main.hs:7:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘Control.Applicative’ is redundant\n",
" except perhaps to import instances from ‘Control.Applicative’\n",
" To import instances alone, use: import Control.Applicative()\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m7 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Control.Applicative\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:67:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-local-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘elems’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m67 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35melems\u001b[0m\u001b[0m = S.union (MS.toSet firsts) (MS.toSet seconds)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:73:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" stringify :: (a, a) -> [a]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m73 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mstringify\u001b[0m\u001b[0m (a, b) = [a, b]\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:81:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" inputP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text ([Char], M.Map [Char] [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m81 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35minputP\u001b[0m\u001b[0m = (,) <$> (many1 letter) <* many1 endOfLine <*> rulesP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:83:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" rulesP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (M.Map [Char] [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m83 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mrulesP\u001b[0m\u001b[0m = M.fromList <$> ruleP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:84:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" ruleP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text ([Char], [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m84 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mruleP\u001b[0m\u001b[0m = (,) <$> many1 letter <* \" -> \" <*> many1 letter\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent14/Main.hs:87:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text\n",
" -> ([Char], M.Map [Char] [Char])\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m87 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent14/build/advent14/advent14 ...\n",
"2712\n",
"8336623059567\n",
" 23,386,192 bytes allocated in the heap\n",
" 469,768 bytes copied during GC\n",
" 265,168 bytes maximum residency (2 sample(s))\n",
" 140,336 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 4 colls, 4 par 0.002s 0.000s 0.0001s 0.0002s\n",
" Gen 1 2 colls, 1 par 0.002s 0.001s 0.0003s 0.0003s\n",
"\n",
" Parallel GC work balance: 57.81% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.014s ( 0.012s elapsed)\n",
" GC time 0.003s ( 0.001s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.023s ( 0.016s elapsed)\n",
"\n",
" Alloc rate 1,717,613,851 bytes per MUT second\n",
"\n",
" Productivity 60.5% of total user, 75.8% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent15) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent15' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent15' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent15' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent15/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent15/build/advent15/advent15-tmp/Main.dyn_o ) [Linear changed]\n",
"\n",
"\u001b[;1madvent15/Main.hs:10:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘<|, ><’ from module ‘Data.Sequence’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m10 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Data.Sequence ((<|), (|>), (><))\u001b[0m\u001b[0m --, ViewR( (:>) ), ViewL( (:<) ))\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:11:31: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘sum’ from module ‘Data.Foldable’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m11 |\u001b[0m\u001b[0m import Data.Foldable (foldl', \u001b[;1m\u001b[35msum\u001b[0m\u001b[0m) -- (toList, foldr', foldl', all)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:16:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘*^, ^*’ from module ‘Linear’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m16 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Linear (V2(..), (^+^), (^-^), (*^), (^*))\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:19:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘Empty’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m19 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern Empty <- (Q.viewl -> Q.EmptyL) where Empty = Q.empty\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:19:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern Main.Empty :: forall {a}. Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m19 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern Empty <- (Q.viewl -> Q.EmptyL) where Empty = Q.empty\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:20:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘:<’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m20 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern x :< xs <- (Q.viewl -> x Q.:< xs) where (:<) = (Q.<|)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:20:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern (:<) :: forall {a}. a -> Q.Seq a -> Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m20 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern x :< xs <- (Q.viewl -> x Q.:< xs) where (:<) = (Q.<|)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:21:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘:>’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m21 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern xs :> x <- (Q.viewr -> xs Q.:> x) where (:>) = (Q.|>)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:21:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern (:>) :: forall {a}. Q.Seq a -> a -> Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m21 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern xs :> x <- (Q.viewr -> xs Q.:> x) where (:>) = (Q.|>)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:34:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘grid’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m34 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mmakeLenses ''Cave\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:34:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘goal’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m34 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mmakeLenses ''Cave\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:44:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘cost’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m44 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mmakeLenses ''Agendum\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:51:5: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘unwrapPos’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m51 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35munwrapPos :: s -> BasePosition\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:67:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m67 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:78:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m78 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:84:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m84 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:88:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m88 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:99:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m99 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:114:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m114 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:120:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m120 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:124:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m124 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:129:13: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘cost’ shadows the existing binding\n",
" defined at advent15/Main.hs:44:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m129 |\u001b[0m\u001b[0m let !\u001b[;1m\u001b[35mcost\u001b[0m\u001b[0m = (gridCost - 1 + tileR + tileC) `mod` 9 + 1\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:151:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m151 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m = listArray ((V2 0 0), (V2 r c)) $ map mkCell $ concat rows\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:207:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m207 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:207:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘grid’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m207 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"[1 of 1] Compiling Main ( advent15/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent15/build/advent15/advent15-tmp/Main.p_o )\n",
"\n",
"\u001b[;1madvent15/Main.hs:10:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘<|, ><’ from module ‘Data.Sequence’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m10 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Data.Sequence ((<|), (|>), (><))\u001b[0m\u001b[0m --, ViewR( (:>) ), ViewL( (:<) ))\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:11:31: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘sum’ from module ‘Data.Foldable’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m11 |\u001b[0m\u001b[0m import Data.Foldable (foldl', \u001b[;1m\u001b[35msum\u001b[0m\u001b[0m) -- (toList, foldr', foldl', all)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:16:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘*^, ^*’ from module ‘Linear’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m16 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Linear (V2(..), (^+^), (^-^), (*^), (^*))\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:19:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘Empty’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m19 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern Empty <- (Q.viewl -> Q.EmptyL) where Empty = Q.empty\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:19:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern Main.Empty :: forall {a}. Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m19 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern Empty <- (Q.viewl -> Q.EmptyL) where Empty = Q.empty\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:20:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘:<’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m20 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern x :< xs <- (Q.viewl -> x Q.:< xs) where (:<) = (Q.<|)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:20:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern (:<) :: forall {a}. a -> Q.Seq a -> Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m20 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern x :< xs <- (Q.viewl -> x Q.:< xs) where (:<) = (Q.<|)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:21:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘:>’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m21 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern xs :> x <- (Q.viewr -> xs Q.:> x) where (:>) = (Q.|>)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:21:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern (:>) :: forall {a}. Q.Seq a -> a -> Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m21 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern xs :> x <- (Q.viewr -> xs Q.:> x) where (:>) = (Q.|>)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:34:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘grid’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m34 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mmakeLenses ''Cave\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:34:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘goal’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m34 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mmakeLenses ''Cave\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:44:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘cost’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m44 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mmakeLenses ''Agendum\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:51:5: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘unwrapPos’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m51 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35munwrapPos :: s -> BasePosition\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:67:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m67 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:78:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m78 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:84:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m84 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:88:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m88 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:99:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m99 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:114:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m114 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:120:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘goal’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m120 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgoal\u001b[0m\u001b[0m <- asks _goal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:124:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m124 |\u001b[0m\u001b[0m do \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:129:13: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘cost’ shadows the existing binding\n",
" defined at advent15/Main.hs:44:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m129 |\u001b[0m\u001b[0m let !\u001b[;1m\u001b[35mcost\u001b[0m\u001b[0m = (gridCost - 1 + tileR + tileC) `mod` 9 + 1\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:151:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m151 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m = listArray ((V2 0 0), (V2 r c)) $ map mkCell $ concat rows\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:207:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘grid’ shadows the existing binding\n",
" defined at advent15/Main.hs:34:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m207 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent15/Main.hs:207:8: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘grid’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m207 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgrid\u001b[0m\u001b[0m <- asks _grid\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent15/build/advent15/advent15 ...\n",
"503\n",
"2853\n",
" 3,777,538,616 bytes allocated in the heap\n",
" 924,751,680 bytes copied during GC\n",
" 28,278,080 bytes maximum residency (39 sample(s))\n",
" 904,040 bytes maximum slop\n",
" 111 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 873 colls, 873 par 0.879s 0.676s 0.0008s 0.0016s\n",
" Gen 1 39 colls, 38 par 1.118s 0.304s 0.0078s 0.0202s\n",
"\n",
" Parallel GC work balance: 39.64% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 3.163s ( 2.865s elapsed)\n",
" GC time 1.823s ( 0.808s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.173s ( 0.172s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 5.165s ( 3.848s elapsed)\n",
"\n",
" Alloc rate 1,194,300,602 bytes per MUT second\n",
"\n",
" Productivity 64.6% of total user, 78.9% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent16) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent16' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent16' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent16' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent16/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent16/build/advent16/advent16-tmp/Main.dyn_o ) [Data.Bitstream changed]\n",
"\n",
"\u001b[;1madvent16/Main.hs:58:38: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wtype-defaults\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" • Defaulting the following constraints to type ‘Integer’\n",
" (Integral n0)\n",
" arising from a use of ‘BS.take’ at advent16/Main.hs:58:38-44\n",
" (Num n0) arising from the literal ‘1’ at advent16/Main.hs:58:46\n",
" • In the second argument of ‘($)’, namely ‘BS.take 1 bs’\n",
" In the second argument of ‘($)’, namely ‘BS.unpack $ BS.take 1 bs’\n",
" In the expression: head $ BS.unpack $ BS.take 1 bs\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m58 |\u001b[0m\u001b[0m let value = head $ BS.unpack $ \u001b[;1m\u001b[35mBS.take\u001b[0m\u001b[0m 1 bs\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent16/Main.hs:59:13: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wtype-defaults\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" • Defaulting the following constraints to type ‘Integer’\n",
" (Integral n0)\n",
" arising from a use of ‘BS.drop’ at advent16/Main.hs:59:13-19\n",
" (Num n0) arising from the literal ‘1’ at advent16/Main.hs:59:21\n",
" • In the second argument of ‘($)’, namely ‘BS.drop 1 bs’\n",
" In a stmt of a 'do' block: _ <- put $ BS.drop 1 bs\n",
" In the expression:\n",
" do bs <- get\n",
" let value = head $ BS.unpack $ BS.take 1 bs\n",
" put $ BS.drop 1 bs\n",
" return value\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m59 |\u001b[0m\u001b[0m put $ \u001b[;1m\u001b[35mBS.drop\u001b[0m\u001b[0m 1 bs\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent16/Main.hs:123:29: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a case alternative:\n",
" Patterns of type ‘Integer’ not matched:\n",
" p where p is not one of {7, 6, 5, ...}\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m123 |\u001b[0m\u001b[0m mkOperator pType contents = \u001b[;1m\u001b[35mcase pType of\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^...\u001b[0m\u001b[0m\n",
"[1 of 1] Compiling Main ( advent16/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent16/build/advent16/advent16-tmp/Main.p_o )\n",
"\n",
"\u001b[;1madvent16/Main.hs:58:38: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wtype-defaults\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" • Defaulting the following constraints to type ‘Integer’\n",
" (Integral n0)\n",
" arising from a use of ‘BS.take’ at advent16/Main.hs:58:38-44\n",
" (Num n0) arising from the literal ‘1’ at advent16/Main.hs:58:46\n",
" • In the second argument of ‘($)’, namely ‘BS.take 1 bs’\n",
" In the second argument of ‘($)’, namely ‘BS.unpack $ BS.take 1 bs’\n",
" In the expression: head $ BS.unpack $ BS.take 1 bs\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m58 |\u001b[0m\u001b[0m let value = head $ BS.unpack $ \u001b[;1m\u001b[35mBS.take\u001b[0m\u001b[0m 1 bs\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent16/Main.hs:59:13: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wtype-defaults\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" • Defaulting the following constraints to type ‘Integer’\n",
" (Integral n0)\n",
" arising from a use of ‘BS.drop’ at advent16/Main.hs:59:13-19\n",
" (Num n0) arising from the literal ‘1’ at advent16/Main.hs:59:21\n",
" • In the second argument of ‘($)’, namely ‘BS.drop 1 bs’\n",
" In a stmt of a 'do' block: _ <- put $ BS.drop 1 bs\n",
" In the expression:\n",
" do bs <- get\n",
" let value = head $ BS.unpack $ BS.take 1 bs\n",
" put $ BS.drop 1 bs\n",
" return value\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m59 |\u001b[0m\u001b[0m put $ \u001b[;1m\u001b[35mBS.drop\u001b[0m\u001b[0m 1 bs\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent16/Main.hs:123:29: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a case alternative:\n",
" Patterns of type ‘Integer’ not matched:\n",
" p where p is not one of {7, 6, 5, ...}\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m123 |\u001b[0m\u001b[0m mkOperator pType contents = \u001b[;1m\u001b[35mcase pType of\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^...\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent16/build/advent16/advent16 ...\n",
"852\n",
"19348959966392\n",
" 13,136,984 bytes allocated in the heap\n",
" 719,248 bytes copied during GC\n",
" 995,112 bytes maximum residency (2 sample(s))\n",
" 217,304 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 2 colls, 2 par 0.001s 0.001s 0.0003s 0.0003s\n",
" Gen 1 2 colls, 1 par 0.003s 0.001s 0.0005s 0.0006s\n",
"\n",
" Parallel GC work balance: 40.78% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.003s elapsed)\n",
" MUT time 0.012s ( 0.011s elapsed)\n",
" GC time 0.004s ( 0.002s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.023s ( 0.016s elapsed)\n",
"\n",
" Alloc rate 1,086,681,415 bytes per MUT second\n",
"\n",
" Productivity 52.3% of total user, 68.8% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent17) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent17' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent17' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent17' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent17/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent17/build/advent17/advent17-tmp/Main.dyn_o ) [Linear changed]\n",
"\n",
"\u001b[;1madvent17/Main.hs:8:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-imports\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" The import of ‘_x, _y’ from module ‘Linear’ is redundant\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m8 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mimport Linear (V2(..), (^+^), _x, _y)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent17/Main.hs:63:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" targetP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (V2 Int, V2 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m63 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mtargetP\u001b[0m\u001b[0m = boundify <$> (\"target area: x=\" *> regionP) <*> (\", y=\" *> regionP)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent17/Main.hs:66:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" regionP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (Int, Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m66 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mregionP\u001b[0m\u001b[0m = (,) <$> (signed decimal <* \"..\") <*> signed decimal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent17/Main.hs:69:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> (V2 Int, V2 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m69 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent17/build/advent17/advent17 ...\n",
"5995\n",
"3202\n",
" 142,847,576 bytes allocated in the heap\n",
" 15,235,936 bytes copied during GC\n",
" 264,784 bytes maximum residency (5 sample(s))\n",
" 133,288 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 30 colls, 30 par 0.014s 0.007s 0.0002s 0.0020s\n",
" Gen 1 5 colls, 4 par 0.005s 0.001s 0.0002s 0.0003s\n",
"\n",
" Parallel GC work balance: 4.59% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.052s ( 0.045s elapsed)\n",
" GC time 0.019s ( 0.009s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.000s ( 0.000s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.077s ( 0.057s elapsed)\n",
"\n",
" Alloc rate 2,728,607,274 bytes per MUT second\n",
"\n",
" Productivity 68.0% of total user, 78.6% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent18) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent18' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent18' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent18' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent18/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent18/build/advent18/advent18-tmp/Main.dyn_o ) [Data.Attoparsec.Text changed]\n",
"\n",
"\u001b[;1madvent18/Main.hs:33:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part1 :: [Tree] -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m33 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart1\u001b[0m\u001b[0m numbers = magnitude total\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:36:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" part2 :: (Foldable t, Monad t) => t Tree -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m36 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart2\u001b[0m\u001b[0m numbers = maximum [ magnitude $ snailAdd a b \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:45:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In an equation for ‘left’:\n",
" Patterns of type ‘(Tree, Cxt)’ not matched:\n",
" ((Leaf _), Top)\n",
" ((Leaf _), (L _ _))\n",
" ((Leaf _), (R _ _))\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m45 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mleft (Pair l r, c) = (l, L c r)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:48:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In an equation for ‘right’:\n",
" Patterns of type ‘(Tree, Cxt)’ not matched:\n",
" ((Leaf _), Top)\n",
" ((Leaf _), (L _ _))\n",
" ((Leaf _), (R _ _))\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m48 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mright (Pair l r, c) = (r, R l c)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:59:11: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘t’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m59 |\u001b[0m\u001b[0m upmost l@(\u001b[;1m\u001b[35mt\u001b[0m\u001b[0m, Top) = l\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:74:5: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-uni-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a pattern binding:\n",
" Patterns of type ‘Loc’ not matched:\n",
" ((Leaf _), Top)\n",
" ((Leaf _), (L _ _))\n",
" ((Leaf _), (R _ _))\n",
" ((Pair (Pair _ _) (Pair _ _)), Top)\n",
" ...\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m74 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35m((Pair (Leaf nl) (Leaf nr)), _) = p0\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:77:39: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-uni-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a lambda abstraction:\n",
" Patterns of type ‘Tree’ not matched: Pair _ _\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m77 |\u001b[0m\u001b[0m Just leftReg -> modify leftReg (\u001b[;1m\u001b[35m\\(Leaf n) -> Leaf (n + nl)\u001b[0m\u001b[0m)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:80:41: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-uni-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a lambda abstraction:\n",
" Patterns of type ‘Tree’ not matched: Pair _ _\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m80 |\u001b[0m\u001b[0m Just rightReg -> modify rightReg (\u001b[;1m\u001b[35m\\(Leaf n) -> Leaf (n + nr)\u001b[0m\u001b[0m)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:97:25: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘c’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m97 |\u001b[0m\u001b[0m rightmostOnLeft t@(_, L \u001b[;1m\u001b[35mc\u001b[0m\u001b[0m r) = rightmostOnLeft $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:97:27: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘r’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m97 |\u001b[0m\u001b[0m rightmostOnLeft t@(_, L c \u001b[;1m\u001b[35mr\u001b[0m\u001b[0m) = rightmostOnLeft $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:98:25: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘l’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m98 |\u001b[0m\u001b[0m rightmostOnLeft t@(_, R \u001b[;1m\u001b[35ml\u001b[0m\u001b[0m c) = Just $ rightmostNum $ left $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:98:27: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘c’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m98 |\u001b[0m\u001b[0m rightmostOnLeft t@(_, R l \u001b[;1m\u001b[35mc\u001b[0m\u001b[0m) = Just $ rightmostNum $ left $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:106:25: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘l’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m106 |\u001b[0m\u001b[0m leftmostOnRight t@(_, R \u001b[;1m\u001b[35ml\u001b[0m\u001b[0m c) = leftmostOnRight $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:106:27: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘c’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m106 |\u001b[0m\u001b[0m leftmostOnRight t@(_, R l \u001b[;1m\u001b[35mc\u001b[0m\u001b[0m) = leftmostOnRight $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:107:25: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘c’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m107 |\u001b[0m\u001b[0m leftmostOnRight t@(_, L \u001b[;1m\u001b[35mc\u001b[0m\u001b[0m r) = Just $ leftmostNum $ right $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:107:27: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-matches\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘r’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m107 |\u001b[0m\u001b[0m leftmostOnRight t@(_, L c \u001b[;1m\u001b[35mr\u001b[0m\u001b[0m) = Just $ leftmostNum $ right $ up t\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:121:5: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-uni-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a pattern binding:\n",
" Patterns of type ‘Loc’ not matched:\n",
" ((Pair _ _), Top)\n",
" ((Pair _ _), (L _ _))\n",
" ((Pair _ _), (R _ _))\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m121 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35m((Leaf sn), _) = n0\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:147:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" sfNumbersP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Tree]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m147 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msfNumbersP\u001b[0m\u001b[0m = sfNumberP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:149:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" sfNumberP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Tree\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m149 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msfNumberP\u001b[0m\u001b[0m = regularP <|> pairP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:151:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" regularP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Tree\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m151 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mregularP\u001b[0m\u001b[0m = Leaf <$> decimal\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:152:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" pairP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Tree\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m152 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpairP\u001b[0m\u001b[0m = Pair <$> (\"[\" *> sfNumberP) <*> (\",\" *> sfNumberP) <* \"]\"\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent18/Main.hs:155:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> [Tree]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m155 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent18/build/advent18/advent18 ...\n",
"2501\n",
"4935\n",
" 985,731,848 bytes allocated in the heap\n",
" 4,292,096 bytes copied during GC\n",
" 362,792 bytes maximum residency (6 sample(s))\n",
" 136,920 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 231 colls, 231 par 0.062s 0.018s 0.0001s 0.0022s\n",
" Gen 1 6 colls, 5 par 0.008s 0.002s 0.0004s 0.0006s\n",
"\n",
" Parallel GC work balance: 27.31% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 0.521s ( 0.471s elapsed)\n",
" GC time 0.069s ( 0.019s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.001s ( 0.001s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 0.597s ( 0.494s elapsed)\n",
"\n",
" Alloc rate 1,892,803,172 bytes per MUT second\n",
"\n",
" Productivity 87.4% of total user, 95.5% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent19) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent19' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent19' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent19' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent19/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent19/build/advent19/advent19-tmp/Main.dyn_o ) [Data.MultiSet changed]\n",
"\n",
"\u001b[;1madvent19/Main.hs:40:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Worphans\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Orphan instance: instance Show Transform\n",
" To avoid this\n",
" move the instance declaration to the module of the class or of the type, or\n",
" wrap the type with a newtype and declare the instance on the new type.\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m40 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35minstance Show Transform where\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:44:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: nullTrans :: Endo a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m44 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mnullTrans\u001b[0m\u001b[0m = Endo id\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:45:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: rotX :: Endo (V3 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m45 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mrotX\u001b[0m\u001b[0m = Endo \\(V3 x y z) -> V3 x (- z) y\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:46:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: rotY :: Endo (V3 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m46 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mrotY\u001b[0m\u001b[0m = Endo \\(V3 x y z) -> V3 z y (- x)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:47:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: rotZ :: Endo (V3 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m47 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mrotZ\u001b[0m\u001b[0m = Endo \\(V3 x y z) -> V3 (- y) x z\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:48:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" translate :: (Linear.Vector.Additive f, Num a) => f a -> Endo (f a)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m48 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mtranslate\u001b[0m\u001b[0m v = Endo (v ^+^)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:79:30: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wtype-defaults\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" • Defaulting the following constraints to type ‘Integer’\n",
" (Integral b0) arising from a use of ‘^’ at advent19/Main.hs:79:30\n",
" (Num b0) arising from the literal ‘2’ at advent19/Main.hs:79:31\n",
" • In the first argument of ‘(+)’, namely ‘x ^ 2’\n",
" In the first argument of ‘(+)’, namely ‘x ^ 2 + y ^ 2’\n",
" In the expression: x ^ 2 + y ^ 2 + z ^ 2\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m79 |\u001b[0m\u001b[0m where pythag (V3 x y z) = x\u001b[;1m\u001b[35m^\u001b[0m\u001b[0m2 + y^2 + z^2\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:79:36: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wtype-defaults\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" • Defaulting the following constraints to type ‘Integer’\n",
" (Integral b0) arising from a use of ‘^’ at advent19/Main.hs:79:36\n",
" (Num b0) arising from the literal ‘2’ at advent19/Main.hs:79:37\n",
" • In the second argument of ‘(+)’, namely ‘y ^ 2’\n",
" In the first argument of ‘(+)’, namely ‘x ^ 2 + y ^ 2’\n",
" In the expression: x ^ 2 + y ^ 2 + z ^ 2\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m79 |\u001b[0m\u001b[0m where pythag (V3 x y z) = x^2 + y\u001b[;1m\u001b[35m^\u001b[0m\u001b[0m2 + z^2\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:79:42: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wtype-defaults\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" • Defaulting the following constraints to type ‘Integer’\n",
" (Integral b0) arising from a use of ‘^’ at advent19/Main.hs:79:42\n",
" (Num b0) arising from the literal ‘2’ at advent19/Main.hs:79:43\n",
" • In the second argument of ‘(+)’, namely ‘z ^ 2’\n",
" In the expression: x ^ 2 + y ^ 2 + z ^ 2\n",
" In an equation for ‘pythag’:\n",
" pythag (V3 x y z) = x ^ 2 + y ^ 2 + z ^ 2\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m79 |\u001b[0m\u001b[0m where pythag (V3 x y z) = x^2 + y^2 + z\u001b[;1m\u001b[35m^\u001b[0m\u001b[0m2\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:103:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In an equation for ‘mkReconstruction’:\n",
" Patterns of type ‘[Scanner]’ not matched: []\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m103 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mmkReconstruction (s:ss) = Reconstruction {found = [], working = [s], waiting = ss}\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:117:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-uni-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a pattern binding: Patterns of type ‘[Scanner]’ not matched: []\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m117 |\u001b[0m\u001b[0m where \u001b[;1m\u001b[35m(current:workers) = working\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:132:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" scannersP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Scanner]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m132 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mscannersP\u001b[0m\u001b[0m = scannerP `sepBy` blankLines\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:133:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" scannerP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Scanner\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m133 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mscannerP\u001b[0m\u001b[0m = scannerify <$> nameP <*> beaconsP\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:142:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" nameP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m142 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mnameP\u001b[0m\u001b[0m = (\"--- scanner \" *>) decimal <* \" ---\" <* endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:144:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" beaconsP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [V3 Int]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m144 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mbeaconsP\u001b[0m\u001b[0m = beaconP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:145:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" beaconP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (V3 Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m145 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mbeaconP\u001b[0m\u001b[0m = V3 <$> (signed decimal <* \",\") <*> (signed decimal <* \",\") <*> (signed decimal)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:147:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" blankLines :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [()]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m147 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mblankLines\u001b[0m\u001b[0m = many1 endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent19/Main.hs:150:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> [Scanner]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m150 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent19/build/advent19/advent19 ...\n",
"355\n",
"10842\n",
" 4,266,547,304 bytes allocated in the heap\n",
" 79,835,392 bytes copied during GC\n",
" 1,228,664 bytes maximum residency (61 sample(s))\n",
" 175,576 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 967 colls, 967 par 0.296s 0.075s 0.0001s 0.0015s\n",
" Gen 1 61 colls, 60 par 0.177s 0.055s 0.0009s 0.0012s\n",
"\n",
" Parallel GC work balance: 66.48% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 6.359s ( 6.048s elapsed)\n",
" GC time 0.443s ( 0.100s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.030s ( 0.029s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 6.838s ( 6.181s elapsed)\n",
"\n",
" Alloc rate 670,893,811 bytes per MUT second\n",
"\n",
" Productivity 93.4% of total user, 98.3% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent20) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent20' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent20' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent20' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent20/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent20/build/advent20/advent20-tmp/Main.dyn_o ) [Linear changed]\n",
"\n",
"\u001b[;1madvent20/Main.hs:36:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" part1 :: Enhancement -> Image -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m36 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart1\u001b[0m\u001b[0m enhancement image = fst $ evalRWS (enhanceImage 2) enhancement image\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent20/Main.hs:38:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" part2 :: Enhancement -> Image -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m38 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart2\u001b[0m\u001b[0m enhancement image = fst $ evalRWS (enhanceImage 50) enhancement image\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent20/Main.hs:60:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘showImage’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m60 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mshowImage\u001b[0m\u001b[0m image = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent20/build/advent20/advent20 ...\n",
"5225\n",
"18131\n",
" 4,967,912,192 bytes allocated in the heap\n",
" 6,829,295,704 bytes copied during GC\n",
" 196,918,408 bytes maximum residency (55 sample(s))\n",
" 2,929,528 bytes maximum slop\n",
" 486 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 1148 colls, 1148 par 2.151s 1.658s 0.0014s 0.0090s\n",
" Gen 1 55 colls, 54 par 9.083s 3.698s 0.0672s 0.1647s\n",
"\n",
" Parallel GC work balance: 44.36% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 5.140s ( 4.701s elapsed)\n",
" GC time 9.075s ( 3.216s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 2.159s ( 2.141s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 16.380s ( 10.061s elapsed)\n",
"\n",
" Alloc rate 966,567,938 bytes per MUT second\n",
"\n",
" Productivity 44.6% of total user, 68.0% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent21) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent21' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent21' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent21' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent21/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent21/build/advent21/advent21-tmp/Main.dyn_o ) [Data.MultiSet changed]\n",
"\n",
"\u001b[;1madvent21/Main.hs:45:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part1 :: Game -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m45 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart1\u001b[0m\u001b[0m game = scoreGame finalGame\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:49:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part2 :: Game -> MS.Occur\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m49 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart2\u001b[0m\u001b[0m game = max (Player1 `MS.occur` winners) (Player2 `MS.occur` winners)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:116:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" playerP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Player\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m116 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mplayerP\u001b[0m\u001b[0m = (\"1\" *> pure Player1) <|> (\"2\" *> pure Player2)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:118:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" playerStateP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (Player, PlayerState)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m118 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mplayerStateP\u001b[0m\u001b[0m = playerify <$> (\"Player \" *> playerP) <*> (\" starting position: \" *> decimal)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:121:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" gameP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Game\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m121 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgameP\u001b[0m\u001b[0m = gamify <$> playerStateP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:126:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> Game\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m126 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"[1 of 1] Compiling Main ( advent21/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent21/build/advent21/advent21-tmp/Main.p_o )\n",
"\n",
"\u001b[;1madvent21/Main.hs:45:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part1 :: Game -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m45 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart1\u001b[0m\u001b[0m game = scoreGame finalGame\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:49:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part2 :: Game -> MS.Occur\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m49 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart2\u001b[0m\u001b[0m game = max (Player1 `MS.occur` winners) (Player2 `MS.occur` winners)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:116:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" playerP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Player\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m116 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mplayerP\u001b[0m\u001b[0m = (\"1\" *> pure Player1) <|> (\"2\" *> pure Player2)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:118:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" playerStateP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (Player, PlayerState)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m118 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mplayerStateP\u001b[0m\u001b[0m = playerify <$> (\"Player \" *> playerP) <*> (\" starting position: \" *> decimal)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:121:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" gameP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Game\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m121 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mgameP\u001b[0m\u001b[0m = gamify <$> playerStateP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent21/Main.hs:126:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> Game\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m126 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent21/build/advent21/advent21 ...\n",
"734820\n",
"193170338541590\n",
" 3,812,461,008 bytes allocated in the heap\n",
" 292,492,272 bytes copied during GC\n",
" 6,362,032 bytes maximum residency (38 sample(s))\n",
" 197,344 bytes maximum slop\n",
" 70 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 882 colls, 882 par 0.491s 0.277s 0.0003s 0.0021s\n",
" Gen 1 38 colls, 37 par 0.589s 0.125s 0.0033s 0.0176s\n",
"\n",
" Parallel GC work balance: 29.68% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 2.493s ( 2.275s elapsed)\n",
" GC time 1.041s ( 0.364s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.038s ( 0.038s elapsed)\n",
" EXIT time 0.003s ( 0.001s elapsed)\n",
" Total time 3.579s ( 2.681s elapsed)\n",
"\n",
" Alloc rate 1,529,157,497 bytes per MUT second\n",
"\n",
" Productivity 70.7% of total user, 86.3% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent22) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent22' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent22' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent22' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent22/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent22/build/advent22/advent22-tmp/Main.dyn_o ) [Control.Lens changed]\n",
"\n",
"\u001b[;1madvent22/Main.hs:33:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part1 :: [Cuboid] -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m33 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart1\u001b[0m\u001b[0m cuboids = sweepX (filter isLocal cuboids)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent22/Main.hs:34:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature: part2 :: [Cuboid] -> Int\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m34 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpart2\u001b[0m\u001b[0m cuboids = sweepX cuboids\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent22/Main.hs:87:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" cuboidsP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text [Cuboid]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m87 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mcuboidsP\u001b[0m\u001b[0m = timeify <$> cuboidP `sepBy` endOfLine\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent22/Main.hs:90:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" cuboidP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Cuboid\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m90 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mcuboidP\u001b[0m\u001b[0m = cubify <$> (partiyP <* \" \") <*> (boundsP `sepBy` \",\")\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent22/Main.hs:98:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In an equation for ‘vecify’:\n",
" Patterns of type ‘[a]’ not matched:\n",
" []\n",
" [_]\n",
" [_, _]\n",
" (_:_:_:_:_)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m98 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mvecify [c1, c2, c3] = V3 c1 c2 c3\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent22/Main.hs:100:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" partiyP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text Parity\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m100 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpartiyP\u001b[0m\u001b[0m = (\"on\" *> pure On) <|> (\"off\" *> pure Off)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent22/Main.hs:102:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" boundsP :: Data.Attoparsec.Internal.Types.Parser\n",
" Data.Text.Internal.Text (Int, Int)\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m102 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mboundsP\u001b[0m\u001b[0m = (,) <$> ((\"x\" <|> \"y\" <|> \"z\") *> \"=\" *> signed decimal) <*> (\"..\" *> signed decimal)\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent22/Main.hs:105:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Top-level binding with no type signature:\n",
" successfulParse :: Data.Text.Internal.Text -> [Cuboid]\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m105 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35msuccessfulParse\u001b[0m\u001b[0m input = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent22/build/advent22/advent22 ...\n",
"545118\n",
"1227298136842375\n",
" 2,191,299,168 bytes allocated in the heap\n",
" 15,263,592 bytes copied during GC\n",
" 600,320 bytes maximum residency (16 sample(s))\n",
" 136,960 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 513 colls, 513 par 0.172s 0.051s 0.0001s 0.0044s\n",
" Gen 1 16 colls, 15 par 0.025s 0.010s 0.0006s 0.0012s\n",
"\n",
" Parallel GC work balance: 22.36% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 1.635s ( 1.511s elapsed)\n",
" GC time 0.194s ( 0.058s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.003s ( 0.003s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 1.838s ( 1.575s elapsed)\n",
"\n",
" Alloc rate 1,340,478,006 bytes per MUT second\n",
"\n",
" Productivity 89.1% of total user, 96.1% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent23) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent23' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent23' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent23' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent23/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent23/build/advent23/advent23-tmp/Main.dyn_o ) [Linear changed]\n",
"\n",
"\u001b[;1madvent23/Main.hs:18:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘Empty’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m18 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern Empty <- (Q.viewl -> Q.EmptyL) where Empty = Q.empty\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:18:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern Main.Empty :: forall {a}. Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m18 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern Empty <- (Q.viewl -> Q.EmptyL) where Empty = Q.empty\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:19:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘:<’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m19 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern x :< xs <- (Q.viewl -> x Q.:< xs) where (:<) = (Q.<|)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:19:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern (:<) :: forall {a}. a -> Q.Seq a -> Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m19 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern x :< xs <- (Q.viewl -> x Q.:< xs) where (:<) = (Q.<|)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:20:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: data constructor ‘:>’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m20 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern xs :> x <- (Q.viewr -> xs Q.:> x) where (:>) = (Q.|>)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:20:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wmissing-signatures\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern synonym with no type signature:\n",
" pattern (:>) :: forall {a}. Q.Seq a -> a -> Q.Seq a\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m20 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mpattern xs :> x <- (Q.viewr -> xs Q.:> x) where (:>) = (Q.|>)\u001b[0m\u001b[0m \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:253:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘hallRow’ shadows the existing binding\n",
" defined at advent23/Main.hs:52:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m253 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mhallRow\u001b[0m\u001b[0m = S.findMin $ S.map (^. _r) halls\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:269:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘transits’ shadows the existing binding\n",
" defined at advent23/Main.hs:43:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m269 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mtransits\u001b[0m\u001b[0m = S.delete here $ S.fromList $ [V2 hr c | c <- [cMin..cMax]] ++ [V2 r tc | r <- [hr..tr]]\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:284:11: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘transits’ shadows the existing binding\n",
" defined at advent23/Main.hs:43:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m284 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mtransits\u001b[0m\u001b[0m = S.delete here $ S.fromList $ [V2 r hc | r <- [tr..hr]] ++ [V2 tr c | c <- [cMin..cMax]]\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:288:17: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘hallRow’ shadows the existing binding\n",
" defined at advent23/Main.hs:52:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m288 |\u001b[0m\u001b[0m mkRoomRoomRoute \u001b[;1m\u001b[35mhallRow\u001b[0m\u001b[0m rooms here routes = M.foldrWithKey' (mkRoomRoomRoute1 hallRow here) routes rooms\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:292:18: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘hallRow’ shadows the existing binding\n",
" defined at advent23/Main.hs:52:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m292 |\u001b[0m\u001b[0m mkRoomRoomRoute1 \u001b[;1m\u001b[35mhallRow\u001b[0m\u001b[0m here@(V2 hr hc) there@(V2 tr tc) entry routes \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent23/Main.hs:305:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wname-shadowing\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" This binding for ‘transits’ shadows the existing binding\n",
" defined at advent23/Main.hs:43:1\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m305 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mtransits\u001b[0m\u001b[0m = S.delete here $ S.unions [transitUp, transitAcross, transitDown]\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent23/build/advent23/advent23 ...\n",
"14460\n",
"41366\n",
" 57,573,004,072 bytes allocated in the heap\n",
" 12,620,236,792 bytes copied during GC\n",
" 46,724,816 bytes maximum residency (395 sample(s))\n",
" 538,976 bytes maximum slop\n",
" 144 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 13463 colls, 13463 par 4.934s 1.756s 0.0001s 0.0292s\n",
" Gen 1 395 colls, 394 par 25.652s 6.850s 0.0173s 0.0706s\n",
"\n",
" Parallel GC work balance: 70.59% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 44.219s ( 40.856s elapsed)\n",
" GC time 26.684s ( 4.728s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 3.902s ( 3.877s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 74.811s ( 49.464s elapsed)\n",
"\n",
" Alloc rate 1,302,001,880 bytes per MUT second\n",
"\n",
" Productivity 64.3% of total user, 90.4% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent24) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent24' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent24' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent24' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent24/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent24/build/advent24/advent24-tmp/Main.dyn_o ) [Data.Attoparsec.Text changed]\n",
"\n",
"\u001b[;1madvent24/Main.hs:70:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-uni-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a pattern binding:\n",
" Patterns of type ‘Maybe Interval’ not matched: Nothing\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m70 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mJust (Interval a b) = z\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent24/Main.hs:174:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In an equation for ‘*:’:\n",
" Patterns of type ‘Interval’, ‘Interval’ not matched:\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IP _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IN _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IP _) (GHC.Num.Integer.IS _))\n",
" ...\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m174 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35m(Interval a b) *: (Interval c d) \u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...\u001b[0m\u001b[0m\n",
"[1 of 1] Compiling Main ( advent24/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent24/build/advent24/advent24-tmp/Main.p_o )\n",
"\n",
"\u001b[;1madvent24/Main.hs:70:9: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-uni-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In a pattern binding:\n",
" Patterns of type ‘Maybe Interval’ not matched: Nothing\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m70 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mJust (Interval a b) = z\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m\n",
"\n",
"\u001b[;1madvent24/Main.hs:174:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wincomplete-patterns\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Pattern match(es) are non-exhaustive\n",
" In an equation for ‘*:’:\n",
" Patterns of type ‘Interval’, ‘Interval’ not matched:\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IP _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IN _))\n",
" (Interval (GHC.Num.Integer.IS _) (GHC.Num.Integer.IS _))\n",
" (Interval (GHC.Num.Integer.IP _) (GHC.Num.Integer.IS _))\n",
" ...\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m174 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35m(Interval a b) *: (Interval c d) \u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent24/build/advent24/advent24 ...\n",
"91398299697996\n",
"41171183141291\n",
" 98,300,706,304 bytes allocated in the heap\n",
" 344,957,792 bytes copied during GC\n",
" 280,672 bytes maximum residency (924 sample(s))\n",
" 163,968 bytes maximum slop\n",
" 62 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 22855 colls, 22855 par 6.658s 1.697s 0.0001s 0.0043s\n",
" Gen 1 924 colls, 923 par 1.111s 0.361s 0.0004s 0.0015s\n",
"\n",
" Parallel GC work balance: 40.37% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.002s elapsed)\n",
" MUT time 101.104s ( 94.732s elapsed)\n",
" GC time 7.619s ( 1.910s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.150s ( 0.149s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 108.879s ( 96.794s elapsed)\n",
"\n",
" Alloc rate 972,276,847 bytes per MUT second\n",
"\n",
" Productivity 93.0% of total user, 98.0% of total elapsed\n",
"\n",
"Build profile: -w ghc-9.2.2 -O1\n",
"In order, the following will be built (use -v for more details):\n",
" - advent-of-code21-0.1.0.0 (exe:advent25) --enable-profiling (configuration changed)\n",
"Configuring executable 'advent25' for advent-of-code21-0.1.0.0..\n",
"Preprocessing executable 'advent25' for advent-of-code21-0.1.0.0..\n",
"Building executable 'advent25' for advent-of-code21-0.1.0.0..\n",
"[1 of 1] Compiling Main ( advent25/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent25/build/advent25/advent25-tmp/Main.dyn_o ) [Linear changed]\n",
"\n",
"\u001b[;1madvent25/Main.hs:94:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘showGrid’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m94 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mshowGrid\u001b[0m\u001b[0m (Grid (V2 minR minC, V2 maxR maxC) cucumbers) = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"[1 of 1] Compiling Main ( advent25/Main.hs, /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent25/build/advent25/advent25-tmp/Main.p_o )\n",
"\n",
"\u001b[;1madvent25/Main.hs:94:1: \u001b[;1m\u001b[35mwarning:\u001b[0m\u001b[0m\u001b[;1m [\u001b[;1m\u001b[35m-Wunused-top-binds\u001b[0m\u001b[0m\u001b[;1m]\u001b[0m\u001b[0m\u001b[;1m\n",
" Defined but not used: ‘showGrid’\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\n",
"\u001b[;1m\u001b[34m94 |\u001b[0m\u001b[0m \u001b[;1m\u001b[35mshowGrid\u001b[0m\u001b[0m (Grid (V2 minR minC, V2 maxR maxC) cucumbers) = \n",
"\u001b[;1m\u001b[34m |\u001b[0m\u001b[0m\u001b[;1m\u001b[35m ^^^^^^^^\u001b[0m\u001b[0m\n",
"Linking /home/neil/Programming/advent-of-code-21/dist-newstyle/build/x86_64-linux/ghc-9.2.2/advent-of-code21-0.1.0.0/x/advent25/build/advent25/advent25 ...\n",
"435\n",
" 2,884,443,392 bytes allocated in the heap\n",
" 771,632,904 bytes copied during GC\n",
" 1,740,216 bytes maximum residency (204 sample(s))\n",
" 181,984 bytes maximum slop\n",
" 63 MiB total memory in use (0 MB lost due to fragmentation)\n",
"\n",
" Tot time (elapsed) Avg pause Max pause\n",
" Gen 0 500 colls, 500 par 0.585s 0.361s 0.0007s 0.0022s\n",
" Gen 1 204 colls, 203 par 0.705s 0.144s 0.0007s 0.0043s\n",
"\n",
" Parallel GC work balance: 30.44% (serial 0%, perfect 100%)\n",
"\n",
" TASKS: 26 (1 bound, 25 peak workers (25 total), using -N12)\n",
"\n",
" SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n",
"\n",
" INIT time 0.004s ( 0.003s elapsed)\n",
" MUT time 7.067s ( 6.800s elapsed)\n",
" GC time 1.257s ( 0.473s elapsed)\n",
" RP time 0.000s ( 0.000s elapsed)\n",
" PROF time 0.032s ( 0.032s elapsed)\n",
" EXIT time 0.002s ( 0.001s elapsed)\n",
" Total time 8.363s ( 7.309s elapsed)\n",
"\n",
" Alloc rate 408,156,917 bytes per MUT second\n",
"\n",
" Productivity 84.9% of total user, 93.5% of total elapsed\n",
"\n"
]
}
],
"source": [
"! cd .. && for i in {01..25}; do cabal run advent${i} --enable-profiling -- +RTS -N -pj -s -hT ; done"
]
},
{
"cell_type": "code",
"execution_count": 316,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"rm: cannot remove '../times_raw.csv': No such file or directory\n"
]
}
],
"source": [
"! rm ../times.csv\n",
"! rm ../times_raw.csv"
]
},
{
"cell_type": "code",
"execution_count": 317,
"metadata": {
"Collapsed": "false",
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Warning: The package list for 'hackage.haskell.org' is 24 days old.\n",
"Run 'cabal update' to get the latest list of available packages.\n",
"Resolving dependencies...\n",
"Up to date\n",
"1521\n",
"1543\n",
"Up to date\n",
"2039912\n",
"1942068080\n",
"Up to date\n",
"2724524\n",
"2775870\n",
"Up to date\n",
"82440\n",
"20774\n",
"Up to date\n",
"5092\n",
"20484\n",
"Up to date\n",
"352195\n",
"1600306001288\n",
"Up to date\n",
"336721\n",
"91638945\n",
"Up to date\n",
"255\n",
"982158\n",
"Up to date\n",
"15\n",
"1134\n",
"Up to date\n",
"339537\n",
"2412013412\n",
"Up to date\n",
"1627\n",
"329\n",
"Up to date\n",
"4495\n",
"131254\n",
"Up to date\n",
"763\n",
"███ █ █ ██ █ ███ ██ ███ ██ \n",
"█ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n",
"█ █ ████ █ █ █ █ █ █ █ █ █ █\n",
"███ █ █ ████ █ ███ █ ███ ████\n",
"█ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n",
"█ █ █ █ █ █ ████ █ █ ██ █ █ █ █\n",
"\n",
"Up to date\n",
"2712\n",
"8336623059567\n",
"Up to date\n",
"503\n",
"2853\n",
"Up to date\n",
"852\n",
"19348959966392\n",
"Up to date\n",
"5995\n",
"3202\n",
"Up to date\n",
"2501\n",
"4935\n",
"Up to date\n",
"355\n",
"10842\n",
"Up to date\n",
"5225\n",
"18131\n",
"Up to date\n",
"734820\n",
"193170338541590\n",
"Up to date\n",
"545118\n",
"1227298136842375\n",
"Up to date\n",
"14460\n",
"41366\n",
"Up to date\n",
"91398299697996\n",
"41171183141291\n",
"Up to date\n",
"435\n"
]
}
],
"source": [
"! cd .. && for i in {01..25}; do /usr/bin/time -f \"%C,%S,%E,%M\" -o times.csv -a cabal run advent${i}; done"
]
},
{
"cell_type": "code",
"execution_count": 318,
"metadata": {
"Collapsed": "false",
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1521\n",
"1543\n",
"2039912\n",
"1942068080\n",
"2724524\n",
"2775870\n",
"82440\n",
"20774\n",
"5092\n",
"20484\n",
"352195\n",
"1600306001288\n",
"336721\n",
"91638945\n",
"255\n",
"982158\n",
"15\n",
"1134\n",
"339537\n",
"2412013412\n",
"1627\n",
"329\n",
"4495\n",
"131254\n",
"763\n",
"███ █ █ ██ █ ███ ██ ███ ██ \n",
"█ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n",
"█ █ ████ █ █ █ █ █ █ █ █ █ █\n",
"███ █ █ ████ █ ███ █ ███ ████\n",
"█ █ █ █ █ █ █ █ █ █ █ █ █ █ █\n",
"█ █ █ █ █ █ ████ █ █ ██ █ █ █ █\n",
"\n",
"2712\n",
"8336623059567\n",
"503\n",
"2853\n",
"852\n",
"19348959966392\n",
"5995\n",
"3202\n",
"2501\n",
"4935\n",
"355\n",
"10842\n",
"5225\n",
"18131\n",
"734820\n",
"193170338541590\n",
"545118\n",
"1227298136842375\n",
"14460\n",
"41366\n",
"91398299697996\n",
"41171183141291\n",
"435\n"
]
}
],
"source": [
"! cd .. && for i in {01..25}; do /usr/bin/time -f \"%C,%S,%E,%M\" -o times_raw.csv -a advent${i}; done"
]
},
{
"cell_type": "code",
"execution_count": 319,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"mv: cannot stat '../*prof': No such file or directory\n"
]
}
],
"source": [
"!mv ../*prof ."
]
},
{
"cell_type": "code",
"execution_count": 320,
"metadata": {},
"outputs": [],
"source": [
"!mv ../times.csv ."
]
},
{
"cell_type": "code",
"execution_count": 321,
"metadata": {},
"outputs": [],
"source": [
"!mv ../times_raw.csv ."
]
},
{
"cell_type": "code",
"execution_count": 322,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"mv: cannot stat '../*hp': No such file or directory\n"
]
}
],
"source": [
"!mv ../*hp ."
]
},
{
"cell_type": "code",
"execution_count": 323,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/bin/bash: -c: line 1: syntax error near unexpected token `;'\n",
"/bin/bash: -c: line 1: ` for f in *hp ; do hp2ps $<_io.TextIOWrapper name='advent24.prof' mode='r' encoding='UTF-8'> ; done'\n"
]
}
],
"source": [
"! for f in *hp ; do hp2ps ${f} ; done"
]
},
{
"cell_type": "code",
"execution_count": 324,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 324,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(glob.glob('*prof'))"
]
},
{
"cell_type": "code",
"execution_count": 325,
"metadata": {
"Collapsed": "false",
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[{'program': 'advent13',\n",
" 'total_time': 0.03,\n",
" 'total_alloc': 4493632,\n",
" 'total_ticks': 96,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent10',\n",
" 'total_time': 0.02,\n",
" 'total_alloc': 2383248,\n",
" 'total_ticks': 60,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent03',\n",
" 'total_time': 0.05,\n",
" 'total_alloc': 8298128,\n",
" 'total_ticks': 168,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent07',\n",
" 'total_time': 0.04,\n",
" 'total_alloc': 5589544,\n",
" 'total_ticks': 132,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent20',\n",
" 'total_time': 35.11,\n",
" 'total_alloc': 3090735840,\n",
" 'total_ticks': 119712,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent19',\n",
" 'total_time': 21.74,\n",
" 'total_alloc': 2623652352,\n",
" 'total_ticks': 74148,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent01',\n",
" 'total_time': 0.06,\n",
" 'total_alloc': 12058592,\n",
" 'total_ticks': 192,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent18',\n",
" 'total_time': 1.73,\n",
" 'total_alloc': 588717288,\n",
" 'total_ticks': 5916,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent06',\n",
" 'total_time': 0.02,\n",
" 'total_alloc': 2507624,\n",
" 'total_ticks': 72,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent09',\n",
" 'total_time': 0.01,\n",
" 'total_alloc': 469984,\n",
" 'total_ticks': 36,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent08',\n",
" 'total_time': 6.57,\n",
" 'total_alloc': 2499222744,\n",
" 'total_ticks': 22404,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent23',\n",
" 'total_time': 172.99,\n",
" 'total_alloc': 38150694448,\n",
" 'total_ticks': 589896,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent21',\n",
" 'total_time': 9.43,\n",
" 'total_alloc': 2400838008,\n",
" 'total_ticks': 32160,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent22',\n",
" 'total_time': 5.54,\n",
" 'total_alloc': 1384180736,\n",
" 'total_ticks': 18876,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent16',\n",
" 'total_time': 0.05,\n",
" 'total_alloc': 8613496,\n",
" 'total_ticks': 180,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent25',\n",
" 'total_time': 25.72,\n",
" 'total_alloc': 1910248008,\n",
" 'total_ticks': 87696,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent11',\n",
" 'total_time': 0.12,\n",
" 'total_alloc': 39102056,\n",
" 'total_ticks': 396,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent02',\n",
" 'total_time': 0.02,\n",
" 'total_alloc': 1818928,\n",
" 'total_ticks': 72,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent15',\n",
" 'total_time': 13.51,\n",
" 'total_alloc': 2458599000,\n",
" 'total_ticks': 46080,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent17',\n",
" 'total_time': 0.2,\n",
" 'total_alloc': 88071992,\n",
" 'total_ticks': 672,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent05',\n",
" 'total_time': 2.26,\n",
" 'total_alloc': 434487576,\n",
" 'total_ticks': 7692,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent12',\n",
" 'total_time': 6.69,\n",
" 'total_alloc': 722598152,\n",
" 'total_ticks': 22800,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent04',\n",
" 'total_time': 0.19,\n",
" 'total_alloc': 54628920,\n",
" 'total_ticks': 636,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent14',\n",
" 'total_time': 0.05,\n",
" 'total_alloc': 15471000,\n",
" 'total_ticks': 180,\n",
" 'initial_capabilities': 12},\n",
" {'program': 'advent24',\n",
" 'total_time': 340.53,\n",
" 'total_alloc': 66538931736,\n",
" 'total_ticks': 1161240,\n",
" 'initial_capabilities': 12}]"
]
},
"execution_count": 325,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"profs = []\n",
"for fn in glob.glob('*prof'):\n",
" with open(fn) as f:\n",
" j = json.load(f)\n",
" prof = {}\n",
" for n in 'program total_time total_alloc total_ticks initial_capabilities'.split():\n",
" prof[n] = j[n]\n",
" profs.append(prof)\n",
"profs"
]
},
{
"cell_type": "code",
"execution_count": 326,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_time | \n",
" total_alloc | \n",
" total_ticks | \n",
" initial_capabilities | \n",
"
\n",
" \n",
" program | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" advent01 | \n",
" 0.06 | \n",
" 12058592 | \n",
" 192 | \n",
" 12 | \n",
"
\n",
" \n",
" advent02 | \n",
" 0.02 | \n",
" 1818928 | \n",
" 72 | \n",
" 12 | \n",
"
\n",
" \n",
" advent03 | \n",
" 0.05 | \n",
" 8298128 | \n",
" 168 | \n",
" 12 | \n",
"
\n",
" \n",
" advent04 | \n",
" 0.19 | \n",
" 54628920 | \n",
" 636 | \n",
" 12 | \n",
"
\n",
" \n",
" advent05 | \n",
" 2.26 | \n",
" 434487576 | \n",
" 7692 | \n",
" 12 | \n",
"
\n",
" \n",
" advent06 | \n",
" 0.02 | \n",
" 2507624 | \n",
" 72 | \n",
" 12 | \n",
"
\n",
" \n",
" advent07 | \n",
" 0.04 | \n",
" 5589544 | \n",
" 132 | \n",
" 12 | \n",
"
\n",
" \n",
" advent08 | \n",
" 6.57 | \n",
" 2499222744 | \n",
" 22404 | \n",
" 12 | \n",
"
\n",
" \n",
" advent09 | \n",
" 0.01 | \n",
" 469984 | \n",
" 36 | \n",
" 12 | \n",
"
\n",
" \n",
" advent10 | \n",
" 0.02 | \n",
" 2383248 | \n",
" 60 | \n",
" 12 | \n",
"
\n",
" \n",
" advent11 | \n",
" 0.12 | \n",
" 39102056 | \n",
" 396 | \n",
" 12 | \n",
"
\n",
" \n",
" advent12 | \n",
" 6.69 | \n",
" 722598152 | \n",
" 22800 | \n",
" 12 | \n",
"
\n",
" \n",
" advent13 | \n",
" 0.03 | \n",
" 4493632 | \n",
" 96 | \n",
" 12 | \n",
"
\n",
" \n",
" advent14 | \n",
" 0.05 | \n",
" 15471000 | \n",
" 180 | \n",
" 12 | \n",
"
\n",
" \n",
" advent15 | \n",
" 13.51 | \n",
" 2458599000 | \n",
" 46080 | \n",
" 12 | \n",
"
\n",
" \n",
" advent16 | \n",
" 0.05 | \n",
" 8613496 | \n",
" 180 | \n",
" 12 | \n",
"
\n",
" \n",
" advent17 | \n",
" 0.20 | \n",
" 88071992 | \n",
" 672 | \n",
" 12 | \n",
"
\n",
" \n",
" advent18 | \n",
" 1.73 | \n",
" 588717288 | \n",
" 5916 | \n",
" 12 | \n",
"
\n",
" \n",
" advent19 | \n",
" 21.74 | \n",
" 2623652352 | \n",
" 74148 | \n",
" 12 | \n",
"
\n",
" \n",
" advent20 | \n",
" 35.11 | \n",
" 3090735840 | \n",
" 119712 | \n",
" 12 | \n",
"
\n",
" \n",
" advent21 | \n",
" 9.43 | \n",
" 2400838008 | \n",
" 32160 | \n",
" 12 | \n",
"
\n",
" \n",
" advent22 | \n",
" 5.54 | \n",
" 1384180736 | \n",
" 18876 | \n",
" 12 | \n",
"
\n",
" \n",
" advent23 | \n",
" 172.99 | \n",
" 38150694448 | \n",
" 589896 | \n",
" 12 | \n",
"
\n",
" \n",
" advent24 | \n",
" 340.53 | \n",
" 66538931736 | \n",
" 1161240 | \n",
" 12 | \n",
"
\n",
" \n",
" advent25 | \n",
" 25.72 | \n",
" 1910248008 | \n",
" 87696 | \n",
" 12 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_time total_alloc total_ticks initial_capabilities\n",
"program \n",
"advent01 0.06 12058592 192 12\n",
"advent02 0.02 1818928 72 12\n",
"advent03 0.05 8298128 168 12\n",
"advent04 0.19 54628920 636 12\n",
"advent05 2.26 434487576 7692 12\n",
"advent06 0.02 2507624 72 12\n",
"advent07 0.04 5589544 132 12\n",
"advent08 6.57 2499222744 22404 12\n",
"advent09 0.01 469984 36 12\n",
"advent10 0.02 2383248 60 12\n",
"advent11 0.12 39102056 396 12\n",
"advent12 6.69 722598152 22800 12\n",
"advent13 0.03 4493632 96 12\n",
"advent14 0.05 15471000 180 12\n",
"advent15 13.51 2458599000 46080 12\n",
"advent16 0.05 8613496 180 12\n",
"advent17 0.20 88071992 672 12\n",
"advent18 1.73 588717288 5916 12\n",
"advent19 21.74 2623652352 74148 12\n",
"advent20 35.11 3090735840 119712 12\n",
"advent21 9.43 2400838008 32160 12\n",
"advent22 5.54 1384180736 18876 12\n",
"advent23 172.99 38150694448 589896 12\n",
"advent24 340.53 66538931736 1161240 12\n",
"advent25 25.72 1910248008 87696 12"
]
},
"execution_count": 326,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"performance = pd.DataFrame(profs).set_index('program').sort_index()\n",
"performance"
]
},
{
"cell_type": "code",
"execution_count": 327,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 327,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"performance.total_ticks.plot.bar()"
]
},
{
"cell_type": "code",
"execution_count": 328,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 328,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEsCAYAAAA4ifPKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAX9ElEQVR4nO3dfbRldXnY8e/jDAMGZKIZWusADs0gMnVp1BvStDaYFaJDdALV1DBNk5oSZiUu2qy2f0DbvNjaWpKuJPhCTKfpLGJTeUtQZ3QivoFUg8oAGhhGZBaiXEhlDIj4gjjw9I+zrz1z5pw753Xf3/nN97PWXnPO3ufZz3M3m+fu+9v77B2ZiSSpLs9Y6QIkSdNnc5ekCtncJalCNndJqpDNXZIqZHOXpAqtXukCANatW5cbNmxY6TIkaa7cdtttX8vMk/otK6K5b9iwgT179qx0GZI0VyLiy4OWOSwjSRWyuUtShWzuklQhm7skVcjmLkkVsrlLUoVs7pJUoalf5x4RzwDeApwI7MnMP5l2DknS8oZq7hGxA3gt8HBmvqhr/mbgbcAq4I8z8zLgPGA98AiwOPWKJWlObLj0gwOX3X/Za2aae9hhmSuBzd0zImIVcAVwLrAJ2BoRm4AzgFsy898Avza9UiVJwxqquWfmzXSOxLudBezPzPsy80ngajpH7YvAo81nnppWoZKk4U1yQnU98EDX+8Vm3vXAqyPiHcDNg4IjYltE7ImIPQcOHJigDElSr0lOqEafeZmZ3wYuPFJwZm4HtgMsLCz4lG5JmqJJjtwXgVO63p8MPDTKCiJiS0Rsf+yxxyYoQ5LUa5LmfitwekScFhFrgAuAnaOsIDN3Zea2tWvXTlCGJKnXUM09Iq4CbgHOiIjFiLgwMw8CFwM3APuAazNz7yjJPXKXpNkYasw9M7cOmL8b2D1u8szcBexaWFi4aNx1SJIOt6K3H/DIXZJmY0Wbu2PukjQb3jhMkirksIwkVWjqd4UchSdUJc2LlbwJ2DgclpGkCtncJalCjrlLUoW8FFKSKuSwjCRVyOYuSRVyzF2SKuSYuyRVyGEZSaqQzV2SKmRzl6QK2dwlqUJeLSNJFfJqGUmqkMMyklQhm7skVcjmLkkVsrlLUoVs7pJUIS+FlKQKeSmkJFXIYRlJqpDNXZIqZHOXpArZ3CWpQjZ3SaqQzV2SKmRzl6QK2dwlqUKrp73CiHgl8BZgL3B1Zt407RyS6rPh0g8OXHb/Za9psZI6DHXkHhE7IuLhiLirZ/7miLgnIvZHxKXN7AS+CRwHLE63XEnSMIYdlrkS2Nw9IyJWAVcA5wKbgK0RsQn4P5l5LnAJ8B+nV6okaVhDNffMvBl4pGf2WcD+zLwvM58ErgbOy8ynm+WPAscOWmdEbIuIPRGx58CBA2OULkkaZJITquuBB7reLwLrI+J1EfHfgf8FvHNQcGZuz8yFzFw46aSTJihDktRrkhOq0WdeZub1wPVDrSBiC7Bl48aNE5QhSeo1SXNfBE7pen8y8NAoK8jMXcCuhYWFiyaoQ5KqMujKoVGuGppkWOZW4PSIOC0i1gAXADsnWJ8kaUqGvRTyKuAW4IyIWIyICzPzIHAxcAOwD7g2M/eOktwnMUnSbAw1LJOZWwfM3w3sHje5wzJSffwyUhl8hqokVchnqEpShbxxmCRVyGEZSaqQwzKSVCGHZSSpQjZ3SaqQY+6SVKGpP4lpFH6JSUc7v/CjWXFYRpIqZHOXpAo55i5JFfI6d0mqkMMyklQhm7skVWhFL4WUpEl4KelgnlCVpAp5QlWSKuSYuyRVyOYuSRWyuUtShWzuklQhL4UUUO8lZYN+rnn+maRheOQuSRXyOndJqpAP65B01DkahusclpGkCtncJalCNndJqpDNXZIqZHOXpArZ3CWpQjZ3SaqQzV2SKjST5h4Rx0fEbRHx2lmsX5K0vKGae0TsiIiHI+KunvmbI+KeiNgfEZd2LboEuHaahUqShjfskfuVwObuGRGxCrgCOBfYBGyNiE0RcQ5wN/DVKdYpSRrBUPeWycybI2JDz+yzgP2ZeR9ARFwNnAecABxPp+F/JyJ2Z+bTveuMiG3ANoBTTz117B9AknS4SW4cth54oOv9IvBjmXkxQES8Efhav8YOkJnbge0ACwsLOUEdkqQekzT36DPv+006M6884goitgBbNm7cOEEZkqRek1wtswic0vX+ZOChUVaQmbsyc9vatWsnKEOS1GuS5n4rcHpEnBYRa4ALgJ3TKUuSNImhhmUi4irglcC6iFgEfjsz/2dEXAzcAKwCdmTm3lGSH03DMrU+o1RSmYa9WmbrgPm7gd3jJvdJTJI0Gz5DVZIqtKLN3ROqkjQb3jhMkio0yXXuEzuaTqhK88gLAeaXwzKSVCGHZSSpQl4tI0kVclhGkirksIwkVcjmLkkVsrlLUoU8oSpJFfKEqiRVyGEZSaqQzV2SKmRzl6QKeUJVkirkCVVJqpDDMpJUIZu7JFXI5i5JFbK5S1KFbO6SVCGbuyRVyOvcJalCXucuSRVyWEaSKmRzl6QK2dwlqUI2d0mqkM1dkipkc5ekCtncJalCU2/uEXFmRPxRRPxZRPzatNcvSTqyoZp7ROyIiIcj4q6e+Zsj4p6I2B8RlwJk5r7M/FXgDcDC9EuWJB3JsEfuVwKbu2dExCrgCuBcYBOwNSI2Nct+Fvgk8LGpVSpJGtpQzT0zbwYe6Zl9FrA/M+/LzCeBq4Hzms/vzMx/APzCNIuVJA1n9QSx64EHut4vAj8WEa8EXgccC+weFBwR24BtAKeeeuoEZUiSek3S3KPPvMzMm4CbjhScmduB7QALCws5QR2SpB6TXC2zCJzS9f5k4KFRVuAtfyVpNiZp7rcCp0fEaRGxBrgA2DnKCrzlryTNxrCXQl4F3AKcERGLEXFhZh4ELgZuAPYB12bm3lGSe+QuSbMx1Jh7Zm4dMH83y5w0HWK9u4BdCwsLF427DknS4bz9gCRVyGeoSlKFJrkUcmIOy0jt2XDpB/vOv/+y17Rcidqwos19Xvk/iaTSOSwjSRVa0ebude6SNBteLSNJFXJYRpIq5LCMJFXIYRlJqpDNXZIqZHOXpAqt6JeYImILsGXjxo0rWYbmwKAvjoFfHpP68YSqJFXIYRlJqpDNXZIqZHOXpAr5DVVJqpAnVCWpQg7LSFKFbO6SVCGbuyRVyOYuSRWyuUtShWzuklQhr3OXpAqt6F0hM3MXsGthYeGipXne/U+SJreizV2qRZsHJR4AaRhHdXP3fxJJtfKEqiRVyOYuSRWyuUtShWzuklSho/qEaq0GnSj2JLF09JjJkXtEnB8R/yMi3h8Rr5pFDknSYEM394jYEREPR8RdPfM3R8Q9EbE/Ii4FyMz3ZeZFwBuBn59qxZKkIxrlyP1KYHP3jIhYBVwBnAtsArZGxKauj/xGs1yS1KKhm3tm3gw80jP7LGB/Zt6XmU8CVwPnRcfvAH+RmbdPr1xJ0jAmHXNfDzzQ9X6xmfcvgXOAn4uIX+0XGBHbImJPROw5cODAhGVIkrpNerVM9JmXmfl24O3LBWbmdmA7wMLCQk5YhzQ13pZCNZj0yH0ROKXr/cnAQ8MGe8tfSZqNSZv7rcDpEXFaRKwBLgB2Dhucmbsyc9vatWsnLEOS1G2USyGvAm4BzoiIxYi4MDMPAhcDNwD7gGszc+8I6/TIXZJmYOgx98zcOmD+bmD3OMn7PaxDkjS5am4/UONX7j2xJ2lcPkNVkiq0os3dE6qSNBve8leSKrSiY+4RsQXYsnHjxpUsQy3zXII0ew7LSFKFHJaRpAp5tYwkVchhGUmqkMMyklQhm7skVcgxd0mqkGPuklSham4cppVR4w3bpBo45i5JFbK5S1KFbO6SVCGvlpGkCnm1jCRVyGEZSaqQzV2SKmRzl6QK2dwlqUKRmStdAxFxAPjygMXrgK+NuMpxYtrMZX3zk6v0+trMVXp9beYqpb7nZ+ZJfZdkZtETsKeNmDZzWd/85Cq9PreF22LQ5LCMJFXI5i5JFZqH5r69pZg2c1nf/OQqvb42c5VeX5u5Sq+vjBOqkqTpmocjd0nSiGzuklQhm7skVcjmLkkVmovmHhG/dYTlr46ICyNiQ8/8fzHg8xERb4iIf9K8/qmIeHtEvCkiRtomEfHxIyxf1/P+nzW5tkVEDIj5xxHxnOb1SRHx7oi4MyKuiYiTl8n1+xHxD0es/zkR8VsR8SvNtvgPEfGBiPhvEfHsI8T+ZES8MyLeHxF/HhGXRcTGI8S8OiLeFRE7m7h3RcTmUWruWleR+8WR9onmM1XuF+PsE02c+wXj7RcD1zUPV8tExFcy89QBy94KvAK4HdgCXJ6Z72iW3Z6ZL+sT84fA3wLWAN8AjgV2AT8DfDUzf31Arr/qnQW8ALgHIDNf3Cfm+zVExG8A/wh4D/BaYDEz/3WfmLszc1Pz+hrg08B1wDnAL2TmTw+ob+k2DicB1wBXZeYd/T7bFbMbuBM4ETizeX0t8NPASzLzvAFxlwF/G/gYcD7wJeCLwJuAt2bmdX1iLqezvd4NLDazTwZ+Cbh30HZfpvYV3y/G2Sd6a6hlvxhnn2jiLsf9Yilu5P1ioHG+1jqLqdlo/abHgYPLxN0JrG5e/yCwG/iD5v0dg2Kaf48B/gZY07xfvbRsQNxO4E+BFwLPBzYADzSvnz8g5o6u17cDx3fl7psLuKfr9W09yz63TH13NP+eDvwmsBf4AvDbwAsGxHyu+TeAB0fIdWfX69XAp5rXzwbuGhDzxQHzg87/xHO3X4yzT9S6X4yzT7hfTL5fDJpKGpb5OnB6Zp7YMz0L+Otl4lZn5kGAzPw6nd/GJ0bEdXR+0/az9PnvAbdm5pPN+4PAU4MSZebPAn9O50sFL8nM+4HvZeaXM3PQjc+eGREvjYiXA6sy81tduQfluiki/lNEPLN5fT50/uQFlnsmYTbrvjcz35KZfw94A3AcnZ24n2c0f2afApyw9KdqRPwQg7cfwNNLQwTA84BVTe5H6fxP2c8TEXFWn/k/CjwxIObrFLxfjLlPQJ37xTj7BLhfdBtnv+hvlN8Es5yA/wycNWDZ7ywT9wHg7AHre3pAzF8AJ/SZ/1zgs0PUejzw+3R+Oy8e4bM39kx/p5n/Qwy4IRCd39JvBr7STE/TOSJ5D3DqMrnuGGO7bwW+2kyvBz4KfAR4ENi2TNzP0/lT/8NNja9p5p8EvGdAzMuAzwB3N3EfBvY1814+z/vFKPtErfvFOPuE+8Xk+8WgaS7G3JfTHMWQmd/ps2x9Zj44wrqOp/Nn0MNDfv4lwI9n5h8Nm6MrdhVwbGZ++wifW0vnaONvhljnCZn5zTFricw8GBGrgR+h86f4ckdANEdpfxfYn52joGHzPRdYT+dobjEz/++oNQ+RY0X2i0n2iSZ+rveLcfeJJtb9YnD8UPvFITElNffmbPBZdP4DJ/AQnd+MyxY5TlzpuUqvb5K4Aet6YWZ+YdYxbeYqvb42cw0TExHHZGf4oXveuswceP/zcWLazNVmfYcZ5TB/lhPwKmA/nT+B/riZPtTMe9U040rPVXp9k8Qts76vtBHTZq7S6ytlWwA/SecqmQN0hmQ2dC27fVoxbeZqs75B02rK8TbgnOycePi+iDiNzkmfM6cYV3qu0usbKy4i3j5gXUHnyoXDF4wR02au0utrM9e49QG/C7w6M/dGxM8BH4mIX8zMTzP4ROw4MW3marO+vkpq7qv5/9e4dnuQzomkacaVnqv0+saN+2Xg3wLf7bNs6xRj2sxVen1t5hq3vjWZuRcgM/8sIvYB10fEpTRX+kwpps1cbdbXV0nNfQdwa0RcTed6UOhchnVBs2yacaXnKr2+ceNupXO981/2LoiIN08xps1cpdfXZq5x6/teRDw3mxOozVHrT9G5suWHpxjTZq426+urtBOqZwLn0XXGHNiZmXdPO670XKXXN05cdK6keCJHOeM/RkybuUqvr81cE9R3DnAgMz/fM38tcHFm/pdpxLSZq836BhplgL6NCfj1YeZNI670XKXX57aYn/rcFvVvi8M+P8qH25joc0aYIb6EMU5c6blKr89tMT/1uS3q3xa9UzFj7hGxFfinwGkRsbNr0bPo3M9hanGl5yq9vjZzWd/85Cq9vjZztVnfIMU0d+Av6dwTYh3we13zHwd677A2aVzpuUqvr81c1jc/uUqvr81cbdbXV1EnVCVJ01HSXSEBiIjXRcS9EfFYRHwjIh6PiG/MIq70XKXX12Yu65ufXKXX12auNus7zCgD9G1MdL6+fmYbcaXnKr0+t8X81Oe2qH9b9E7FHbnTebLJvpbiSs9Ven1t5rK++clVen1t5mqzvkMUN+YeEW+jc5/k99H1NebMvH7acaXnKr2+NnNZ3/zkKr2+NnO1WV+vkq6WWXIi8G06dx1cksCRfqhx4krPVXp9beayvvnJVXp9beZqs75DFHfkLkmaXHFj7hHxgoj4WETc1bx/cXSeAj71uNJzlV5fm7msb35ylV5fm7narO8wk5yNncUEfILO033u6Jo38Mnpk8SVnqv0+twW81Of26L+bdE7FXfkDvxAZn62Z97BGcWVnqv0+trMZX3zk6v0+trM1WZ9hyixuX8tIn6Y5sb00XkaybIPap4grvRcpdfXZi7rm59cpdfXZq426zvUKIf5bUx0npz+UTpnih8EPgk8fxZxpecqvT63xfzU57aof1v0TsVdLRMRqzLzqYg4HnhGZj4+q7jSc5VeX5u5rG9+cpVeX5u52qyvV4nDMl+KiO3A3we+OeO40nOVXl+buaxvfnKVXl+budqs71CjHOa3MQHPBN5A52L9+4F3Aq+YRVzpuUqvz20xP/W5LerfFoetY5QPtz0BzwbeDTw167jSc5Ven9tifupzW9S/LTLLvBSSiDg7Iv4QuB04js5vsJnElZ6r9PrazGV985Or9PrazNVmfYcY5TdBGxPwJeC9wFbg+FnGlZ6r9PrcFvNTn9ui/m3RO5V4tcyJmTnaTenHjCs9V+n1tZnL+uYnV+n1tZmrzfoOW0cpzT0i3kFzwX4/mfmvphVXeq7S62szl/XNT67S62szV5v1DVLSmPse4DY6Y0svA+5tph8BnppyXOm5Sq+vzVzWNz+5Sq+vzVxt1tffOGM5s5yAG4Fjut4fA9w4i7jSc5Ven9tifupzW9S/LXqnko7clzwPeFbX+xOaebOIKz1X6fW1mcv65idX6fW1mavN+g5R4pOYLgPuiIgbm/dnA2+eUVzpuUqvr81c1jc/uUqvr81cbdZ3iGJOqHaLiOcBvwjsA34AeCgzb55FXOm5Sq+vzVzWNz+5Sq+vzVxt1neIUcZw2piAXwHuBB6lM+70HeDjs4grPVfp9bkt5qc+t0X92+KwdYzy4Tam5gc6Dvhc8/6FwDWziCs9V+n1uS3mpz63Rf3boncq8YTqE5n5BEBEHJuZXwDOmFFc6blKr6/NXNY3P7lKr6/NXG3Wd4gST6guRsQPAu8DPhIRjwIPzSiu9Fyl19dmLuubn1yl19dmrjbrO0SRJ1SXRMTZwFrgQ5n55CzjSs9Ven1t5rK++clVen1t5mqzPii8uUuSxlPimLskaUI2d0mqkM1dkipkc9dRJyJWTRhf4lVm0iE8oaqqRMQG4EPAZ4CXAl8Efgm4G9gBvIrOw4YD+PfNvx/MzEua+AuBS+hcdnYv8N3MvDgirgQeadZ5O3ANcDmdBxl/B/jlzLwnIt4InA+sAl4E/B6whs7XyL8L/ExmPjK7LSB1eASiGp0BXJiZn4qIHcCbmvlPZOYrmnt2fBp4OZ2vd384Is4HPgv8Jp37aD8OfBz4fNd6XwCck5lPRcSJwE9k5sGIOAd4K/D65nMvovNL4DhgP3BJZr40Iv6Azi+ay2f0c0vfZ3NXjR7IzE81r/8UWHp6zTXNvz8K3JSZBwAi4n8DP9Es+8TSkXVEXEenoS+5LjOXHpiwFviTiDidzpNzjun63I2Z+TjweEQ8Buxq5t8JvHgaP6B0JI65q0a9Y41L77/V/BsD4gbNX/KtrtdvodPEXwRsoXOUvuS7Xa+f7nr/NB5QqSU2d9Xo1Ij48eb1VuCTPcs/A5wdEeuak6tbgU/QGZY5OyKe3Zw0fT2DrQUebF6/cWqVS1Nic1eN9gH/PCL+CngO8K7uhZn518C/o3Mr1c8Dt2fm+zPzQTpj558BPkrnJOxjA3L8LvBfI+JTdE6eSkXxahlVpbla5gPNcMk48Sdk5jebI/f3Ajsy873TrFFqg0fu0qHeHBGfA+4CvkTnrnzS3PHIXZIq5JG7JFXI5i5JFbK5S1KFbO6SVCGbuyRVyOYuSRX6fwLYni5dUtxiAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"performance.total_ticks.plot.bar(logy=True)"
]
},
{
"cell_type": "code",
"execution_count": 329,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 329,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"performance.total_alloc.plot.bar()"
]
},
{
"cell_type": "code",
"execution_count": 330,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 330,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"performance.total_alloc.plot.bar(logy=True)"
]
},
{
"cell_type": "code",
"execution_count": 331,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"image/png": "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MrOm55177rlsu+223Hvvvbz++uuMHDly0GoaPXo0O+ywA3fcccf6huD4449n77335sYbb+Sggw7iW9/6FgcccMCg1SBJray7weorRnYZJH7m6sFafH8POxw0NY0h6MsVl6icU3ks8BqVEyi0pC233JIXXngBgH333Zf58+fT2dnJU089xaJFi5g2bdobngOwevVqtt9+ezbbbDO+853v1LzJvmtOtfe///1ccMEFAHR2dvL8888DlV0NP/jBD7jsssvWD2x85JFH2GmnnfjUpz7F4Ycfzm9+85t+v35J0qal1i0ElwDnAZetm1B1xaUPUPniXxwR1wO7AHdl5v8fEdcA/1mPQns7TLDexowZw/ve9z4mTZrEIYccwuTJk5kyZQoRwdlnn812223HmDFjGDZsGFOmTOGEE07glFNO4ZhjjuHqq69m//33p729vaZl7b///sydO5epU6fyuc997g2Pfe1rX2PWrFlcdNFFtLW1ccEFF7D99tsD0N7ezg033MAHPvAB2tvbeeCBB/jud7/L5ptvznbbbcfpp59e9/dFkjQ0Ra2bwyNiR+CGzJxU3H8PcGZmHlTcX/dN9iiwJjOvioj5mfl3vWW3t7fnSy+99IZpy5YtY9ddd635hag1uZ4lNUszdxlExKtUfmQPiTEE3V5xCfga8I2I2AdY1NPMETELmAWVzd+SJG1CSjeGYCANQU9XXHoZOKm3mYvLPM6DyhaCAdTRMm666SZOO+20N0wbP3481113XZMqkiSpYiANwaBdcWmoOuiggzjooIOaXYYkSRsYyJkK119xKSKGU7ni0vV9CYiIGRExzxPoSJI2Mf29/PGgqfWww0G54lJmLsjMWW1tbX2tW5KkVla6axnUtMug0VdckiRJjeXFjSRJUnMbgj6NIThzdH1vvajl8sdQ+yWQV6xYwaRJk3p/nRuZ79Zbb+Wwww7rc0Z3jj32WB555JFuH/vEJz7BAw88sNH5TzjhBK655poNpnd9P+677z5OOOGEAdUqSRp8TW0IyjyGoN4NQZncf//9dHZ2stNOO23wWGdnJ9/61reYOHFiv7K7vh+77bYbHR0d/PGPf+x3vZKkwecugx7MmTOH3/3ud0ydOpVTTz2VzOTUU09l0qRJ7LbbbsyfP3/982677TamTp3Kueeey4oVK9hnn33YY4892GOPPbjzzjtrWl5f53vmmWc48sgjmTx5Mu9+97vXX7fgxRdf5MQTT2S33XZj8uTJXHvttRvM+73vfY8jjjhi/f0tttiC008/nb333pu77rqL/fbbb/1lmy+66CJ23nln9ttvP04++WRmz569fr5Fixbx3ve+l5122mn91oKu7wfAjBkzuPLKK2t6HyRpE1G6owyaevnj4o2YMWLEiGaW0a25c+eydOlSlixZAsC1117LkiVLuPfee3n66afZa6+92HfffZk7dy7nnHMON9xwAwAvv/wyN998MyNHjuThhx9m5syZ679cN2abbbbp03xnnHEGu+++Oz/4wQ+45ZZb+NjHPsaSJUs466yzGD16NPfddx8Azz777Abz3nHHHcyc+edxoi+99BKTJk3iS1/60huet3LlSs466yzuuecettxySw444ACmTJmy/vHHH3+c22+/nd/+9rccfvjhHHvssRu8HwB77rknc+fO5bOf/Wyv74Mk9UvXXcGDd5XCehlSZyocsOJwiwXt7e0nN7OOWtx+++3MnDmTtrY2tt12W6ZPn87ixYvZaqut3vC81157jdmzZ7NkyRLa2tp46KGHasrv63y33377+l//BxxwAKtWrWL16tX85Cc/ecOv8Te/+c0bzPv444/z1re+df39trY2jjnmmA2e98tf/pLp06fzlre8BYC//du/fUNdRx55JJttthkTJ07kiSee6LHWbbbZhpUrPWeVJJVZUxuCVlLrRaDOPfdctt12W+69915ef/11Ro4cOSjzdVdPRJCZRHR3Vuk/GzVqFK+88sr6+yNHjqS7cRy9vebqLTsbe+4rr7zCqFGjNpolSWouxxD0YMstt+SFF15Yf3/fffdl/vz5dHZ28tRTT7Fo0SKmTZu2wfNWr17N9ttvz2abbcZ3vvMdaj0LY1/n23ffffne974HVI4+2Hrrrdlqq6344Ac/yHnnnbf+ed3tMth1111Zvnx5rzVNmzaNn/3sZzz77LOsXbu22/EIXXV9PwAeeuihfh1hIUlqnNbZQtDg/UFjxozhfe97H5MmTeKQQw7h7LPP5q677mLKlClEBGeffTbbbbcdY8aMYdiwYUyZMoUTTjiBU045hWOOOYarr76a/fffn/b29pqW19f5zjzzTE488UQmT57Mm970Ji699FIAvvCFL/CP//iPTJo0iba2Ns444wyOPvroN8x76KGHcuutt3LggQdudBljx47l85//PHvvvTdve9vbmDhxIqNHb/yQzcmTJ7/h/fjMZz7DT3/6Uw499NAa3gVJUrNErZvCB2Xhfx5UeHL1JmyAZcuWseuuuzansCHuT3/6E/vvvz933HFHt7sKqr344otsscUWrF27lqOOOoqPf/zjHHXUUTUv69VXX2X69OncfvvtDBu2Yf/pepbUVzvOuXGDaStGHv/GCTX8iKxXTn9ExMuZWdsvxgbxPASboFGjRvHFL36Rxx57rNfnnnnmmUydOpVJkyYxfvx4jjzyyD4t649//CNz587tthmQpE2Yhx1u6m666SZOO+20N0wbP3481113XUPrqPUyzOecc86AljNhwgQmTJgwoAxJGoI87HBTd9BBB9X8ZSxJUqOU+iiDZo5v0OBz/UpSeZT24kYjR45k1apVfmkMUZnJqlWraj5PgyRpcJX2TIXjxo2jo6ODp556qgmVqRFGjhzJuHHjml2GJIkSjyHYfPPNGT9+fLPLkCRpk1DqMQSSJKkxbAgkSZINgSRJKvFRBpIkDWGlO1Ohpy6WJKnxOjNzVnG0XSm4y0CSJNkQSJIkGwJJkoQNgSRJwoZAkiRhQyBJkrAhkCRJNPniRsUJGWaMGDGimWVIkrTJ88REkiTJXQaSJMmGQJIkYUMgSVLLi4idIuKiiLimalp7RFwaEf8eER/pLcOGQJKkEoqIiyPiyYhY2mX6wRHxYEQsj4g5AJn5SGae1CXiaOCazDwZOLy35dkQSJJUTpcAB1dPiIg24HzgEGAiMDMiJvYw/zjg0eLvzt4WZkMgSVIJZeYi4Jkuk6cBy4stAmuAK4EjeojooNIUQA3f9zYEkiQ13rCIuLvqNqvG+cby51/9UPnSHxsRYyLiQmD3iPhc8dj3gWMi4gJgQa8F9aV6SZJUF2szc89+zBfdTMvMXAX8Q5eJLwEn1hrsFgJJklpHB7BD1f1xwMp6BDe1IYiIGRExr7Oz17EOkiQNJW0RMa84hX9fLAYmRMT4iBgOHAdcX4+CPHWxJEmN15mZszKzx337EXEFcBewS0R0RMRJmbkWmA3cBCwDrsrM++tRkGMIJEkqocyc2cP0hcDCei/PMQSSJDVef3cZDBq3EEiS1HidmVnroYYN4RYCSZJkQyBJUhO4y0CSJLnLQJIklZANgSRJsiGQJKkJHEMgSZIcQyBJkkrIhkCSJNkQSJIkxxBI0pC245wb33B/xdxDm1SJumiLiHnAgo1d8bCR6r6FICL2i4jbIuLCiNiv3vmSJA0BvV7+uNFqaggi4uKIeDIilnaZfnBEPBgRyyNiTjE5gReBkUBHfcuVJEmDodYtBJcAB1dPiIg24HzgEGAiMDMiJgK3ZeYhwGnAF+tXqiRJGiw1NQSZuQh4psvkacDyzHwkM9cAVwJHZObrxePPAiPqVqkkSRo0AxlUOBZ4tOp+B7B3RBwNHAT8BXBeTzNHxCxgFsDw4cMHUIYkSS2ndIMKB9IQRDfTMjO/D3y/t5kzcx4wD6C9vT0HUIckSa1mSJ2psAPYoer+OGDlwMqRJEnNMJCGYDEwISLGR8Rw4Djg+r4ERMSMiJjX2dk5gDIkSdJA1bTLICKuAPYDto6IDuCMzLwoImYDNwFtwMWZeX9fFl7sN1nQ3t5+ct/KliSpHLqe/Ala8wRQNTUEmTmzh+kLgYV1rUiSJDVcU09dXFwHesaIER6dKElSMzW1IXCXgSQ12Jmju5m2uvF1aEgddihJkvqndIcd2hBIUgl5lUI1mmMIJEmSYwgkqSW471+DzF0GKq+u/wD6j9/Q5zqXmsaGQJLUd26xGHIGcupiSZI0RDioUJIkNXcLQWYuyMxZbW1tzSxDkqRNnrsMJEmSDYEkSU3QFhHzil3npeBRBpIk1Vvvh9B66uJqDiqUJKkcHFQoSZLcZSCpObpevAdgxcgmFCIJcFChJEnChkCSJGFDIEmS8CgDSZJEkxuCzFwALGhvbz+5mXVIkprES16XhrsMJEmSDYEkSbIhkCRJ2BBIktTyImJiRFwVERdExLH9yfBMhZKkXnU9s6RnlRx8EXExcBjwZGZOqpp+MPA1oA34VmbOBQ4BvpGZt0XE9cA1fV2eWwgkSSqnS4CDqydERBtwPpUGYCIwMyImAt8BjouIfwXG9GdhTW0IImJGRMzr7OxsZhmSJJVOZi4CnukyeRqwPDMfycw1wJXAEZn5ZGb+IzAHeLo/y/Nqh5IkNd6wiLi76jarxvnGAo9W3e8AxkbEjhExD7gM+Nd+FdSfmSRJ0oCszcw9+zFfdDMtM3MFUGtT0S3HEEiS1Do6gB2q7o8DVtYj2IZAkqTGa4uIecU1ffpiMTAhIsZHxHDgOOD6ehRkQyBJUuN1Zuas4po+3YqIK4C7gF0ioiMiTsrMtcBs4CZgGXBVZt5fj4IcQyBJUuO1FYMAF/TUFGTmzB6mLwQW1rsgGwJJkhqvMzMHNAiw3mwIpBawwVni5h7apEokDVU2BCoNT43aB12vIQ9eR17SgDioUJKkxuvvUQaDxi0EkiQ1nmMIqhWd0YwRI0Y0swxJkjZ5XstAkiS5y0CSBl3XQaCb6ADQrgOHYZMePNzreQgazYZAkqTGK90YAo8ykCRJNgSSJMmGQJKkZvA8BJIkyTEEkiSphGwIJEmSuwyGBC90I0kaILcQSJIkGwJJkprAowwkSZJHGUiSpBKyIZAkSYPTEEREe0T8KiIOG4x8SZJUXzU1BBFxcUQ8GRFLu0w/OCIejIjlETGn6qHTgKvqWagkSRo8tW4huAQ4uHpCRLQB5wOHABOBmRExMSIOBB4AnqhjnZIkaRDVdJRBZi6KiB27TJ4GLM/MRwAi4krgCGALoJ1Kk/CniFiYma/Xr2RJklpeW0TMAxZk5oJmFwMDO+xwLPBo1f0OYO/MnA0QEScAT/fUDETELGAWwPDhwwdQhiRJLad0hx0OpCGIbqbl+j8yL9nYzJk5D5gH0N7enht7riRJGlwDOcqgA9ih6v44YOXAypEkSc0wkIZgMTAhIsZHxHDgOOD6vgRExIyImNfZ2TmAMiRJ0kDVetjhFcBdwC4R0RERJ2XmWmA2cBOwDLgqM+/vy8Izc0Fmzmpra+tr3ZIkqY5qPcpgZg/TFwIL61qRJElquKZe3Ki4ytOMESNGNLMMSZI2eU1tCIpjLxe0t7ef3Mw6Ws2Oc258w/0VI5tUiCRpyPDiRpIkyYZAkqQmaIuIecWu81JwDIEkSY1XujMVNnULgYcdSpJUDu4ykCRJNgSSJMkxBJIkCc9DIEl11fU8IeC5QtQa3GUgSZJsCCRJkg2BJEnChkCSJOFRBpIkCc9UKEmSaPIWAkmSNHAR8XbgPOBp4KHMnNvXDMcQSJJUQhFxcUQ8GRFLu0w/OCIejIjlETGnmLwzcGNmfhyY2J/l2RBIklROlwAHV0+IiDbgfOAQKl/8MyNiIvBr4LiIuAX4aX8WZkMgSVIJZeYi4Jkuk6cByzPzkcxcA1wJHAGcCJyRmQcAh/ZneU1tCCJiRkTM6+zsbGYZkiQ12rCIuLvqNqvG+cYCj1bd7yim/Qj4VERcCKzoV0H9malevJaBJGkTtTYz9+zHfNHNtMzMpcCxAynIXQaSJLWODmCHqvvjgJX1CLYhkCSp8doiYl5xgr6+WAxMiIjxETEcOA64vh4FeR4CSerJmaO73F/dnDo0FHVm5kbHDUTEFcB+wNYR0UFl0OBFETEbuAloAy7OzPvrUZANgSRJJZSZM3uYvhBYWO/luctAkqTG6+8ug0HjFgJJkhqv110GjebVDiVJklc7lCSpCdxlIEmSyrfLwEGFkiTJhkCSJNkQSJLUDI4hkCRJjiGQJEkl5BaCZvNc6ZKkEnALgSRJsiGQJKkJHFQoSZLKN6jQaxlIkiSvZSBJkhxDIEmSsCGQJKkZHFQobfI894SkEg4qdAuBJEmyIZAkSTYEkiQJGwJJkoQNgSRJwoZAkiRhQyBJUjN4HgJJkuR5CCRJUgnZEEiSpPo3BBGxa0RcGBHXRMR/r3e+JEmqv5oagoi4OCKejIilXaYfHBEPRsTyiJgDkJnLMvMfgA8De9a/ZEmSVG+1biG4BDi4ekJEtAHnA4cAE4GZETGxeOxw4HbgP+tWqSRJGjQ1NQSZuQh4psvkacDyzHwkM9cAVwJHFM+/PjPfC3yknsVKkqTBMZDDDscCj1bd7wD2joj9gKOBEcDCAeRLkqQGGUhDEN1My8y8Fbi115kjZgGzAIYPHz6AMiRJ0kAN5CiDDmCHqvvjgJW1zpyZ8zJzz8zcc9gwz48kSdqkDKkzFS4GJkTEeOAx4Djg+LpUJUnS0NaaZyqMiCuAu4BdIqIjIk7KzLXAbOAmYBlwVWbe35eFR8SMiJjX2dnZ17olSVId1bSFIDNn9jB9IQMYOJiZC4AF7e3tJ/c3Q5IkDZynLpYkSc292mExmGLGiBEjmlmGJEmbvKY2BO4ykIaIM0d3M2114+uQ1G/uMpAkSTYEkiTJMQSSJAnHEEgSADvOuXGDaStGNqEQqUk8Z3AD+Q+OJKmsWqch6DqK2RHMkiTVjWMIJElqcRGxD/ARKt/rEzPzvX3NaOpRBpm5IDNntbW1NbMMSZJKJyIujognI2Jpl+kHR8SDEbE8IuYAZOZtmfkPwA3Apf1ZnocdSpJUTpcAB1dPiIg24HzgEGAiMDMiJlY95Xjgiv4szIZAkqQSysxFwDNdJk8DlmfmI5m5BrgSOAIgIt4OrM7M5/uzPBsCSZIab1hE3F11m1XjfGOBR6vudxTTAE4Cvt3vgvo7Yz04qFCStIlam5l79mO+6GZaAmTmGQMpyEGFkiS1jg5gh6r744CV9Qh2l4EkSY3XFhHzii3lfbEYmBAR4yNiOHAccH09CmqdExNJUq08kZnKrzMzNzpuICKuAPYDto6IDuCMzLwoImYDNwFtwMWZeX89CrIh6C//wZEkDaLMnNnD9IXAwnovz10GkiQ1Xn93GQwatxBIktR4ve4yaDQPO5QGkVe4lNQqPOxQkqTGc5eBJEkq3y4DBxVKkiQbAkmSZEMgSVIzOIZAkiSVbwyBDYHqr+tZHMEzOUpSyXkeAkmS5HkIJElqAscQSJKk8o0h8CgDSZLkFgJpk+YAUEkFtxBIkiQbAkmSZEMgSVIzeJSBJEnyKANJklRCNgSSJMlTF0uSJE9dLEmSKPGgwh3n3PiG+ytGNqkQSZI2AY4hkCSp8TzsUFLrK9MWvK61gFsU1RJKd9ihDUEN/AdHkjTUuctAkiTZEEiSJHcZqJqXwpWkTZYNgVSrrg2TzZKkIcRdBpIkyYZAkiS5y0B1UKZj0iVJ/eMWAkmSGs8zFUqSpPKdqdAtBJIkaXC2EETEkcChwDbA+Zn548FYTr946JgkSRuoeQtBRFwcEU9GxNIu0w+OiAcjYnlEzAHIzB9k5snACcDf1bViSZJUd33ZZXAJcHD1hIhoA84HDgEmAjMjYmLVU75QPC5Jkkqs5oYgMxcBz3SZPA1YnpmPZOYa4ErgiKj4F+CHmXlP/cqVJEmDYaBjCMYCj1bd7wD2Bj4JHAiMjoh3ZuaFXWeMiFnALIDhw4cPsAxJkjQQA20IoptpmZlfB76+sRkzcx4wD6C9vT0HWIekGngSKUk9Gehhhx3ADlX3xwErB5gpSZIabKANwWJgQkSMj4jhwHHA9bXOHBEzImJeZ2fnAMuQJEkD0ZfDDq8A7gJ2iYiOiDgpM9cCs4GbgGXAVZl5f62ZmbkgM2e1tbX1tW5JklRHNY8hyMyZPUxfCCysW0WSJKnhPHWxJElq7sWNiqs8zRgxYkQzy5AkqaVFxGbAWcBWwN2ZeWlfM5q6hcAxBJIkda8vlwwAjqBybqDXqBwB2GfuMpAkqZwuofZLBuwC3JWZ/wP47/1Z2JDeZdD1JCzgiViqeZIaSSqvzFwUETt2mbz+kgEAEXElla0DjwJriuf061h+dxlIktR4wyLi7qrbrBrn6+6SAWOB7wMHRcQ3gEX9Kqg/M0mSpAFZm5l79mO+ni4Z8DJw0kAKcgyBJEmN1xYR84pd530xaJcMcAuBJEmN15mZte4mqLb+kgHAY1QuGXB8PQoa0oMKpf5yQKqkZisuGbAfsHVEdABnZOZFEbHukgFtwMV9uWTAxjS1IcjMBcCC9vb2k5tZhyRJDdYWEfOABcV34QYafckAdxlIktR4/d1lMGgcVChJkmwIJElSkxuCiJgREfM6O/t1UiVJklpVfw87HDSeqVCSpMbrzMxZPQ0obAZ3GUiSJBsCSZKaoHS7DDzsUJKkxvOwQ0mSVD6euliSJHmUgSRJcpeBJEnN4KBCaTB1f5XCLlcGPXN1g6qRpB45qFCSJJWPDYEkSbIhkCRJNgSSJAkbAkmSmsGjDKp5YiJJ0ibKowyqeWIiSZLKwV0GkiTJhkCSJNkQSJIkbAgkSRI2BJIkNYOHHUqSJA87lCRJJRSZ2ewaiIjXgT/18rRhwNo6LG4o5pSpFnMak1OmWsxpTE6ZajFn4DmjMrNUP8pL0RDUIiLuzsw9zSl3LeY0JqdMtZjTmJwy1WJO43IaqVTdiSRJag4bAkmS1FINwTxzBjXDnNbKKVMt5jQmp0y1mNO4nIZpmTEEkiRp8LTSFgJJkjRIbAgkSZINgSRJsiGQJEm0YEMQEaf34bkHRcRJEbFjl+kf70NGRMSHI+Jvi7/fHxFfj4hTImJA719E3NKPebbucv/vi3pmRUT0IeeoiHhL8fdbI+KyiLgvIuZHxLg+5PxbRLyv9lfQY85bIuL0iPhE8T7/U0TcEBH/GhFv7kPO/hFxXkT8R0RcGxFzI+Kd/ajnoIi4ICKuL7IuiIiD+5qzkfyaP8dV9fhZ3jBjSH6Oiyw/y93PP+Q+x2XRckcZRMQfM/PtNTzvK8DfAPcAM4CvZuY3isfuycw9alzeN4FtgOHA88AIYAHwIeCJzPx0jTm/6ToJ2Bl4ECAzJ9eYs772iPgCsA9wOXAY0JGZn6kx54HMnFj8PR/4OXA1cCDwkcz8QI05TwF/AN4KzAeuyMxf1zJvl5yFwH3AVsCuxd9XAR8ApmTmETVkzAW2Bf4TOBL4PfAQcArwlcy8usZavkpl3VwGdBSTxwEfAx6udZ33soyaPsfFc/0s95wx5D7HRY6f5Z4zhtznuDQys3Q3Kiu5u9sLwNoaM+4DhhV//wWwEDi3uP/rPtRyX/HfzYFVwPDi/rB1j9WYcz3wXeCvgHcAOwKPFn+/ow85v676+x6gvaq+vtTzYNXfv+ry2JK+1gNMAP43cD/wW+AMYOc+5Cwp/hvAY/2pp/r1F+vnjuLvNwNL+1DLQz1MDyr/iDbsc7zudflZ3nQ+x9Xrqmr9+Fkewp/jstzKusvgOWBCZm7V5bYl8HiNGcMycy1AZj5HpRvdKiKuptJZ1mpdxmvA4sxcU9xfC3TWGpKZhwPXUjlZxZTMXAG8lpl/yMw/9KGeURGxe0T8NdCWmS9V1VdzPcCtEfGliBhV/H0kVDZTAqv7kJPF8h/OzLMy813Ah4GRVP5nr9VmxSbVHYAt1m1OjIgx1L6+Xl+3+Rh4G9BW1PYslX8Aa/VKREzrZvpewCt9yHmOgX+Owc/yxgzFzzH4Wd6Yofg5LodmdyTd3YD/A0zr4bF/qTHjBmB6D9mv96GWHwJbdDN9O+CX/Xht7cC/UelOO/ox/0+73LYvpo8B7u5DzubAmcAfi9vrVLr9y4G39yHn13Va5zOBJ4rbMcBPgJuBx4BZNWb8HZXNvj8uXtOhxfS3Apf3oZY9gF8ADxRZPwaWFdP+upGfYz/Lm97n2M/ypvc5Lsut5cYQ1Kr4xUBmbnBZ5YgYm5mPDTC/ncqmoSf7Of8U4D2ZeeFA6qjKawNGZObL/Zh3NJXOfVU/5t0iM1/s63w9ZLVRGdeyNiKGAVOpbHat+RdI8atqJ2B5Vn6BDKSe7YCxVH6RdWTmfw0kbwB1+Fmubb4h8zkucvws9y17SHyOm6m0DUExOnMalQ9xAiupdH81F1yPDHNaK6detWwk/68y87fmlD+nTLU0OyciNs/KJuzqaVtn5tOtmlOmWuqZ00ylbAgi4oPAN4GHqWxqg8rI2HcCp2TmjxuRYU5r5dSrll6WUfOIanOam1OmWpqVU4yl+A6Vkfi/prLbYkXxWF+OUClNTplqqWdOGQxrdgE9+Bpw4Lo3dZ2IGE9lgM+uDcowp7Vy6lJLRHy9p4eojIyuiTmDn1OmWsqYA5wNHJSZ90fEscDNEfHRzPw5fRucWKacMtVSz5ymK2tDMIw/HzNb7TEqg4galWFOa+XUq5YTgf8JvNrNYzPNKVVOmWopY87wzLwfIDOviYhlwPcjYg7FkRUtmFOmWuqZ03RlbQguBhZHxJVUjguFymE8xxWPNSrDnNbKqVcti6kc631n1wci4kxzSpVTplrKmPNaRGy3bhBh8Sv2/VRG+/9li+aUqZZ65jRdKccQAETErsARVI2MBa7PzAcamWFOa+XUKeMtwCs5wNHB5gx+TplqKWnOgcBTmXlvl+mjgdmZ+eVWyylTLfXMKYUswbGPPd2AT9cybbAzzGmtnDLVYo7r3BzXeavcml5AL2/wPd1M+3WjM8xprZwy1WKO69wc13mr3Eo5hiAiZgLHA+Mj4vqqh7akcu7qhmSY01o5ZarFnMbklKkWcxqTU6Za6plTBqVsCIA7qZwfe2vg/1ZNfwHoeoWqwcwwp7VyylSLOY3JKVMt5jQmp0y11DOn6Uo7qFCSJDVOWa92CEBEHB0RD0fE6oh4PiJeiIjnG51hTmvllKkWcxqTU6ZazGlMTplqqWdOUzV7EEMvgzSWA7s2O8Oc1sopUy3muM7NcZ23yq3UWwiAJzJzWQkyzGmtnDLVYk5jcspUizmNySlTLfXMaZpSjyGIiK9Rucb1D6g6hWdmfr+RGea0Vk6ZajGnMTllqsWcxuSUqZZ65jRTWY8yWGcr4GXgg1XTEujLG1yPDHNaK6dMtZjTmJwy1WJOY3LKVEs9c5qm1FsIJElSY5R6DEFE7BwR/xkRS4v7kyPiC43OMKe1cspUizmNySlTLeY0JqdMtdQzp6maPapxYzfgZ8A0qk7/SOUKYA3NMKe1cspUizmuc3Nc561yK/UWAuBNmfnLLtPWNiHDnNbKKVMt5jQmp0y1mNOYnDLVUs+cpil7Q/B0RPwllYEZRMSxVE4R2egMc1orp0y1mNOYnDLVYk5jcspUSz1zmqfZmyh62QSzE/ATKiM3HwNuB97R6AxzWiunTLWY4zo3x3XeKrdSH2UQEW2Z2RkR7cBmmflCMzLMaa2cMtViTmNyylSLOY3JKVMt9cxpprLvMvh9RMwD3g282MQMc1orp0y1mNOYnDLVYk5jcspUSz1zmqfZmyg2dgNGAR+mcmKHFcB5wN80OsOc1sopUy3muM7NcZ23yq3pBfThzX4zcBnQ2cwMc1orp0y1mOM6N8d1XuZb2XcZEBHTI+KbwD3ASCodWMMzzGmtnDLVYk5jcspUizmNySlTLfXMaZayDyr8PbAEuAq4PjNfakaGOa2VU6ZazGlMTplqMacxOWWqpZ45zVT2hmCrzHy+2RnmtFZOmWoxpzE5ZarFnMbklKmWeuY0Uykbgoj4BsXJHbqTmZ9qRIY5rZVTplrMaUxOmWoxpzE5ZaqlnjllUNYxBHcDv6KyD2YP4OHiNhXobGCGOa2VU6ZazGlMTplqMacxOWWqpZ45zdfsUY0buwE/BTavur858NNGZ5jTWjllqsUc17k5rvNWuZV1C8E6bwO2rLq/RTGt0RnmtFZOmWoxpzE5ZarFnMbklKmWeuY0zbBmF9CLucCvI+Knxf3pwJlNyDCntXLKVIs5jckpUy3mNCanTLXUM6dpSjmosFpEvA34KLAMeBOwMjMXNTrDnNbKKVMt5jQmp0y1mNOYnDLVUs+cpmn2Pote9sl8ArgPeJbK/pk/Abc0OsOc1sopUy3muM7NcZ23yq3pBfTyBt9HZeTmkuL+XwHzG51hTmvllKkWc1zn5rjOW+VW9kGFr2TmKwARMSIzfwvs0oQMc1orp0y1mNOYnDLVYk5jcspUSz1zmqbsgwo7IuIvgB8AN0fEs8DKJmSY01o5ZarFnMbklKkWcxqTU6Za6pnTNKUfVLhOREwHRgM/ysw1zcowp7VyylSLOY3JKVMt5jQmp0y11DOn0VqmIZAkSYOn7GMIJElSA9gQSJIkGwJJkmRDIA05EdE2wPnLfvSRpEHgoEKphUTEjsCPgF8AuwMPAR8DHgAuBj4InAcE8Pnivzdm5mnF/CcBp1E5HOph4NXMnB0RlwDPFJn3APOBrwKjqJxx7cTMfDAiTgCOBNqAScD/BYZTOV3rq8CHMvOZwXsHJA0WfwlIrWcX4KTMvCMiLgZOKaa/kpl/U5xP/efAX1M5jeqPI+JI4JfA/6ZyzfYXgFuAe6tydwYOzMzOiNgK2Dcz10bEgcBXgGOK502i0jiMBJYDp2Xm7hFxLpXm5KuD9LolDSIbAqn1PJqZdxR/fxf4VPH3/OK/ewG3ZuZTABHxPWDf4rGfrfsFHxFXU2kC1rk6MzuLv0cDl0bEBCCpXNt9nZ9m5gvACxGxGlhQTL8PmFyPFyip8RxDILWervv51t1/qfhv9DBfT9PXeanq77OofPFPAmZQ2RqwzqtVf79edf91/JEhtSwbAqn1vD0i3lP8PRO4vcvjvwCmR8TWxQDDmcDPqOwymB4Rby4GDh5Dz0YDjxV/n1C3yiWVlg2B1HqWAf8tIn4DvAW4oPrBzHwc+ByVS7DeC9yTmf+RmY9RGQvwC+AnVAYiru5hGWcD/xwRd1AZQChpiPMoA6mFFEcZ3FBsyu/P/Ftk5ovFFoLrgIsz87p61iipNbmFQNq0nBkRS4ClwO+pXJlNktxCIEmS3EIgSZKwIZAkSdgQSJIkbAgkSRI2BJIkCRsCSZIE/D+8aem+sC7mMgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"performance[['total_ticks', 'total_alloc']].plot.bar(\n",
" logy=True, secondary_y=['total_alloc'], \n",
" figsize=(8, 6), title=\"Internal time and memory\")\n",
"plt.savefig('internal_time_and_memory_log.png')"
]
},
{
"cell_type": "code",
"execution_count": 332,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"image/png": "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TZq0QebixYvZY489mDt3LgsWLGDq1KlMnjyZiRMn8sADD7T+hZEklVKpd6e326xZs7j77ruZP38+l19+Oeeeey533HEHTz75JG9605vYe++9mTVrFt/4xje46qqrAHjhhRe49tprGT58OA888AAzZsxg3rx53T7OsGHDOO2005g3bx5nnXUWABdccMG66Z/97GeZNm0aV1xxBWvWrOG5557j6aefBuC+++7jyCOP5Ac/+AGTJ0/mM5/5DJ/73Of40Ic+xKpVq1izZk3/vDiSpNKxiXfhpptuYsaMGXR0dLDtttsybdo05s6dy+abb77efH/72984/vjjmT9/Ph0dHdx/f59+ZQfAddddx0UXXQRAR0cHY8aM4emnn+aJJ57gkEMO4fLLL+cNb3gDAG95y1v46le/ytKlS3n/+9/P+PHj+/z4kqRqcHd6F5o5CQ7AmWeeybbbbssdd9zBvHnzWLVqVb/VNGbMGHbccUduvvnmdeOOOuoo5syZw4gRI5g+fTrXXXddvz2+JKlc3BKvM3r0aJ599lkA9t57b7773e/ysY99jKeeeoobb7yRr3/96zzyyCPr5gFYsWIFY8eOZbPNNuPCCy9send2/WM1euc738k555zD3//937NmzZp1l2wdNmwYV155JdOnT2fUqFEcddRRLF68mJ133pnPfvazLF68mDvvvJP99tuvj6+EJA1Onf3qacnwhl8bnbqiTdX0XambeE8/CWu1rbbaire97W1MmDCBgw46iIkTJzJp0iQigjPOOIPtttuOrbbaiiFDhjBp0iSOPvpojjvuOA4//HAuu+wy9t13X0aObO5sevvuuy+zZs1i8uTJfPGLX1xv2re+9S1mzpzJ97//fTo6OjjnnHPYfvvtARg5ciRXXXUV73rXuxg5ciQLFy7kRz/6EUOHDmW77bbj5JNPbvnrIkkqp6bOnd4fOjt3+j333MOuu+46IPWofVzPkgbKQG+Jl+7c6ZIkaWCUenf6YHDNNddw4oknrjdu3LhxXHHFFQNUkSRpsLCJ97Pp06czffr0gS5DkjQIuTtdkqSKsolLklRRNnFJkirKJi5JUkWVu4mfOqa1tx40cylSaP5ypEuWLGHChAlNPdWulrvhhht473vf2+uMzhxxxBEsXry402nHHnssCxcu7Hb5o48+mp/85CcbjG98Pe666y6OPvroPtUqSepZuZt4m7W6iZfJggULWLNmDTvvvPMG09asWcP3vvc9dtttt43Kbnw9dt99d5YuXcpDDz200fVKknpmE6/TeD3xzOy3a4oDvV7uqaee4tBDD2XixIm8+c1v5s477wTgueee45hjjmH33Xdn4sSJXH755Rsse/HFF3PIIYesGx41ahQnn3wye+21F7/73e/YZ5991l1C9fvf/z677LIL++yzD5/85CfXXecc4MYbb+Stb30rO++887qt8sbXA+B973sfl156aVOvgyRp4/g78Tr11xMHuPzyy5k/f36/XFMcYJtttunVcqeccgp77LEHV155Jddddx0f/ehHmT9/PqeffjpjxozhrrvuAlh37fF6N998MzNmzFg3/PzzzzNhwgROO+209eZbtmwZp59+OrfffjujR49mv/32Y9KkSeumP/roo9x0003ce++9HHzwwRxxxBEbvB4AU6ZMYdasWXzhC1/o8XWQJG0cm3g3+vua4r1d7qabblq3lb3ffvuxfPlyVqxYwa9//ev1tnq33HLLDZZ99NFHeeUrX7luuKOjg8MPP3yD+f7whz8wbdo0XvGKVwDwgQ98YL26Dj30UDbbbDN22203HnvssS5r3WabbVi2bFm3z0eS1Dc28W5szDXFX3rpJYYPH94vy3VWT0SQmUREt8uOGDGClStXrhsePnw4HR0dTT1GvZe97GVNzbty5UpGjBjRbZYkqW/8TrxO4zW+9957b2bPns2aNWt44oknuPHGG5k6deoG861YsYLtt9+ezTbbjB/+8IdNX1O8t8vtvffeXHzxxUDtqPWtt96azTffnAMOOICzzjpr3Xyd7U7fddddWbRoUY81TZ06ld/85jc8/fTTrF69utPv1xt1dm30+++/f6OOzJckNa/cW+JtvjB74/XEzzjjDH73u9/12zXFe7vcqaeeyjHHHMPEiRN5+ctfzoUXXgjAl7/8ZT796U8zYcIEOjo6OOWUU3j/+9+/3rLvec97uOGGG9h///27fYwddtiBL33pS+y111686lWvYrfddmPMmO5/njdx4sT1Xo/Pf/7zXH/99bznPe29HrwkbWq8nvgm4q9//Sv77rsvN998c6e70es999xzjBo1itWrV3PYYYfx8Y9/nMMOO6zpx3rxxReZNm0aN910E0OGbPg50fUsaaB4PXFV0ogRI/jKV77CI4880uO8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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"performance[['total_ticks', 'total_alloc']].plot.bar(\n",
" logy=False, secondary_y=['total_alloc'], \n",
" figsize=(8, 6), title=\"Internal time and memory\")\n",
"plt.savefig('internal_time_and_memory_linear.png')"
]
},
{
"cell_type": "code",
"execution_count": 333,
"metadata": {},
"outputs": [],
"source": [
"# times = pd.read_csv('times.csv', \n",
"# names=['program', 'system', 'elapsed', 'memory'], \n",
"# index_col='program')\n",
"# times.index = times.index.str.slice(start=len('cabal run '))\n",
"# times.elapsed = pd.to_numeric(times.elapsed.str.slice(start=2))\n",
"# times"
]
},
{
"cell_type": "code",
"execution_count": 334,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" system | \n",
" elapsed | \n",
" memory | \n",
"
\n",
" \n",
" program | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" advent01 | \n",
" 0.01 | \n",
" 0.02 | \n",
" 10212 | \n",
"
\n",
" \n",
" advent02 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 7876 | \n",
"
\n",
" \n",
" advent03 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 10760 | \n",
"
\n",
" \n",
" advent04 | \n",
" 0.02 | \n",
" 0.05 | \n",
" 14236 | \n",
"
\n",
" \n",
" advent05 | \n",
" 0.07 | \n",
" 0.47 | \n",
" 49372 | \n",
"
\n",
" \n",
" advent06 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 7948 | \n",
"
\n",
" \n",
" advent07 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 10164 | \n",
"
\n",
" \n",
" advent08 | \n",
" 0.21 | \n",
" 0.98 | \n",
" 12252 | \n",
"
\n",
" \n",
" advent09 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 6644 | \n",
"
\n",
" \n",
" advent10 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 7456 | \n",
"
\n",
" \n",
" advent11 | \n",
" 0.01 | \n",
" 0.04 | \n",
" 11272 | \n",
"
\n",
" \n",
" advent12 | \n",
" 0.11 | \n",
" 1.15 | \n",
" 61132 | \n",
"
\n",
" \n",
" advent13 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 11504 | \n",
"
\n",
" \n",
" advent14 | \n",
" 0.00 | \n",
" 0.02 | \n",
" 11020 | \n",
"
\n",
" \n",
" advent15 | \n",
" 0.18 | \n",
" 1.39 | \n",
" 53240 | \n",
"
\n",
" \n",
" advent16 | \n",
" 0.01 | \n",
" 0.01 | \n",
" 12128 | \n",
"
\n",
" \n",
" advent17 | \n",
" 0.00 | \n",
" 0.02 | \n",
" 11604 | \n",
"
\n",
" \n",
" advent18 | \n",
" 0.03 | \n",
" 0.17 | \n",
" 11812 | \n",
"
\n",
" \n",
" advent19 | \n",
" 0.15 | \n",
" 3.88 | \n",
" 12524 | \n",
"
\n",
" \n",
" advent20 | \n",
" 0.34 | \n",
" 2.49 | \n",
" 207144 | \n",
"
\n",
" \n",
" advent21 | \n",
" 0.16 | \n",
" 1.03 | \n",
" 22020 | \n",
"
\n",
" \n",
" advent22 | \n",
" 0.14 | \n",
" 0.76 | \n",
" 12508 | \n",
"
\n",
" \n",
" advent23 | \n",
" 2.29 | \n",
" 27.19 | \n",
" 98824 | \n",
"
\n",
" \n",
" advent24 | \n",
" 4.00 | \n",
" 27.92 | \n",
" 12432 | \n",
"
\n",
" \n",
" advent25 | \n",
" 0.19 | \n",
" 4.21 | \n",
" 13748 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" system elapsed memory\n",
"program \n",
"advent01 0.01 0.02 10212\n",
"advent02 0.00 0.01 7876\n",
"advent03 0.00 0.01 10760\n",
"advent04 0.02 0.05 14236\n",
"advent05 0.07 0.47 49372\n",
"advent06 0.00 0.01 7948\n",
"advent07 0.00 0.01 10164\n",
"advent08 0.21 0.98 12252\n",
"advent09 0.00 0.01 6644\n",
"advent10 0.00 0.01 7456\n",
"advent11 0.01 0.04 11272\n",
"advent12 0.11 1.15 61132\n",
"advent13 0.00 0.01 11504\n",
"advent14 0.00 0.02 11020\n",
"advent15 0.18 1.39 53240\n",
"advent16 0.01 0.01 12128\n",
"advent17 0.00 0.02 11604\n",
"advent18 0.03 0.17 11812\n",
"advent19 0.15 3.88 12524\n",
"advent20 0.34 2.49 207144\n",
"advent21 0.16 1.03 22020\n",
"advent22 0.14 0.76 12508\n",
"advent23 2.29 27.19 98824\n",
"advent24 4.00 27.92 12432\n",
"advent25 0.19 4.21 13748"
]
},
"execution_count": 334,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"times = pd.read_csv('times_raw.csv', \n",
" names=['program', 'system', 'elapsed', 'memory'], \n",
" index_col='program')\n",
"times.elapsed = pd.to_numeric(times.elapsed.str.slice(start=2))\n",
"times"
]
},
{
"cell_type": "code",
"execution_count": 335,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"system float64\n",
"elapsed float64\n",
"memory int64\n",
"dtype: object"
]
},
"execution_count": 335,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"times.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 336,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" system | \n",
" elapsed | \n",
" memory | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 25.000000 | \n",
" 25.000000 | \n",
" 25.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 0.316800 | \n",
" 2.874800 | \n",
" 27993.280000 | \n",
"
\n",
" \n",
" std | \n",
" 0.890916 | \n",
" 7.520247 | \n",
" 43271.608039 | \n",
"
\n",
" \n",
" min | \n",
" 0.000000 | \n",
" 0.010000 | \n",
" 6644.000000 | \n",
"
\n",
" \n",
" 25% | \n",
" 0.000000 | \n",
" 0.010000 | \n",
" 10760.000000 | \n",
"
\n",
" \n",
" 50% | \n",
" 0.020000 | \n",
" 0.050000 | \n",
" 12128.000000 | \n",
"
\n",
" \n",
" 75% | \n",
" 0.160000 | \n",
" 1.150000 | \n",
" 14236.000000 | \n",
"
\n",
" \n",
" max | \n",
" 4.000000 | \n",
" 27.920000 | \n",
" 207144.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" system elapsed memory\n",
"count 25.000000 25.000000 25.000000\n",
"mean 0.316800 2.874800 27993.280000\n",
"std 0.890916 7.520247 43271.608039\n",
"min 0.000000 0.010000 6644.000000\n",
"25% 0.000000 0.010000 10760.000000\n",
"50% 0.020000 0.050000 12128.000000\n",
"75% 0.160000 1.150000 14236.000000\n",
"max 4.000000 27.920000 207144.000000"
]
},
"execution_count": 336,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"times.describe()"
]
},
{
"cell_type": "code",
"execution_count": 337,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_time | \n",
" total_alloc | \n",
" total_ticks | \n",
" initial_capabilities | \n",
" system | \n",
" elapsed | \n",
" memory | \n",
"
\n",
" \n",
" program | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" advent01 | \n",
" 0.06 | \n",
" 12058592 | \n",
" 192 | \n",
" 12 | \n",
" 0.01 | \n",
" 0.02 | \n",
" 10212 | \n",
"
\n",
" \n",
" advent02 | \n",
" 0.02 | \n",
" 1818928 | \n",
" 72 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 7876 | \n",
"
\n",
" \n",
" advent03 | \n",
" 0.05 | \n",
" 8298128 | \n",
" 168 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 10760 | \n",
"
\n",
" \n",
" advent04 | \n",
" 0.19 | \n",
" 54628920 | \n",
" 636 | \n",
" 12 | \n",
" 0.02 | \n",
" 0.05 | \n",
" 14236 | \n",
"
\n",
" \n",
" advent05 | \n",
" 2.26 | \n",
" 434487576 | \n",
" 7692 | \n",
" 12 | \n",
" 0.07 | \n",
" 0.47 | \n",
" 49372 | \n",
"
\n",
" \n",
" advent06 | \n",
" 0.02 | \n",
" 2507624 | \n",
" 72 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 7948 | \n",
"
\n",
" \n",
" advent07 | \n",
" 0.04 | \n",
" 5589544 | \n",
" 132 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 10164 | \n",
"
\n",
" \n",
" advent08 | \n",
" 6.57 | \n",
" 2499222744 | \n",
" 22404 | \n",
" 12 | \n",
" 0.21 | \n",
" 0.98 | \n",
" 12252 | \n",
"
\n",
" \n",
" advent09 | \n",
" 0.01 | \n",
" 469984 | \n",
" 36 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 6644 | \n",
"
\n",
" \n",
" advent10 | \n",
" 0.02 | \n",
" 2383248 | \n",
" 60 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 7456 | \n",
"
\n",
" \n",
" advent11 | \n",
" 0.12 | \n",
" 39102056 | \n",
" 396 | \n",
" 12 | \n",
" 0.01 | \n",
" 0.04 | \n",
" 11272 | \n",
"
\n",
" \n",
" advent12 | \n",
" 6.69 | \n",
" 722598152 | \n",
" 22800 | \n",
" 12 | \n",
" 0.11 | \n",
" 1.15 | \n",
" 61132 | \n",
"
\n",
" \n",
" advent13 | \n",
" 0.03 | \n",
" 4493632 | \n",
" 96 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.01 | \n",
" 11504 | \n",
"
\n",
" \n",
" advent14 | \n",
" 0.05 | \n",
" 15471000 | \n",
" 180 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.02 | \n",
" 11020 | \n",
"
\n",
" \n",
" advent15 | \n",
" 13.51 | \n",
" 2458599000 | \n",
" 46080 | \n",
" 12 | \n",
" 0.18 | \n",
" 1.39 | \n",
" 53240 | \n",
"
\n",
" \n",
" advent16 | \n",
" 0.05 | \n",
" 8613496 | \n",
" 180 | \n",
" 12 | \n",
" 0.01 | \n",
" 0.01 | \n",
" 12128 | \n",
"
\n",
" \n",
" advent17 | \n",
" 0.20 | \n",
" 88071992 | \n",
" 672 | \n",
" 12 | \n",
" 0.00 | \n",
" 0.02 | \n",
" 11604 | \n",
"
\n",
" \n",
" advent18 | \n",
" 1.73 | \n",
" 588717288 | \n",
" 5916 | \n",
" 12 | \n",
" 0.03 | \n",
" 0.17 | \n",
" 11812 | \n",
"
\n",
" \n",
" advent19 | \n",
" 21.74 | \n",
" 2623652352 | \n",
" 74148 | \n",
" 12 | \n",
" 0.15 | \n",
" 3.88 | \n",
" 12524 | \n",
"
\n",
" \n",
" advent20 | \n",
" 35.11 | \n",
" 3090735840 | \n",
" 119712 | \n",
" 12 | \n",
" 0.34 | \n",
" 2.49 | \n",
" 207144 | \n",
"
\n",
" \n",
" advent21 | \n",
" 9.43 | \n",
" 2400838008 | \n",
" 32160 | \n",
" 12 | \n",
" 0.16 | \n",
" 1.03 | \n",
" 22020 | \n",
"
\n",
" \n",
" advent22 | \n",
" 5.54 | \n",
" 1384180736 | \n",
" 18876 | \n",
" 12 | \n",
" 0.14 | \n",
" 0.76 | \n",
" 12508 | \n",
"
\n",
" \n",
" advent23 | \n",
" 172.99 | \n",
" 38150694448 | \n",
" 589896 | \n",
" 12 | \n",
" 2.29 | \n",
" 27.19 | \n",
" 98824 | \n",
"
\n",
" \n",
" advent24 | \n",
" 340.53 | \n",
" 66538931736 | \n",
" 1161240 | \n",
" 12 | \n",
" 4.00 | \n",
" 27.92 | \n",
" 12432 | \n",
"
\n",
" \n",
" advent25 | \n",
" 25.72 | \n",
" 1910248008 | \n",
" 87696 | \n",
" 12 | \n",
" 0.19 | \n",
" 4.21 | \n",
" 13748 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_time total_alloc total_ticks initial_capabilities system \\\n",
"program \n",
"advent01 0.06 12058592 192 12 0.01 \n",
"advent02 0.02 1818928 72 12 0.00 \n",
"advent03 0.05 8298128 168 12 0.00 \n",
"advent04 0.19 54628920 636 12 0.02 \n",
"advent05 2.26 434487576 7692 12 0.07 \n",
"advent06 0.02 2507624 72 12 0.00 \n",
"advent07 0.04 5589544 132 12 0.00 \n",
"advent08 6.57 2499222744 22404 12 0.21 \n",
"advent09 0.01 469984 36 12 0.00 \n",
"advent10 0.02 2383248 60 12 0.00 \n",
"advent11 0.12 39102056 396 12 0.01 \n",
"advent12 6.69 722598152 22800 12 0.11 \n",
"advent13 0.03 4493632 96 12 0.00 \n",
"advent14 0.05 15471000 180 12 0.00 \n",
"advent15 13.51 2458599000 46080 12 0.18 \n",
"advent16 0.05 8613496 180 12 0.01 \n",
"advent17 0.20 88071992 672 12 0.00 \n",
"advent18 1.73 588717288 5916 12 0.03 \n",
"advent19 21.74 2623652352 74148 12 0.15 \n",
"advent20 35.11 3090735840 119712 12 0.34 \n",
"advent21 9.43 2400838008 32160 12 0.16 \n",
"advent22 5.54 1384180736 18876 12 0.14 \n",
"advent23 172.99 38150694448 589896 12 2.29 \n",
"advent24 340.53 66538931736 1161240 12 4.00 \n",
"advent25 25.72 1910248008 87696 12 0.19 \n",
"\n",
" elapsed memory \n",
"program \n",
"advent01 0.02 10212 \n",
"advent02 0.01 7876 \n",
"advent03 0.01 10760 \n",
"advent04 0.05 14236 \n",
"advent05 0.47 49372 \n",
"advent06 0.01 7948 \n",
"advent07 0.01 10164 \n",
"advent08 0.98 12252 \n",
"advent09 0.01 6644 \n",
"advent10 0.01 7456 \n",
"advent11 0.04 11272 \n",
"advent12 1.15 61132 \n",
"advent13 0.01 11504 \n",
"advent14 0.02 11020 \n",
"advent15 1.39 53240 \n",
"advent16 0.01 12128 \n",
"advent17 0.02 11604 \n",
"advent18 0.17 11812 \n",
"advent19 3.88 12524 \n",
"advent20 2.49 207144 \n",
"advent21 1.03 22020 \n",
"advent22 0.76 12508 \n",
"advent23 27.19 98824 \n",
"advent24 27.92 12432 \n",
"advent25 4.21 13748 "
]
},
"execution_count": 337,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"performance = performance.merge(times, left_index=True, right_index=True)\n",
"# performance.drop(index='advent15loop', inplace=True)\n",
"performance"
]
},
{
"cell_type": "code",
"execution_count": 338,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['total_time', 'total_alloc', 'total_ticks', 'initial_capabilities',\n",
" 'system', 'elapsed', 'memory'],\n",
" dtype='object')"
]
},
"execution_count": 338,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"performance.columns"
]
},
{
"cell_type": "code",
"execution_count": 339,
"metadata": {
"Collapsed": "false"
},
"outputs": [
{
"data": {
"image/png": "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VCn1XgmdnZ3piIEkabSIiKcys3PX9xw5Tj6UJEmFUv6UsDPPPfcc3d3dPPPMM80uRQM0ceJEpkyZwrhx45pdiiSpHy3XGHR3d7PHHnswdepUqud7VwvITDZu3Eh3dzfTpk1rdjmSpH603E8JzzzzDHvttZdNQYuJCPbaay9HeiSp5FquMQBsClqU202Syq8lG4Mymjp1Kr///e8b/rwzZ87k1ltvbfjzSpLaU8vNMehr6vzlw5q3fsGbhzVPkqRW4ojBIHz961/niCOO4OCDD+af/umf6Onp2e72OXPmcNhhh/GqV72KRYv+8xTtu+++Ox/+8Ic59NBDmTVrFo8++igAF198MQcccABdXV2cfPLJADz55JO8613v4vDDD+eQQw7huuuuA+Dpp5/m5JNPpquri5NOOomnn276QbIkSW2klI1BRMyOiEV9P3DLYO3atSxZsoSbbrqJ1atX09HRwTe+8Y3t7nPZZZdx2223ceutt3LxxRezceNGoPJhf+ihh3L77bdz9NFH88lPfhKABQsWcMcdd7BmzRoWLlwIwGc+8xn+9m//llWrVnHDDTdw9tln8+STT/LlL3+ZSZMmsWbNGj72sY9x2223NfYPIElqa6X8KSEzlwHLOjs7z2x2LX396Ec/4rbbbuPwww8HKt/gX/ziF293n4svvpjvfOc7AGzYsIH77ruPvfbaizFjxnDSSScBcOqpp3LiiScC0NXVxSmnnMKcOXOYM2cOAD/84Q9ZunQpF154IVDZG+PBBx9k5cqVvP/97y8e19XVNeKvWZI0epSyMSizzOQd73gHF1xwwXbrFy9eDMBPfvITrr/+em6++WYmTZrEzJkz+91Fr3eW/vLly1m5ciVLly7lU5/6FHfffTeZybe+9S1mzJjR7+MkSRpupfwpocxmzZrFtddeyyOPPALAY489xgMPPFDcvnnzZvbcc08mTZrEPffcw89//vPitm3btnHttdcCcOWVV/La176Wbdu2sWHDBl7/+tfzuc99jk2bNvHEE09w7LHH8sUvfpHec1nccccdALzuda8rfrq46667WLNmTUNet6Q2d97k7S+j2NT5y7e7jDaOGAzQAQccwKc//WmOOeYYtm3bxrhx47j00kuL24877jgWLlxIV1cXM2bM4Mgjjyxu6+zs5O677+awww5j8uTJLFmyhJ6eHk499VQ2b95M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\n",
"text/plain": [
"