{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "09b5b05d-ae4f-4ec4-bebf-5824274e4631",
"metadata": {},
"outputs": [],
"source": [
"import os, glob\n",
"import collections\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "7bd3fc71-cd3b-4218-8912-c35bdc2584bf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[' build-depends: base >=4.16\\n',\n",
" ' build-depends: base ^>=4.16.4.0\\n',\n",
" ' build-depends: base >=4.16\\n',\n",
" ' build-depends: split\\n',\n",
" ' build-depends: text, attoparsec\\n',\n",
" ' build-depends: containers, split\\n',\n",
" ' build-depends: text, attoparsec\\n',\n",
" ' build-depends: text, attoparsec, intervals\\n',\n",
" ' build-depends: text, attoparsec, containers\\n',\n",
" ' build-depends: text, attoparsec, containers, rosezipper\\n',\n",
" ' build-depends: text, attoparsec, containers, linear, lens\\n',\n",
" ' build-depends: text, attoparsec, split\\n',\n",
" ' build-depends: text, attoparsec, containers, lens, mtl\\n',\n",
" ' build-depends: containers, linear, array, pqueue, mtl, lens\\n',\n",
" ' build-depends: text, attoparsec\\n',\n",
" ' build-depends: text, attoparsec, containers, linear, lens\\n',\n",
" ' build-depends: text, attoparsec, containers, linear, lens\\n',\n",
" ' build-depends: text, attoparsec, containers, pqueue, mtl, lens, split\\n',\n",
" ' build-depends: containers, linear, lens\\n',\n",
" ' build-depends: text, attoparsec, containers, linear, lens\\n',\n",
" ' build-depends: text, attoparsec, containers, pqueue, mtl, lens, multiset, parallel, deepseq\\n',\n",
" ' build-depends: data-clist , lens\\n',\n",
" ' build-depends: text, attoparsec, containers, lens\\n',\n",
" ' build-depends: containers, linear, lens, mtl\\n',\n",
" ' build-depends: containers, linear, lens, mtl, multiset\\n',\n",
" ' build-depends: containers, linear, lens, mtl, multiset\\n',\n",
" ' build-depends: containers, pqueue, mtl, lens, linear, array\\n']"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with open('../advent-of-code22.cabal') as f:\n",
" build_depends = [l for l in f.readlines() if 'build-depends' in l]\n",
"build_depends"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d0e0655a-2fad-47c9-afe1-8ae4c44949ab",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[', other than Main.\\n -- other-modules:\\n\\n -- LANGUAGE extensions used by modules in this package.\\n -- other-extensions:\\n build-depends: base ^>=4.16.4.0\\n hs-source-dirs: app, src\\n default-language: Haskell2010\\n\\nlibrary\\n import: common-extensions\\n build-depends: base >=4.16\\n hs-source-dirs: ., app, src\\n exposed-modules: AoC\\n\\n',\n",
" ' advent01\\n import: common-extensions, build-directives\\n main-is: advent01/Main.hs\\n build-depends: split\\n\\n',\n",
" ' advent02\\n import: common-extensions, build-directives\\n main-is: advent02/Main.hs\\n build-depends: text, attoparsec\\n\\n']"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cabal_file = open('../advent-of-code22.cabal').read()\n",
"executables = cabal_file.split('executable')[2:]\n",
"executables[:3]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "62a719db-b264-4b95-8dd0-80ab08b3622a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['split']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"e = executables[1]\n",
"e.strip().split('build-depends: ')[1].split(',')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "5f5e51ea-4457-4701-99d2-844edcec721e",
"metadata": {},
"outputs": [],
"source": [
"def extract(line):\n",
" parts = line.strip().split('build-depends: ')\n",
" name = parts[0].split()[0]\n",
" if len(parts) > 1:\n",
" depends = [p.strip() for p in parts[1].split('\\n')[0].split(',') if 'base' not in p]\n",
" else:\n",
" depends = []\n",
" return name, depends "
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a852a10b-ee9a-46d5-a390-04f218424760",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'advent01': ['split'],\n",
" 'advent02': ['text', 'attoparsec'],\n",
" 'advent03': ['containers', 'split'],\n",
" 'advent04': ['text', 'attoparsec'],\n",
" 'advent05': ['text', 'attoparsec', 'containers'],\n",
" 'advent06': [],\n",
" 'advent07': ['text', 'attoparsec', 'containers', 'rosezipper'],\n",
" 'advent08': [],\n",
" 'advent09': ['text', 'attoparsec', 'containers', 'linear', 'lens'],\n",
" 'advent10': ['text', 'attoparsec', 'split'],\n",
" 'advent11': ['text', 'attoparsec', 'containers', 'lens', 'mtl'],\n",
" 'advent12': ['containers', 'linear', 'array', 'pqueue', 'mtl', 'lens'],\n",
" 'advent13': ['text', 'attoparsec'],\n",
" 'advent14': ['text', 'attoparsec', 'containers', 'linear', 'lens'],\n",
" 'advent15': ['text', 'attoparsec', 'containers', 'linear', 'lens'],\n",
" 'advent16': ['text',\n",
" 'attoparsec',\n",
" 'containers',\n",
" 'pqueue',\n",
" 'mtl',\n",
" 'lens',\n",
" 'split'],\n",
" 'advent17': ['containers', 'linear', 'lens'],\n",
" 'advent18': ['text', 'attoparsec', 'containers', 'linear', 'lens'],\n",
" 'advent19': ['text',\n",
" 'attoparsec',\n",
" 'containers',\n",
" 'pqueue',\n",
" 'mtl',\n",
" 'lens',\n",
" 'multiset',\n",
" 'parallel',\n",
" 'deepseq'],\n",
" 'advent20': ['data-clist', 'lens'],\n",
" 'advent21': ['text', 'attoparsec', 'containers', 'lens'],\n",
" 'advent22': ['containers', 'linear', 'lens', 'mtl'],\n",
" 'advent23': ['containers', 'linear', 'lens', 'mtl', 'multiset'],\n",
" 'advent24': ['containers', 'pqueue', 'mtl', 'lens', 'linear', 'array'],\n",
" 'advent25': []}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"modules = {e: ms for e, ms in [extract(e) for e in executables] if e.endswith(tuple(str(i) for i in range(10)))}\n",
"modules"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "57036fc2-db73-4c5b-b3bc-b7e8f9bbccda",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" array | \n",
" attoparsec | \n",
" containers | \n",
" data-clist | \n",
" deepseq | \n",
" lens | \n",
" linear | \n",
" mtl | \n",
" multiset | \n",
" parallel | \n",
" pqueue | \n",
" rosezipper | \n",
" split | \n",
" text | \n",
"
\n",
" \n",
" \n",
" \n",
" advent01 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent02 | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent03 | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent04 | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent05 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent06 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent07 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent08 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent09 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent10 | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
"
\n",
" \n",
" advent11 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent12 | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent13 | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent14 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent15 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent16 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
"
\n",
" \n",
" advent17 | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent18 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent19 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent20 | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent21 | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent22 | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent23 | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent24 | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent25 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" array attoparsec containers data-clist deepseq lens linear \\\n",
"advent01 False False False False False False False \n",
"advent02 False True False False False False False \n",
"advent03 False False True False False False False \n",
"advent04 False True False False False False False \n",
"advent05 False True True False False False False \n",
"advent06 False False False False False False False \n",
"advent07 False True True False False False False \n",
"advent08 False False False False False False False \n",
"advent09 False True True False False True True \n",
"advent10 False True False False False False False \n",
"advent11 False True True False False True False \n",
"advent12 True False True False False True True \n",
"advent13 False True False False False False False \n",
"advent14 False True True False False True True \n",
"advent15 False True True False False True True \n",
"advent16 False True True False False True False \n",
"advent17 False False True False False True True \n",
"advent18 False True True False False True True \n",
"advent19 False True True False True True False \n",
"advent20 False False False True False True False \n",
"advent21 False True True False False True False \n",
"advent22 False False True False False True True \n",
"advent23 False False True False False True True \n",
"advent24 True False True False False True True \n",
"advent25 False False False False False False False \n",
"\n",
" mtl multiset parallel pqueue rosezipper split text \n",
"advent01 False False False False False True False \n",
"advent02 False False False False False False True \n",
"advent03 False False False False False True False \n",
"advent04 False False False False False False True \n",
"advent05 False False False False False False True \n",
"advent06 False False False False False False False \n",
"advent07 False False False False True False True \n",
"advent08 False False False False False False False \n",
"advent09 False False False False False False True \n",
"advent10 False False False False False True True \n",
"advent11 True False False False False False True \n",
"advent12 True False False True False False False \n",
"advent13 False False False False False False True \n",
"advent14 False False False False False False True \n",
"advent15 False False False False False False True \n",
"advent16 True False False True False True True \n",
"advent17 False False False False False False False \n",
"advent18 False False False False False False True \n",
"advent19 True True True True False False True \n",
"advent20 False False False False False False False \n",
"advent21 False False False False False False True \n",
"advent22 True False False False False False False \n",
"advent23 True True False False False False False \n",
"advent24 True False False True False False False \n",
"advent25 False False False False False False False "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_modules = set(m for p in modules for m in modules[p])\n",
"modules_df = pd.DataFrame.from_dict({p: {m: m in modules[p] for m in sorted(all_modules)} for p in modules}, orient='index').sort_index()\n",
"modules_df"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2eec3a74-e533-4d59-b495-9e774ca470e5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"| | 0 |\n",
"|:-----------|----:|\n",
"| containers | 16 |\n",
"| attoparsec | 14 |\n",
"| lens | 14 |\n",
"| text | 14 |\n",
"| linear | 9 |\n",
"| mtl | 7 |\n",
"| pqueue | 4 |\n",
"| split | 4 |\n",
"| array | 2 |\n",
"| multiset | 2 |\n",
"| data-clist | 1 |\n",
"| deepseq | 1 |\n",
"| parallel | 1 |\n",
"| rosezipper | 1 |\n"
]
}
],
"source": [
"print(modules_df.sum().sort_values(ascending=False).to_markdown())"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "d5c8f2ac-1575-49c4-b2c1-458419b9afd8",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"array(['containers', 'attoparsec', 'lens', 'text', 'linear', 'mtl',\n",
" 'pqueue', 'split', 'array', 'multiset', 'data-clist', 'deepseq',\n",
" 'parallel', 'rosezipper'], dtype=object)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_modules = modules_df.sum().sort_values(ascending=False).index.values\n",
"sorted_modules"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "1802f0e4-c0b4-4c07-9b9b-a90d01e656d2",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" containers | \n",
" attoparsec | \n",
" lens | \n",
" text | \n",
" linear | \n",
" mtl | \n",
" pqueue | \n",
" split | \n",
" array | \n",
" multiset | \n",
" data-clist | \n",
" deepseq | \n",
" parallel | \n",
" rosezipper | \n",
"
\n",
" \n",
" \n",
" \n",
" advent01 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent02 | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent03 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent04 | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent05 | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent06 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent07 | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent08 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent09 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent10 | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent11 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent12 | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent13 | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent14 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent15 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent16 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent17 | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent18 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent19 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent20 | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent21 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent22 | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent23 | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent24 | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent25 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" containers attoparsec lens text linear mtl pqueue split \\\n",
"advent01 False False False False False False False True \n",
"advent02 False True False True False False False False \n",
"advent03 True False False False False False False True \n",
"advent04 False True False True False False False False \n",
"advent05 True True False True False False False False \n",
"advent06 False False False False False False False False \n",
"advent07 True True False True False False False False \n",
"advent08 False False False False False False False False \n",
"advent09 True True True True True False False False \n",
"advent10 False True False True False False False True \n",
"advent11 True True True True False True False False \n",
"advent12 True False True False True True True False \n",
"advent13 False True False True False False False False \n",
"advent14 True True True True True False False False \n",
"advent15 True True True True True False False False \n",
"advent16 True True True True False True True True \n",
"advent17 True False True False True False False False \n",
"advent18 True True True True True False False False \n",
"advent19 True True True True False True True False \n",
"advent20 False False True False False False False False \n",
"advent21 True True True True False False False False \n",
"advent22 True False True False True True False False \n",
"advent23 True False True False True True False False \n",
"advent24 True False True False True True True False \n",
"advent25 False False False False False False False False \n",
"\n",
" array multiset data-clist deepseq parallel rosezipper \n",
"advent01 False False False False False False \n",
"advent02 False False False False False False \n",
"advent03 False False False False False False \n",
"advent04 False False False False False False \n",
"advent05 False False False False False False \n",
"advent06 False False False False False False \n",
"advent07 False False False False False True \n",
"advent08 False False False False False False \n",
"advent09 False False False False False False \n",
"advent10 False False False False False False \n",
"advent11 False False False False False False \n",
"advent12 True False False False False False \n",
"advent13 False False False False False False \n",
"advent14 False False False False False False \n",
"advent15 False False False False False False \n",
"advent16 False False False False False False \n",
"advent17 False False False False False False \n",
"advent18 False False False False False False \n",
"advent19 False True False True True False \n",
"advent20 False False True False False False \n",
"advent21 False False False False False False \n",
"advent22 False False False False False False \n",
"advent23 False True False False False False \n",
"advent24 True False False False False False \n",
"advent25 False False False False False False "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"modules_sorted_cols = modules_df[sorted_modules]\n",
"modules_sorted_cols"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "da22ede4-ac7c-4d32-9396-4cf585f97ba7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" program | \n",
" module | \n",
" present | \n",
"
\n",
" \n",
" \n",
" \n",
" 12 | \n",
" advent01 | \n",
" split | \n",
" True | \n",
"
\n",
" \n",
" 15 | \n",
" advent02 | \n",
" attoparsec | \n",
" True | \n",
"
\n",
" \n",
" 27 | \n",
" advent02 | \n",
" text | \n",
" True | \n",
"
\n",
" \n",
" 30 | \n",
" advent03 | \n",
" containers | \n",
" True | \n",
"
\n",
" \n",
" 40 | \n",
" advent03 | \n",
" split | \n",
" True | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 324 | \n",
" advent24 | \n",
" containers | \n",
" True | \n",
"
\n",
" \n",
" 327 | \n",
" advent24 | \n",
" lens | \n",
" True | \n",
"
\n",
" \n",
" 328 | \n",
" advent24 | \n",
" linear | \n",
" True | \n",
"
\n",
" \n",
" 329 | \n",
" advent24 | \n",
" mtl | \n",
" True | \n",
"
\n",
" \n",
" 332 | \n",
" advent24 | \n",
" pqueue | \n",
" True | \n",
"
\n",
" \n",
"
\n",
"
90 rows × 3 columns
\n",
"
"
],
"text/plain": [
" program module present\n",
"12 advent01 split True\n",
"15 advent02 attoparsec True\n",
"27 advent02 text True\n",
"30 advent03 containers True\n",
"40 advent03 split True\n",
".. ... ... ...\n",
"324 advent24 containers True\n",
"327 advent24 lens True\n",
"328 advent24 linear True\n",
"329 advent24 mtl True\n",
"332 advent24 pqueue True\n",
"\n",
"[90 rows x 3 columns]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"modules_scatter = modules_df.stack().reset_index()\n",
"modules_scatter.columns = ['program', 'module', 'present']\n",
"modules_scatter = modules_scatter[modules_scatter.present]\n",
"modules_scatter"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "fa6a99a2-749a-48d5-9009-11a45eb2722a",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"modules_scatter.plot.scatter(x='program', y='module', s=80, rot=45, figsize=(10, 6))"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "0e1cb390-cfce-41aa-b18f-b3d9fee57ae0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cmap = mpl.colors.ListedColormap(['white', 'blue'])\n",
"\n",
"fig, ax = plt.subplots(figsize=(10, 10))\n",
"ax.imshow(modules_df.to_numpy().T, cmap=cmap)\n",
"plt.xticks(range(modules_df.index.size), labels=modules_df.index.values, rotation=90);\n",
"plt.yticks(range(modules_df.columns.size), labels=modules_df.columns.values);\n",
"\n",
"ax.xaxis.set_minor_locator(mpl.ticker.MultipleLocator(0.5))\n",
"ax.yaxis.set_minor_locator(mpl.ticker.MultipleLocator(0.5))\n",
"ax.grid(which='minor', axis='both', linestyle='-', color='silver', linewidth=1.5);\n",
"plt.savefig('packages.png');"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "6436d177-2695-4847-b00c-bf7f4a38f1fe",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAngAAAF9CAYAAACXshUUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3/ElEQVR4nO3de5xddX3v/9ebgEAcnCn10hiVUIIOI8LABI4ow2Cl1FOJl4pS0Fq8kKJFGv2htUo5qMdLxZbgBT1BPaAoQwWlxJ4CyiVcBAmT2SQBuaQFa4NasWZgo1Agn98fa43ZjnuSSWZ9Z/Z35f18POYxe6+99mt/55vZw5e1b4oIzMzMzKw+dprtAZiZmZlZtbzAMzMzM6sZL/DMzMzMasYLPDMzM7Oa8QLPzMzMrGa8wDMzMzOrmZ1newCdQNJiYPHcuXNP2muvvSrvb9q0CYCddqp2Pb1p0yaefBIee6za7q67bmLOnOrHC/D448Vc5DLmVHMMMHdumt+L3OYY0o45Vddzkbabsp1bF/L8e5FTN2U75X+f7r777gcj4hntLpffB2+zvr6+uPPOOyvvNhoNAPr7+yvvrlwJS5dW2122rMHQUPXjBTjnnAaQz5hTzTHA6GgDqH7Muc0xpB1zqq7nIm03ZTu3LuT59yKnbsp2yv8+HXTQQSMRsajd5X6I1szMzKxmvMAzMzMzqxkv8MzMzMxqxgs8MzMzs5rxAs/MzMysZmZkgSdpgaQTprDfsyVdMhNjMjMzM6urmTqCtwDY6gIvIh6IiGOruEFJc6romJmZmeVmSgs8SW+WtEbS7ZK+KmkvSVeX266W9Lxyv/MlfVrS9yT9m6TxxdongEFJDUnvLo/o3SBpdfn1kvL6CyStK0+fKOmbkq6QdK+kT7aM52hJN5fX/YakrnL7/ZLOkHQj8HpJp0q6sxzncIXzZmZmZtaxtvpJFpJeCHwQeGlEPChpT+AC4CsRcYGktwKfBl5TXmUecDjQC1wOXAK8HzgtIo4pm3OBP4yIRyXtC1wEtHujvn7gIOAx4G5JnwF+BZwOHBURj0j6a+A9wIfL6zwaEYeXt/MAsHdEPCapZ+rTYmZmZpavqXxU2R8Al0TEgwAR8V+SDgP+pLz8q8AnW/a/LCI2AXdKetYkzV2Az0rqB54Enj/JfldHxBiApDuBvYAeoA+4SRLAU4CbW65zccvpNcDXJF0GXNbuBiQtAZYAzJs3b5JhmJmZmeVjKgs8AVv7PLPWyx+bcN123g38FDiQ4mHiRyfZr7X1JMV4BXwnIo6f5DqPtJx+JXAE8CrgbyW9MCKe+I2BRywHlkPxUWWTNM3MzMyyMZXn4F0NvEHS7wKUD9F+D/jT8vI3AjdupfEwsEfL+W7gx+WRvj8DtuUFEbcAL5W0sBzPXEm/dQRQ0k7AcyPiWuB9FEf+urbhdszMzMyytNUjeBFxh6SPAislPQmMAqcCX5b0XuBnwFu2klkDPCHpduB84FzgUkmvB67lN4+6bW08P5N0InCRpF3LzacD90zYdQ5woaRuiqN+Z0fExqnejpmZmVmupvIQLRFxAcULK1r9QZv9Tpxwvqv8/jjw8gm7H9By+m/K/e4H9i9Pn0+xGBxvHdNy+hrgkDa3v6Dl9OMUL/YwMzMz26H4kyzMzMzMasYLPDMzM7Oa8QLPzMzMrGa8wDMzMzOrGS/wzMzMzGpGEX5v33G9vb0xPFz9R9Zu2NAEYP36at+Gb+HCJt3d0NVVbbfZbDI2Vv14oRgzeC4ABgaKuah6zCl/31J0U7ZTzXGu95GcuuD7SKsc5yLV32SovpuynbI7ODg4EhHtPurVR/AAJC2WtHz8H8HMzMwsZ1N6H7y6i4gVwIq+vr6T+vv7K++vXNkAYOnSatvLljUYGoKqx9xoNBgZqX68UIwZPBcAo6MNoPoxp/x9S9FN2U41x7neR3Lqgu8jrXKci1R/k6H6bsp26u5kfATPzMzMrGa8wDMzMzOrGS/wzMzMzGrGCzwzMzOzmvECz8zMzKxmvMAzMzMzq5ntXuBJ+kDL6R5J76xmSGZmZmY2HdM5gveBltM9QPIFnqQ5qW/DzMzMLHdTWuBJukzSiKQ7JC2R9Algd0kNSV8DPgHsU54/S4WzJK2TtFbScWXnSEnXS/qWpDslfUHSTuVln5d0W3kbH2q57fslnSHpRuD1kk4tr7tG0nC5z1MlfVnSKkmjkl5dbp8j6VPlGNZIele102dmZmbWeab6SRZvjYj/krQ7sAoYAk6JiH4ASQuA/VvOvw7oBw4Eng6sknR92ToU6AN+CFwB/AlwCfDB8jbmAFdLOiAi1pTXeTQiDi/bDwB7R8RjknrKyz8IXBMRby233Srpu8Cbgb2BgyLiCUl7TvzBJC0BlgDMmzdvitNhZmZm1rmm+hDtqZJuB24Bngvsu5X9DwcuiognI+KnwErgkPKyWyPi3yLiSeCicl+AN0haDYwCL6RYBI67uOX0GuBrkt4EPFFuOxp4v6QGcB2wG/A84CjgCxHxBEBE/NfEgUbE8ohYFBGLenp6tvJjmZmZmXW+rR7Bk3QkxULpsIj4paTrKBZQW7zaFi6Liecl7Q2cBhwSEb+QdP6E23ik5fQrgSOAVwF/K+mF5e29LiLunjB2tbk9MzMzs1qbyhG8buAX5eKuF3hxuf1xSbuUpx8G9mi5zvXAceVz4J5BsSC7tbzsUEl7l8+9Ow64EXgaxSJuTNKzgP/ZbiDldZ4bEdcC76N4cUcXcCXwrnJBh6SDyqtcBZwsaedy+289RGtmZmZWN1NZ4F0B7CxpDfARiodpAZYDayR9LSJ+DtxUvqjiLOBbFA+l3g5cA7wvIn5SXu9mihdlrAPuA74VEbdTPDR7B/Bl4KZJxjIHuFDS2nL/syNiYzmuXcrxrCvPA3wR+Pdy++3ACVP4ec3MzMyyttWHaCPiMdofUbsO+OuW/SYunt5bfk30y4g4rs3tnDjJ7S9oOf04m5+z17rPr4C/aLP9CeA95ZeZmZnZDsGfZGFmZmZWM1N9m5RKRMR1FEf+zMzMzCwRH8EzMzMzqxkv8MzMzMxqRhF+m7hxvb29MTw8XHl3w4YmAOvXd1XaXbiwSXc3dHVV2202m4yNVT9eKMYMnguAgYFiLqoec8rftxTdlO1Uc5zrfSSnLvg+0irHuUj1Nxmq76Zsp+wODg6ORMSidpfP6HPwOpWkxcDi+fPnJ+l3dxffh4aq7Za/M0l0d1c/Xtg8Zs9F2jGnkmouNmyovgkwNlZ8HxmptrtwYX5zkaOU/365yXEuxsbSjbfqbsr2+N+LmeYFHhARK4AVfX19J/X391febzQaAFTdzq2bsp1bN2V75cqiu3Rptd1lyxoMDaWZi5RjTtX1XKTtpmzn1k3Zdjd9O9Xfi/H/hkzGz8EzMzMzqxkv8MzMzMxqxgs8MzMzs5rxAs/MzMysZrzAMzMzM6sZL/DMzMzMaiaLBZ6kDN8xzMzMzGx2ZLHAMzMzM7Opy26BJ+m9klZJWiPpQ+W2BZJ+IOk8SXdIukrS7uVlp0q6s9y/+s8hMzMzM+swWS3wJB0N7AscCvQDA5KOKC/eF/hcRLwQ2Ai8rtz+fuCgiDgAOHlGB2xmZmY2C7Ja4AFHl1+jwGqgl2JhB3BfRDTK0yPAgvL0GuBrkt4EPDExKGmJpNsk3bZx48Z0IzczMzObIbkt8AR8PCL6y6+FEfGl8rLHWvZ7ks2fs/tK4HPAADAi6Tc+fzcilkfEoohY1NPTk3j4ZmZmZunltsC7EnirpC4ASfMlPXOynSXtBDw3Iq4F3gf0AF0zMVAzMzOz2bLz1nfpHBFxlaT9gJslATSBN1EcsWtnDnChpG6Ko39nR8TGmRirmZmZ2WzJYoEXEV0tp88Bzmmz2/4t+3yqZfvhCYdmZmZm1nFye4jWzMzMzLbCCzwzMzOzmvECz8zMzKxmvMAzMzMzqxkv8MzMzMxqRhEx22PoGL29vTE8XP3H1W7Y0ARg/fpq34Jv4cIm3d3Q1VVtt9lsMjZW/XihGDN4LgAGBoq5qHrMKX/fUnRTtlPNca73kZy64PtIqxznItXfZKi+m7Kdsjs4ODgSEYvaXe4jeICkxZKWj/8jmJmZmeUsi/fBSy0iVgAr+vr6Turv76+8v3JlA4ClS6ttL1vWYGgIqh5zo9FgZKT68UIxZvBcAIyONoDqx5zy9y1FN2U71Rzneh/JqQu+j7TKcS5S/U2G6rsp26m7k/ERPDMzM7Oa8QLPzMzMrGa8wDMzMzOrGS/wzMzMzGrGCzwzMzOzmsligSepR9I7t/O6/ZL+uOoxmZmZmXWqLBZ4QA+wXQs8oB/wAs/MzMx2GLks8D4B7COpIeksSe+VtErSGkkfApD0WknfVWGepHskPQ/4MHBced3jZvWnMDMzM5sBuSzw3g/8a0T0A98B9gUOpTg6NyDpiIj4FvAT4C+B84D/FRH/DpwBXBwR/RFx8WwM3szMzGwm5fhJFkeXX6Pl+S6KBd/1wLuAdcAtEXHRVGKSlgBLAObNm1f5YM3MzMxmWo4LPAEfj4j/0+ay+cAm4FmSdoqITVuLRcRyYDlAX19fVDpSMzMzs1mQy0O0DwN7lKevBN4qqQtA0nxJz5S0M/B/gROAHwDvaXNdMzMzs9rLYoEXET8HbpK0DvhD4OvAzZLWApdQLOA+ANwQETdQLO7eLmk/4Fqgzy+yMDMzsx1FNg/RRsQJEzadM+H8h1v2fRjobbnskFTjMjMzM+s0WRzBMzMzM7Op8wLPzMzMrGa8wDMzMzOrGS/wzMzMzGrGCzwzMzOzmlGE39t3XG9vbwwPD1febTabAHR1de3Q3ZTt3Lop2xs2FN3166vtLlzYpLvbcwFp5yLlmFN1PRebu7ndR1J2x8by+bdL2U71e9FsNhkcHByJiEXtLvcRPEDSYknLx3/RzczMzHKWzfvgpRQRK4AVfX19J/X391febzQaAFTdzq2bsp1bN2V75cqiu3Rptd1lyxoMDXkuIO1cpBxzqq7nYnM3t/tIyu7ISD7/dinbqX4vxv/tJuMjeGZmZmY14wWemZmZWc14gWdmZmZWM17gmZmZmdWMF3hmZmZmNeMFnpmZmVnNdMQCT1Kz/P5sSZfM9njMzMzMctYRC7xxEfFARByb8jYk+b3/zMzMrNY6aoEnaYGkdeXpEyV9U9IVku6V9MmW/Y6WdLOk1ZK+Iamr3H6GpFWS1klaLknl9uskfUzSSuCvZuWHMzMzM5shHbXAa6MfOA54EXCcpOdKejpwOnBURBwM3Aa8p9z/sxFxSETsD+wOHNPS6omIoYj4+9YbkLRE0m2Sbtu4cWPiH8fMzMwsvU5/uPLqiBgDkHQnsBfQA/QBN5UH6J4C3Fzu/zJJ7wPmAnsCdwAryssubncDEbEcWA7Q19cXSX4KMzMzsxnU6Qu8x1pOP0kxXgHfiYjjW3eUtBtwLrAoIn4k6Uxgt5ZdHkk8VjMzM7OO0OkP0bZzC/BSSQsBJM2V9Hw2L+YeLJ+Tl/TFGmZmZmadqtOP4P2WiPiZpBOBiyTtWm4+PSLukXQesBa4H1g1S0M0MzMzm1UdscCLiK7y+/3A/uXp84HzW/Y5puX0NcAhbTqnU7wAY+L2I6sdsZmZmVnnyvEhWjMzMzPbAi/wzMzMzGrGCzwzMzOzmvECz8zMzKxmFOH39h3X29sbw8PDlXebzSYAXV1dO3Q3ZTu3bsr2hg1Fd/36arsLFzbp7vZcQNq5SDnmVF3PxeZubveRlN2xsXz+7VK2U/1eNJtNBgcHRyJiUbvLO+JVtLNN0mJg8fz582d7KGbT1t1dfB8aqrZb/ncgibGx4vvISLXdhQur7c2E1P9+KbpjY9X/2wEMDBTfPReb58JsqrzAAyJiBbCir6/vpP7+/sr7jUYDgKrbuXVTtnPrpmzn1gVYubJoL11abXvZsnTdoSH/Xox3R0aqn2OA0dEG4LkAz8W4VPfplO1Ufy/G/+0m4+fgmZmZmdWMF3hmZmZmNeMFnpmZmVnNeIFnZmZmVjNe4JmZmZnVjBd4ZmZmZjVT2wWepCMlvaTl/JmSTpvNMZmZmZnNhNou8IAjgZdsbSczMzOzuslygSdpgaS7JH1R0jpJX5N0lKSbJN0r6VDgZODdkhqSBmd7zGZmZmYzJedPslgIvB5YAqwCTgAOB14FfAD4AtCMiE8BSHr5LI3TzMzMbEZleQSvdF9ErI2ITcAdwNUREcBaYMFUI5KWSLpN0m0bN25MM1IzMzOzGZTzAu+xltObWs5vYhuOTEbE8ohYFBGLenp6KhyemZmZ2ezIeYG3NQ8De8z2IMzMzMxmWp0XeCuA1/pFFmZmZrajyfJFFhFxP7B/y/kTJ7nsgJar3TADQzMzMzObdXU+gmdmZma2Q/ICz8zMzKxmvMAzMzMzqxkv8MzMzMxqxgs8MzMzs5pR8eEPBtDb2xvDw8OVd5vNJgBdXV07dDdlO7duynZu3ZTtDRuK7vr11XYXLmzS3Z3XXKTsjo1VP8cAAwOei3E5zkVOXcjv70Wz2WRwcHAkIha1u9xH8ABJiyUtH//FMTMzM8tZlu+DV7WIWAGs6OvrO6m/v7/yfqPRAKDqdm7dlO3cuinbuXVTtleuLLpLl1bbXbaswdBQXnORsjsyUv0cA4yONgDPBeQ5Fzl1Ib+/F+NzMRkfwTMzMzOrGS/wzMzMzGrGCzwzMzOzmvECz8zMzKxmvMAzMzMzqxkv8MzMzMxqxgs8MzMzs5pJvsCTtEDSXZIukLRG0iWS5kp6Rbn9RkmflvTtcv8zJZ3Wcv11khaUp98k6VZJDUn/R9KccnuzZf9jJZ1fnn6GpEslrSq/Xpr65zUzMzObbTN1BO8FwPKIOAB4CHgPcB6wGBgEfm9rAUn7AccBL42IfuBJ4I1budo5wNkRcQjwOuCL2/sDmJmZmeVipj7J4kcRcVN5+kLgVOC+iLgXQNKFwJKtNF4ODACrJAHsDvznVq5zFNBX7g/wNEl7RMTD4xskLRm/7Xnz5k35BzIzMzPrVDO1wIsJ57vbbBv3BL95ZHG38ruACyLib7bS363l9E7AYRHxq0kHFrEcWA7Q19c32ZjMzMzMsjFTD9E+T9Jh5enjge8Ce0vap2XbuPuBgwEkHQzsXW6/GjhW0jPLy/aUtFd52U8l7SdpJ+C1La2rgFPGz0jqr+wnMjMzM+tQM7XA+wHw55LWAHsCZ1M8LPrPkm4Eftiy76XAnpIawDuAewAi4k7gdOCqsvMdYPwx1fcD3wauAX7c0joVWFS+uONO4OQ0P56ZmZlZ55iph2g3RcTExdUVQC+ApCOB/QHKh1OPbheJiIuBi9tsvwS4pM32BylemGFmZma2w/D74JmZmZnVTPIjeBFxP+XRuS3scx1wXeqxmJmZme0IfATPzMzMrGa8wDMzMzOrGS/wzMzMzGpGEX5v33H77tsbp5wyXHl3YKD4qNyurq5Ku81mk7ExWL++2u7ChU26u6sfLxRjhjRzkVM3ZTtlN8XvG6S9j+TUTdn278Vmuc1xyra76dspu4ODgyMRsajd5T6CB0haLGn5I480Z3soZmZmZtPmI3gtnve8vvjRj+6svDs62gCgv7+/0m6j0WDlSli6tNrusmUNhoaqHy8UY4Y0c5FTN2U7ZTfF7xukvY/k1E3Z9u/FZrnNccq2u+nbKbsHHXSQj+CZmZmZ7Si8wDMzMzOrGS/wzMzMzGrGCzwzMzOzmvECz8zMzKxmvMAzMzMzq5laLfAknSnptPL0hyUdVZ5eKmnu7I7OzMzMbGbUaoHXKiLOiIjvlmeXAl7gmZmZ2Q5h59kewNZIeirwj8BzgDnAR4C/Ay4GXlbudkJErJ9wvfOBbwPPLr+ulfRgRLwMMzMzsxrL4QjeK4AHIuLAiNgfuKLc/lBEHAp8Flg22ZUj4tPAA8DL2i3uJC2RdJuk25rNjZUP3szMzGym5bDAWwscJenvJA1GxFi5/aKW74dtbzwilkfEoohY1NXVM82hmpmZmc2+jn+INiLukTQA/DHwcUlXjV/UutvMj8zMzMysM3X8ETxJzwZ+GREXAp8CDi4vOq7l+81byTwM7JFmhGZmZmadpeOP4AEvAs6StAl4HHgHcAmwq6TvUyxSj99KYznwL5J+7BdZmJmZWd11/AIvIq4ErmzdJgngcxHxoQn7ntly+sSW058BPpNynGZmZmadouMfojUzMzOzbdPxR/DaiYgFsz0GMzMzs07lI3hmZmZmNeMFnpmZmVnNKMJvITdu331745RThivvDgw0Aejq6qq022w2GRuD9eur7S5c2KS7u/rxQjFmSDMXOXVTtlN2U/y+Qdr7SE7dlG3/XmyW2xynbLubvp2yOzg4OBIRi9pdnuVz8KomaTGweP78+QwNVd8v/22T6O6m8jGnHK/lLcXvG6T7nRsrP/dmZKTa7sKFxVxYIbffC7N26vb3wgs8ICJWACv6+vpO6u/vr7zfaDQAqLqdWzdlO7duynZu3ZTtlSuL7tKl1XaXLWswNJTXXOTWTdnOrZuy7e5muf29GJ+Lyfg5eGZmZmY14wWemZmZWc14gWdmZmZWM17gmZmZmdWMF3hmZmZmNeMFnpmZmVnNeIFnZmZmVjPZLfAkzdnSeTMzM7MdXcct8CRdJmlE0h2SlpTbmpI+LOn7wGFtzp8haZWkdZKWq7CPpNUt3X0lVfz+1GZmZmadp+MWeMBbI2IAWAScKul3gacC6yLif0TEjW3OfzYiDomI/YHdgWMi4l+BMUn9ZfctwPkz/cOYmZmZzbROXOCdKul24BbgucC+wJPApS37TDz/Mknfl7QW+APgheX2LwJvKR/GPQ74+sQbk7RE0m2Sbtu4cWPlP4yZmZnZTOuoBZ6kI4GjgMMi4kBgFNgNeDQinmzZ9dfnJe0GnAscGxEvAs4rrwPFIvB/AscAIxHx84m3GRHLI2JRRCzq6elJ8nOZmZmZzaSOWuAB3cAvIuKXknqBF0/hOuOLuQcldQHHjl8QEY8CVwKfB/5v1YM1MzMz60SdtsC7AthZ0hrgIxQP025RRGykOGq3FrgMWDVhl68BAVxV5UDNzMzMOtXOsz2AVhHxGMVDqhN1Tdhv4vnTgdMnyR4OfHnCQ7xmZmZmtdVRC7yqSfoWsA/FCy/MzMzMdgi1XuBFxGtnewxmZmZmM63TnoNnZmZmZtPkBZ6ZmZlZzXiBZ2ZmZlYziojZHkPH6O3tjeHh4cq7zWYTgK6urq3sWe9uynZu3ZTt3Lop27l1U7Zz66Zsp+yOjcH69dXPxcBAfnORqus53twdHBwciYhF7S73ETxA0mJJy8f/EczMzMxyVutX0U5VRKwAVvT19Z3U399feb/RaABQdTu3bsp2bt2U7dy6Kdu5dVO2c+umbKfsjozA0qXVdgFGRxtAXnORqus5/s3uZHwEz8zMzKxmvMAzMzMzqxkv8MzMzMxqxgs8MzMzs5rxAs/MzMysZjpugSepWX5fIOmElu2LJH16O3o9kt5Z5RjNzMzMOlnHLfBaLAB+vcCLiNsi4tTt6PQAXuCZmZnZDqPyBV555O0uSV+UtE7S1yQdJekmSfdKOlTSmZJOa7nOOkkLJqQ+AQxKakh6t6QjJX273H+o3N6QNCppj3L7eyWtkrRG0odaOvuU+55V9c9rZmZm1mlSvdHxQuD1wBJgFcWRuMOBVwEfABpTaLwfOC0ijgGQdGTLZacBfxkRN0nqAh6VdDSwL3AoIOBySUeUnf0jon/aP5WZmZlZBlI9RHtfRKyNiE3AHcDVUXzo7VqKh16n6ybgHySdCvRExBPA0eXXKLAa6KVY8G2RpCWSbpN028aNGysYmpmZmdnsSrXAe6zl9KaW85sojho+MeG2d9uWeER8Ang7sDtwi6ReiqN2H4+I/vJrYUR8aQqt5RGxKCIW9fT0bMswzMzMzDrSbL3I4n7gYABJBwN7t9nnYWCPdleWtE95hPDvgNsojtZdCby1fMgWSfMlPXNLHTMzM7M6mq0F3qXAnpIawDuAe9rsswZ4QtLtkt494bKl5Qszbgd+BfxLRFwFfB24WdJa4BJgj4j4OXBTub9fZGFmZma1V/mLLCLifmD/lvMnTnLZ0ZNcv6v8/jjw8gkXX1de9q5JrnsOcE6b7Se02d3MzMysljr5ffDMzMzMbDt4gWdmZmZWM17gmZmZmdWMF3hmZmZmNeMFnpmZmVnNqPiACQPo7e2N4eHhyrvNZhOArq6uHbqbsp1bN2U7t27Kdm7dlO3cuinbKbtjY7B+ffVzMTCQ31yk6nqON3cHBwdHImJRu8tTfRZtViQtBhbPnz9/todiZmYZ6+6GoaHquxs2FN9HRqrtDgxU25sJqea4XIfVhhd4QESsAFb09fWd1N/fX3m/0WgAUHU7t27Kdm7dlO3cuinbuXVTtnPrpmzn1gVYubJoL11abXt0tOjmMhf+ffvt7mT8HDwzMzOzmvECz8zMzKxmvMAzMzMzqxkv8MzMzMxqxgs8MzMzs5rxAs/MzMysZipb4Ek6U9JpW7j8NZL6KrqtEyV9tjx9sqQ3b2HfIyW9pIrbNTMzM8vBTL4P3muAbwN3VhmNiC9sZZcjgSbwvSpv18zMzKxTTesInqQPSrpb0neBF5TbTpK0StLtki6VNLc8gvYq4CxJDUn7tNtvktt4haTV5X5Xt7n810cOJZ0q6U5JayQNS1oAnAy8u7zdwen8vGZmZmY52O4jeJIGgD8FDio7q4ER4JsRcV65z/8G3hYRn5F0OfDtiLikvGzjxP2Az0y4jWcA5wFHRMR9kvbcyrDeD+wdEY9J6omIjZK+ADQj4lOT/BxLgCUA8+bN2/aJMDMzM+sw0zmCNwh8KyJ+GREPAZeX2/eXdIOktcAbgRdOcv2p7Pdi4PqIuA8gIv5rK2NaA3xN0puAJ6byQ0TE8ohYFBGLenp6pnIVMzMzs4423RdZRJtt5wOnRMSLgA8Bu01y3d/aT9Kc8qHUhqQPA5rkNibzSuBzwAAwIsmftWtmZmY7nOks8K4HXitpd0l7AIvL7XsAP5a0C8WRuXEPl5cx2X4R8WRE9JdfZwA3A0OS9gbY0kO0knYCnhsR1wLvA3qArja3a2ZmZlZr273Ai4jVwMVAA7gUuKG86G+B7wPfAe5qucow8F5Jo5L22cJ+rbfxM4rnx31T0u3l7U1mDnBh+ZDvKHB2RGwEVlAsRP0iCzMzM9shTOshzIj4KPDRNhd9vs2+NwF9E/b5rf3aXO9fgH+ZsO18iod4iYgzWy46vM317wEO2NrtmJmZmdWFP8nCzMzMrGa8wDMzMzOrGS/wzMzMzGrGCzwzMzOzmlHEtrzNXL319vbG8PBw5d1mswlAV1fXDt1N2c6tm7KdWzdlO7duynZu3ZTt3LoAGzYU7fXrq20PDOQ1F/59+83u4ODgSEQsane53wgYkLQYWDx//vzZHoqZmWVsbAxGRqrvDgwU34eGqu2Waw+rIS/wgIhYAazo6+s7qb+/v/J+o9EAoOp2bt2U7dy6Kdu5dVO2c+umbOfWTdlO2R0ZgaVLq+0CjI42gLzmIqduynbq7mT8HDwzMzOzmvECz8zMzKxmvMAzMzMzqxkv8MzMzMxqxgs8MzMzs5rxAs/MzMysZpIt8CSdKem0VH0zMzMza89H8MzMzMxqptIFnqQPSrpb0neBF5Tb9pF0haQRSTdI6i23P0PSpZJWlV8vLbefKemrkq6RdK+kk8rt8yRdL6khaZ2kwXL70ZJulrRa0jckdZXbXyHpLkk3Svq0pG9X+bOamZmZdarKPslC0gDwp8BBZXc1MAIsB06OiHsl/Q/gXOAPgHOAsyPiRknPA64E9itzBwAvBp4KjEr6Z+B44MqI+KikOcBcSU8HTgeOiohHJP018B5JnwTOK29nPXBxVT+nmZmZWaer8qPKBoFvRcQvASRdDuwGvAT4hqTx/XYtvx8F9LVsf5qkPcrT/xQRvwJ+Jela4FBgFfBlSbsAl0VEQ9IQ0AfcVHaeAtwM9AL3RcS95VguBJa0G7SkJeOXzZs3b9qTYGZmZjbbqv4s2phwfidgY0T0t9l3J+CwciH3a+VCbWInIuJ6SUcArwS+Kuks4BfAdyLi+AmN/jaN9gOOWE5xlJG+vr4pXcfMzMysk1X5HLzrgddK2r08ErcY+CVwn6TXA6hwYLn/VcAp41cuF2XjXi1pN0m/CxwJrJK0F/CfEXEe8CXgYOAW4KWSFpaNuZKeD9wF7C1pn7L3GwtAMzMzszqrbIEXEaspnuvWAC4FbigveiPwNkm3A3cAry63nwoskrRG0p3AyS25W4F/pljAfSQiHqBY6DUkjQKvA86JiJ8BJwIXSVpT7t8bEY9SPOz6z5JuBH5Y1c9pZmZm1ukqfYg2Ij4KfLTNRa9os++DwHGTpO6JiCUT9r8AuKBN5xrgkDbbr6B4Lh6SjgT23/LozczMzOrB74NnZmZmVjNVv8hi2iLizATN64Drqu6amZmZdSIfwTMzMzOrGS/wzMzMzGrGCzwzMzOzmlGE39t3XG9vbwwPD1febTabAHR1de3Q3ZTt3Lop27l1U7Zz66Zs59ZN2U7ZHRuD9eurn4uBgfzmIqduynbK7uDg4EhELGp3uY/gAZIWS1o+/o9gZmZmlrOOexXtbIiIFcCKvr6+k/r7+yvvNxoNAKpu59ZN2c6tm7KdWzdlO7duynZu3ZTtlN2REVi6tNouwOhoA8hrLnLqpmyn7k7GR/DMzMzMasYLPDMzM7Oa8QLPzMzMrGa8wDMzMzOrGS/wzMzMzGom2wWepBMlfbY8faak07ay/1b3MTMzM6uDjl7gSfLbuJiZmZlto+QLPEkLJN0l6QJJayRdImmupDMkrZK0TtJySSr3v07SxyStBP6qfBPi70salfRdSc/ayu3tI+kKSSOSbpDUm/pnNDMzM+skM3UE7wXA8og4AHgIeCfw2Yg4JCL2B3YHjmnZvycihiLi74EbgRdHxEHAMPC+rdzWcuBdETEAnAacW/HPYmZmZtbRZuoh0B9FxE3l6QuBU4H7JL0PmAvsCdwBrCj3ubjlus8BLpY0D3gKcN9kNyKpC3gJ8I3ygCDArlsamKQlwBKAefPmbcOPZGZmZtaZZuoIXrQ5fy5wbES8CDgP2K3l8kdaTn+G4mjfi4C/mLDfRDsBGyOiv+Vrvy0OLGJ5RCyKiEU9PT1T/HHMzMzMOtdMLfCeJ+mw8vTxFA+7AjxYHnU7dgvX7QY2lKf/fEs3EhEPURwZfD2ACgdu/7DNzMzM8jNTC7wfAH8uaQ3Fw7Gfpzhqtxa4DFi1heueSfGQ6w3Ag1O4rTcCb5N0O8XDvq/e/mGbmZmZ5WemnoO3KSJOnrDt9PLrN0TEkRPO/xPwT232Ox84vzx9Zsv2+4BXtNn/zInbzMzMzOqoo98Hz8zMzMy2XfIjeBFxP7B/6tsxMzMzs4KP4JmZmZnVjBd4ZmZmZjXjBZ6ZmZlZzShi4nsQ77h6e3tjeHi48m6z2QSgq6trh+6mbOfWTdnOrZuynVs3ZTu3bsp2yu7YGKxfX/1cDAzkNxc5dVO2U3YHBwdHImJRu8tn6m1SOpqkxcDi+fPnz/ZQrAONjcHISPXdgYHqm2Y2u7q7YWio+m65RjCbMi/wgIhYAazo6+s7qb+/v/J+o9EAoOp2bt2U7ZTdkRFYurTaLsDoaAPIay5SdFO2c+umbOfWTdnOrZuy7W76duruZPwcPDMzM7Oa8QLPzMzMrGa8wDMzMzOrGS/wzMzMzGrGCzwzMzOzmvECz8zMzKxmOmqBJ+nDko6a7XGYmZmZ5Wyb3wdPkig+AWNT1YOJiDOqbraSNCcinkx5G2ZmZmazbUpH8CQtkPQDSecCq4EvSVonaa2k48p95km6XlKjvGyw3H60pJslrZb0DUldkhaV+zXKRpT7ni/p2PL0/ZL+TtKt5dfCln2+IOkGSfdIOqbcPkfSWZJWSVoj6S/K7UdKulbS14G1Fc+fmZmZWcfZliN4LwDeAlwNnAwcCDwdWCXpeuAE4MqI+KikOcBcSU8HTgeOiohHJP018J6I+DDQDyDpLOCKSW7zoYg4VNKbgWXAMeX2BcAQsA9wbbn4ezMwFhGHSNoVuEnSVeX+hwL7R8R9E29A0hJgCcC8efO2YTrMzMzMOtO2LPB+GBG3SDobuKh8qPOnklYChwCrgC9L2gW4LCIakoaAPorFFsBTgJvHg5LeABwMHD3JbV7U8v3slu3/WD5EfK+kfwN6y8YB40cAgW5gX+C/gVvbLe4AImI5sBygr68vpj4dZmZmZp1pWxZ4j5Tf1e7CiLhe0hHAK4GvlkfmfgF8JyKOn7i/pBcCHwKO2MLz4mIKp8fPC3hXRFw54XaObBm7mZmZWe1tz6torweOK5/z9gzgCOBWSXsB/xkR5wFfojgydwvw0pbnz82V9HxJ3cAw8OaI+NkWbuu4lu83t2x/vaSdJO0D/D5wN3Al8I7yCCLl7Tx1O34+MzMzs6xt86togW8BhwG3Uxw5e19E/ETSnwPvlfQ40KRcvEk6EbiofF4cFM/JOwzYCzivfOiWiOhvc1u7Svo+xUK09Sjg3cBK4FnAyRHxqKQvUjw3b3X5St+fAa/Zjp/PzMzMLGtTWuBFxP3A/uXpAN5bfrXucwFwQZvrXkPxHL2J2u174oRNn4uID7W57k0R8e4J190EfKD8anVd+WVmZma2Q+ioNzo2MzMzs+nbnodoZ0RELJhk+4kzOxIzMzOzvPgInpmZmVnNeIFnZmZmVjMqXjNhAL29vTE8PFx5t9lsAtDV1bVDd1O2U3bHxmD9+urnYmAgv7lI0U3Zzq2bsp1bN2U7t27Ktrvp2ym7g4ODIxGxqN3lXuABkhYDi4E3Aj/Yhqs+HXhwivt2A2M17aZs59ZN2a5zN2U7t27Kdm7dlO3cuinbde6mbHdCd9+I6G57SUT4q/wClm/j/relaOfWzXHMnovO6uY4Zs+F58Jz0fndHMdcVdfPwftNKzJs59ZN2c6tm7KdWzdlO7duynZu3ZTt3Lop2+6mb8941wu8FhGR7JcmVTu3bsp2bt2U7dy6Kdu5dVO2c+umbOfWTdl2N317Nrpe4E3PcneTt3Prpmy7m76dWzdlO7duynZu3ZTt3Lop2x3d9YsszMzMzGrGR/DMzMzMasYLPDMzM7Oa8QLPzMzMrGa8wDMzMzOrGS/wpknSGRU0/kjS2yQtmLD9rdNoStIbJL2+PP1ySZ+W9E5Jlf67S7qmos7TJ5x/UznmJZI0je5rJe1Znn6GpK9IWivpYknPmUb3HyS9dHuvv4XunpLOkPT28t/ug5K+LeksSb9TQf9lkj4r6Z8kXSrpE5IWVtD9I0mfl3R52f68pFdMt7uF2/N9z/e9yqW8/9Xlvlfe5rTuf7nf98rbm/b9L9V9D/wq2mmT9O8R8bxpXP9jwOHAaoqPS1sWEZ8pL1sdEQdvZ/dc4JnAU4CHgF0p3hDxj4GfRsRfbWd3zcRNwPOBuwEi4oDt6ZbtX/+8kk4HBoGvA8cA/xER797O7p0R0Veevhi4BfgGcBTwxoj4w+3s/gz4IfAM4GLgoogY3Z7WhO7/A9YCTwP2K0//I/CHwIER8epptD8BPAu4GngNcB9wD/BO4GMR8Y3t7C6j+D34CvAf5ebnAG8G7t3e37et3Kbve77vVXrfK9tJ7n91uu+Vt7vd97/c7ntlO8n9L9V9j3JQ/tr6R4E8NMnXw8AT02yvBXYuT/cA/w84uzw/Op1u+X0X4OfAU8rzO49ftp3dy4ELgV5gL2AB8KPy9F7TnIvRltOrgae2/AzTGfPdLadHJlzWmO54gX2BvwXuAO4C/hfw/Gl0G+V3ARuqGm/r70XL78JN5enfAdZNo3vPJNtF8R+Z7e36vre56/vehPFWfd9rHVfV97/c7ntlI8n9L7f7XtlIcv9Ldd+L8EeVTdVGig/0fdqErz2AH0+zvXNEPAEQERsp/m/maZK+QfF/IdtrvPk4sCoi/rs8/wTw5PZGI+JVwKUUb8R4YETcDzweET+MiB9OY7wAu0s6SNIAMCciHmn5GbZ7zMB1kj4saffy9GugeLiEbfvA6omiHN+9EfGRiHgh8AZgN4o/WNtrp/KhoOcCXeMPYUj6Xab3OwGwafwhM+DZwByAiPgFxX8Qttejkg5ts/0Q4NFpdDfi+x7l9X3f2yzVfQ/S3f9yu+9BuvtfVve9spHq/pfqvsfO07nyDuQrFKv0n7a57OvTbP+rpKGIWAkQEU8Cb5P0v4HXTaP7E0ldEdGMiF8/F0PS7wH/PZ0BR8S3JF0FfETS25n+omPcj4F/KE//l6R5EfHj8g/rE9PongJ8kPJQOvBuSY9QHLr/s2l0f+uPckSsAdYAfzON7scpjkYAvBX4oqQA+oAPTaML8DFgVNLdFP8n+g4onh8F3D6N7onA5yXtweaHiZ5L8X/7J06j6/teC9/3fi3VfQ/S3f9yu+9Buvtfdve9cpwp7n+p7nt+Dt5sK//Ploj4VZvL5kfEhopv76kUh4D/s6LegcBhEfGFKnqT3MYcYNeI+GUFrW6K/3v8eQWtrohoTrczSXsOxf3zCUk7A/0UDxdN96gV5VGE3wfWl//3XJnyD+l8iv8A/0dE/KTKfpV835vSbexw972yn+T+5/teIff7XtlMev+r4r7nBd4Ula9mOZTiDhTAA8CtUcEEpmrn1k3Zdndm2pPcXm9E3LX1PTujm7KdWzdlO7duynYVXUm7lA/rtW57ekQ8OL3RpWvn1k3ZTtH1Am8KJB0NnAvcC4z/n8VzgIXAOyPiqk5r59bNccy5dVO3t3Cb03q160x3U7Zz66Zs59ZN2Z5OV8XzGb9K8YrRUWBJ+fywab0iNWU7t26uY/Zz8KbmHOCo8UkfJ2lviif07teB7dy6KdvuJm5L+vRkF1G8Sm67pOqmbOfWTdnOrZuynXDMnwT+KCLukHQs8B1JfxYRt9DmuYod0s6tm+WYvcCbmp3Z/OTVVhsoXsrcie3cuinb7qZvvwX4/4DH2lx2fAd2U7Zz66Zs59ZN2U7VfUpE3AEQEZdI+gHwTUnvp3y1cQe2c+tmOWYv8Kbmy8AqScMU73sDxauU/rS8rBPbuXVTtt1N315F8V5e35t4gaQzO7Cbsp1bN2U7t27Kdqru45J+b/xFFeWRoJcD3wb2mUY3ZTu3bpZj9nPwpkjSfsCraXmVEnB5RNzZqe3cuinb7qZtq3h14KNRwastZ6Kbsp1bN2U7t27KdsLuUcDPIuL2Cdu7gVMi4qOd1s6tm+uYt/sdknfEL+CvprKtk9q5dXMcc27dHMfsufBceC48F7PdzW3M0/5hd6QvYHWbbaOd3M6tm+OYc+vmOGbPhefCc+G5mO1ubmP2c/CmQNLxwAnA3pIub7loD4rPu+u4dm7dlG1307dz66Zs59ZN2c6tm7KdWzdlO7duynbKMXuBNzXfo/g4kacDf9+y/WGKj8bpxHZu3ZRtd9O3c+umbOfWTdnOrZuynVs3ZTu3bsp2sjH7RRZmZmZmNbPTbA8gJ5L+RNK9ksYkPSTpYUkPdXI7t26OY86tm+OYPRfpuzmO2XORvpvjmD0XpSqedLijfAHrgf1yaufWzXHMuXVzHLPnwnPhufBczHY3tzH7CN62+WlE/CCzdm7dlG1307dz66Zs59ZN2c6tm7KdWzdlO7duynblXT8HbxtIOgf4PeAyWj5uJiK+2ant3Lop2+6mb+fWTdnOrZuynVs3ZTu3bsp2bt2U7RRdv4p22zwN+CVwdMu2AKb9S5OwnVs3Zdvd9O3cuinbuXVTtnPrpmzn1k3Zzq2bsl1510fwzMzMzGrGz8HbBpKeL+lqSevK8wdIOr2T27l1U7bdTd/OrZuynVs3ZTu3bsp2bt2U7dy6KdtJuileZVLXL2AlcCgtHx8CrOvkdm7dHMecWzfHMXsuPBeeC8/FbHdzG7OP4G2buRFx64RtT3R4O7duyra76du5dVO2c+umbOfWTdnOrZuynVs3Zbvyrhd42+ZBSftQPPERScdSfMRIJ7dz66Zsu5u+nVs3ZTu3bsp2bt2U7dy6Kdu5dVO2q+9WcchyR/kCfh/4LsUrXTYANwJ7dXI7t26OY86tm+OYPReeC8+F52K2u7mN2a+i3QaS5kTEk5KeCuwUEQ93eju3bsq2u+nbuXVTtnPrpmzn1k3Zzq2bsp1bN2U7RdcP0W6b+yQtB14MNDNp59ZN2XY3fTu3bsp2bt2U7dy6Kdu5dVO2c+umbFfe9QJv27yA4hDqX1L8Y3xW0uEd3s6tm7Ltbvp2bt2U7dy6Kdu5dVO2c+umbOfWTdmuvlvFY9I74hfwO8BXgCdzaefWzXHMuXVzHLPnwnPhufBczHY3hzH7CN42kjQk6VxgNbAb8IZOb+fWTdl2N307t27Kdm7dlO3cuinbuXVTtnPrpmxX3fWLLLaBpPuABvCPwOUR8Uint3Prpmy7m76dWzdlO7duynZu3ZTt3Lop27l1U7ZTdL3A2waSnhYRD+XUzq2bsu1u+nZu3ZTt3Lop27l1U7Zz66Zs59ZN2U7R9QJvCiR9hvLNB9uJiFM7rZ1bN2Xb3fTt3Lop27l1U7Zz66Zs59ZN2c6tm7Kdcsx+Dt7U3AaMUDwmfjBwb/nVDzzZoe3cuinb7qZv59ZN2c6tm7KdWzdlO7duynZu3ZTtdGOu8pUfdf8CrgV2aTm/C3BtJ7dz6+Y45ty6OY7Zc+G58Fx4Lma7m9uYfQRv2zwb2KPlfFe5rZPbuXVTtt1N386tm7KdWzdlO7duynZu3ZTt3Lop25V3d57WcHY8nwBGJV1bnh8Czuzwdm7dlG1307dz66Zs59ZN2c6tm7KdWzdlO7duynblXb/IYhtJejbwZ8APgLnAAxFxfSe3c+umbLubvp1bN2U7t27Kdm7dlO3cuinbuXVTtivvVvGY9I7yBbwdWAv8guLx8l8B13RyO7dujmPOrZvjmD0XngvPheditru5jXnaP+yO9FVO/m5AozzfC1zcye3cujmOObdujmP2XHguPBeei9nu5jZmv8hi2zwaEY8CSNo1Iu6i+IDgTm7n1k3Zdjd9O7duynZu3ZTt3Lop27l1U7Zz66ZsV971iyy2zX9I6gEuA74j6RfAAx3ezq2bsu1u+nZu3ZTt3Lop27l1U7Zz66Zs59ZN2a686xdZbCdJQ0A3cEVE/HcO7dy6Kdvupm/n1k3Zzq2bsp1bN2U7t27Kdm7dlO2qul7gmZmZmdWMn4NnZmZmVjNe4JmZmZnVjBd4ZmZmZjXjBZ6ZmZlZzXiBZ2ZmZlYz/z+JLxHaQtsYmAAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cmap = mpl.colors.ListedColormap(['white', 'blue'])\n",
"\n",
"fig, ax = plt.subplots(figsize=(10, 10))\n",
"ax.imshow(modules_sorted_cols.to_numpy().T, cmap=cmap)\n",
"plt.xticks(range(modules_sorted_cols.index.size), labels=modules_sorted_cols.index.values, rotation=90);\n",
"plt.yticks(range(modules_sorted_cols.columns.size), labels=modules_sorted_cols.columns.values);\n",
"\n",
"ax.xaxis.set_minor_locator(mpl.ticker.MultipleLocator(0.5))\n",
"ax.yaxis.set_minor_locator(mpl.ticker.MultipleLocator(0.5))\n",
"ax.grid(which='minor', axis='both', linestyle='-', color='silver', linewidth=1.5);\n",
"plt.savefig('packages_sorted.png');"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "d79246cc-4471-43ac-ba76-d720acbb7435",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['../advent01/Main.hs',\n",
" '../advent02/Main.hs',\n",
" '../advent03/Main.hs',\n",
" '../advent04/Main.hs',\n",
" '../advent05/Main.hs',\n",
" '../advent06/Main.hs',\n",
" '../advent07/Main.hs',\n",
" '../advent08/Main.hs',\n",
" '../advent09/Main.hs',\n",
" '../advent10/Main.hs',\n",
" '../advent11/Main.hs',\n",
" '../advent12/Main.hs',\n",
" '../advent13/Main.hs',\n",
" '../advent14/Main.hs',\n",
" '../advent15/Main.hs',\n",
" '../advent16/Main.hs',\n",
" '../advent17/Main.hs',\n",
" '../advent18/Main.hs',\n",
" '../advent19/Main.hs',\n",
" '../advent20/Main.hs',\n",
" '../advent21/Main.hs',\n",
" '../advent22/Main.hs',\n",
" '../advent23/Main.hs',\n",
" '../advent24/Main.hs',\n",
" '../advent25/Main.hs']"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mains = list(sorted(f for f in glob.glob('../advent*/Main.hs')))\n",
"mains"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "f9076c9f-fc86-435b-9471-99726bfbfb87",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'advent01': [('AoC', False),\n",
" ('Data.List', False),\n",
" ('Data.List.Split', False),\n",
" ('Data.Ord', False)],\n",
" 'advent02': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False)],\n",
" 'advent03': [('AoC', False),\n",
" ('Data.Char', False),\n",
" ('Data.Set', True),\n",
" ('Data.List', False),\n",
" ('Data.List.Split', False)],\n",
" 'advent04': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False)],\n",
" 'advent05': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.List', False),\n",
" ('Data.Maybe', False),\n",
" ('Data.IntMap.Strict', True),\n",
" ('Data.IntMap.Strict', False)],\n",
" 'advent06': [('AoC', False), ('Data.List', False)],\n",
" 'advent07': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.Char', False),\n",
" ('Data.Maybe', False),\n",
" ('Data.Tree', False),\n",
" ('Data.Tree.Zipper', False),\n",
" ('Data.Map.Strict', True),\n",
" ('Data.List', False)],\n",
" 'advent08': [('AoC', False), ('Data.List', False)],\n",
" 'advent09': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.List', False),\n",
" ('Data.Set', True),\n",
" ('Linear', False),\n",
" ('Control.Lens', False)],\n",
" 'advent10': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.List', False),\n",
" ('Data.List.Split', False)],\n",
" 'advent11': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.List', False),\n",
" ('Data.IntMap.Strict', True),\n",
" ('Data.IntMap', False),\n",
" ('Control.Lens', False),\n",
" ('Control.Monad.State.Strict', False),\n",
" ('Control.Monad.Reader', False),\n",
" ('Control.Monad.Writer', False),\n",
" ('Control.Monad.RWS.Strict', False)],\n",
" 'advent12': [('AoC', False),\n",
" ('Data.PQueue.Prio.Min', True),\n",
" ('Data.Set', True),\n",
" ('Data.Sequence', True),\n",
" ('Data.Sequence', False),\n",
" ('Data.Foldable', False),\n",
" ('Data.Char', False),\n",
" ('Control.Monad.Reader', False),\n",
" ('Control.Lens', False),\n",
" ('Linear', False),\n",
" ('Data.Array.IArray', False)],\n",
" 'advent13': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.List', False)],\n",
" 'advent14': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Data.List', False),\n",
" ('Data.Ix', False),\n",
" ('Data.Maybe', False),\n",
" ('Data.Set', True),\n",
" ('Linear', False),\n",
" ('Control.Lens', False)],\n",
" 'advent15': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Data.Ix', False),\n",
" ('Data.Set', True),\n",
" ('Linear', False)],\n",
" 'advent16': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.PQueue.Prio.Max', True),\n",
" ('Data.Set', True),\n",
" ('Data.Sequence', True),\n",
" ('Data.Map.Strict', True),\n",
" ('Data.Map.Strict', False),\n",
" ('Data.Sequence', False),\n",
" ('Data.List', False),\n",
" ('Data.List.Split', False),\n",
" ('Data.Ord', False),\n",
" ('Control.Monad.Reader', False),\n",
" ('Control.Lens', False)],\n",
" 'advent17': [('AoC', False),\n",
" ('Data.Set', True),\n",
" ('Linear', False),\n",
" ('Control.Lens', False),\n",
" ('Data.Maybe', False)],\n",
" 'advent18': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Data.Set', True),\n",
" ('Linear', False),\n",
" ('Control.Lens', False),\n",
" ('Data.Ix', False),\n",
" ('Data.Maybe', False)],\n",
" 'advent19': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.PQueue.Prio.Max', True),\n",
" ('Data.Set', True),\n",
" ('Data.Sequence', True),\n",
" ('Data.Map.Strict', True),\n",
" ('Data.Map.Strict', False),\n",
" ('Data.MultiSet', False),\n",
" ('Data.Sequence', False),\n",
" ('Data.List', False),\n",
" ('Data.Maybe', False),\n",
" ('Control.Monad.Reader', False),\n",
" ('Control.Lens', False),\n",
" ('GHC.Generics', False),\n",
" ('Control.Parallel.Strategies', False),\n",
" ('Control.DeepSeq', False)],\n",
" 'advent20': [('AoC', False),\n",
" ('Data.List', False),\n",
" ('Data.Maybe', False),\n",
" ('Data.CircularList', False),\n",
" ('Control.Lens', False)],\n",
" 'advent21': [('AoC', False),\n",
" ('Data.Text', False),\n",
" ('Data.Text.IO', True),\n",
" ('Data.Attoparsec.Text', False),\n",
" ('Control.Applicative', False),\n",
" ('Data.Map.Strict', True),\n",
" ('Data.Map.Strict', False),\n",
" ('Control.Lens', False)],\n",
" 'advent22': [('AoC', False),\n",
" ('Prelude', False),\n",
" ('Data.Map.Strict', True),\n",
" ('Data.Map.Strict', False),\n",
" ('Linear', False),\n",
" ('Control.Lens', False),\n",
" ('Data.Ix', False),\n",
" ('Data.Maybe', False),\n",
" ('Data.Char', False),\n",
" ('Control.Monad.Reader', False)],\n",
" 'advent23': [('AoC', False),\n",
" ('Data.Set', True),\n",
" ('Linear', False),\n",
" ('Control.Lens', False),\n",
" ('Data.Ix', False),\n",
" ('Data.Maybe', False),\n",
" ('Data.Monoid', False),\n",
" ('Data.MultiSet', False),\n",
" ('Control.Monad.State.Strict', False)],\n",
" 'advent24': [('AoC', False),\n",
" ('Data.PQueue.Prio.Min', True),\n",
" ('Data.Set', True),\n",
" ('Data.IntMap.Strict', True),\n",
" ('Data.Sequence', True),\n",
" ('Data.Sequence', False),\n",
" ('Control.Monad.Reader', False),\n",
" ('Control.Lens', False),\n",
" ('Linear', False),\n",
" ('Data.Array.IArray', False),\n",
" ('Data.List', False),\n",
" ('Data.Maybe', False)],\n",
" 'advent25': [('AoC', False), ('Data.List', False)]}"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"main_imports = {}\n",
"\n",
"for m in mains:\n",
" with open(m) as f:\n",
" lines = f.readlines()\n",
" import_lines = [l for l in lines if l.strip().startswith('import') if 'Debug.Trace' not in l]\n",
" imports = []\n",
" for i in import_lines:\n",
" words = i.strip().split()\n",
" if 'qualified' in i:\n",
" imports.append((words[2], True))\n",
" else:\n",
" imports.append((words[1], False))\n",
" main_imports[m.split('/')[1]] = imports\n",
"\n",
"main_imports"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "3260db91-68df-47d3-b4c3-8745ea974033",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(('AoC', False), 25),\n",
" (('Data.List', False), 16),\n",
" (('Data.Text', False), 14),\n",
" (('Data.Text.IO', True), 14),\n",
" (('Data.Attoparsec.Text', False), 14),\n",
" (('Control.Lens', False), 13),\n",
" (('Data.Set', True), 11),\n",
" (('Control.Applicative', False), 10),\n",
" (('Data.Maybe', False), 10),\n",
" (('Linear', False), 9),\n",
" (('Control.Monad.Reader', False), 6),\n",
" (('Data.Map.Strict', True), 5),\n",
" (('Data.Ix', False), 5),\n",
" (('Data.List.Split', False), 4),\n",
" (('Data.Char', False), 4),\n",
" (('Data.Sequence', True), 4),\n",
" (('Data.Sequence', False), 4),\n",
" (('Data.Map.Strict', False), 4),\n",
" (('Data.IntMap.Strict', True), 3),\n",
" (('Data.Ord', False), 2),\n",
" (('Control.Monad.State.Strict', False), 2),\n",
" (('Data.PQueue.Prio.Min', True), 2),\n",
" (('Data.Array.IArray', False), 2),\n",
" (('Data.PQueue.Prio.Max', True), 2),\n",
" (('Data.MultiSet', False), 2),\n",
" (('Data.IntMap.Strict', False), 1),\n",
" (('Data.Tree', False), 1),\n",
" (('Data.Tree.Zipper', False), 1),\n",
" (('Data.IntMap', False), 1),\n",
" (('Control.Monad.Writer', False), 1),\n",
" (('Control.Monad.RWS.Strict', False), 1),\n",
" (('Data.Foldable', False), 1),\n",
" (('GHC.Generics', False), 1),\n",
" (('Control.Parallel.Strategies', False), 1),\n",
" (('Control.DeepSeq', False), 1),\n",
" (('Data.CircularList', False), 1),\n",
" (('Prelude', False), 1),\n",
" (('Data.Monoid', False), 1)]"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import_counts = collections.Counter(l for ls in main_imports.values() for l in ls)\n",
"import_counts.most_common()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "3f683faa-4d1d-4269-a66e-0ea848804e03",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'advent01': {'AoC', 'Data.List', 'Data.List.Split', 'Data.Ord'},\n",
" 'advent02': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.Text',\n",
" 'Data.Text.IO'},\n",
" 'advent03': {'AoC', 'Data.Char', 'Data.List', 'Data.List.Split', 'Data.Set'},\n",
" 'advent04': {'AoC', 'Data.Attoparsec.Text', 'Data.Text', 'Data.Text.IO'},\n",
" 'advent05': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.IntMap.Strict',\n",
" 'Data.List',\n",
" 'Data.Maybe',\n",
" 'Data.Text',\n",
" 'Data.Text.IO'},\n",
" 'advent06': {'AoC', 'Data.List'},\n",
" 'advent07': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.Char',\n",
" 'Data.List',\n",
" 'Data.Map.Strict',\n",
" 'Data.Maybe',\n",
" 'Data.Text',\n",
" 'Data.Text.IO',\n",
" 'Data.Tree',\n",
" 'Data.Tree.Zipper'},\n",
" 'advent08': {'AoC', 'Data.List'},\n",
" 'advent09': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Control.Lens',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.List',\n",
" 'Data.Set',\n",
" 'Data.Text',\n",
" 'Data.Text.IO',\n",
" 'Linear'},\n",
" 'advent10': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.List',\n",
" 'Data.List.Split',\n",
" 'Data.Text',\n",
" 'Data.Text.IO'},\n",
" 'advent11': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Control.Lens',\n",
" 'Control.Monad.RWS.Strict',\n",
" 'Control.Monad.Reader',\n",
" 'Control.Monad.State.Strict',\n",
" 'Control.Monad.Writer',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.IntMap',\n",
" 'Data.IntMap.Strict',\n",
" 'Data.List',\n",
" 'Data.Text',\n",
" 'Data.Text.IO'},\n",
" 'advent12': {'AoC',\n",
" 'Control.Lens',\n",
" 'Control.Monad.Reader',\n",
" 'Data.Array.IArray',\n",
" 'Data.Char',\n",
" 'Data.Foldable',\n",
" 'Data.PQueue.Prio.Min',\n",
" 'Data.Sequence',\n",
" 'Data.Set',\n",
" 'Linear'},\n",
" 'advent13': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.List',\n",
" 'Data.Text',\n",
" 'Data.Text.IO'},\n",
" 'advent14': {'AoC',\n",
" 'Control.Lens',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.Ix',\n",
" 'Data.List',\n",
" 'Data.Maybe',\n",
" 'Data.Set',\n",
" 'Data.Text',\n",
" 'Data.Text.IO',\n",
" 'Linear'},\n",
" 'advent15': {'AoC',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.Ix',\n",
" 'Data.Set',\n",
" 'Data.Text',\n",
" 'Data.Text.IO',\n",
" 'Linear'},\n",
" 'advent16': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Control.Lens',\n",
" 'Control.Monad.Reader',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.List',\n",
" 'Data.List.Split',\n",
" 'Data.Map.Strict',\n",
" 'Data.Ord',\n",
" 'Data.PQueue.Prio.Max',\n",
" 'Data.Sequence',\n",
" 'Data.Set',\n",
" 'Data.Text',\n",
" 'Data.Text.IO'},\n",
" 'advent17': {'AoC', 'Control.Lens', 'Data.Maybe', 'Data.Set', 'Linear'},\n",
" 'advent18': {'AoC',\n",
" 'Control.Lens',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.Ix',\n",
" 'Data.Maybe',\n",
" 'Data.Set',\n",
" 'Data.Text',\n",
" 'Data.Text.IO',\n",
" 'Linear'},\n",
" 'advent19': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Control.DeepSeq',\n",
" 'Control.Lens',\n",
" 'Control.Monad.Reader',\n",
" 'Control.Parallel.Strategies',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.List',\n",
" 'Data.Map.Strict',\n",
" 'Data.Maybe',\n",
" 'Data.MultiSet',\n",
" 'Data.PQueue.Prio.Max',\n",
" 'Data.Sequence',\n",
" 'Data.Set',\n",
" 'Data.Text',\n",
" 'Data.Text.IO',\n",
" 'GHC.Generics'},\n",
" 'advent20': {'AoC',\n",
" 'Control.Lens',\n",
" 'Data.CircularList',\n",
" 'Data.List',\n",
" 'Data.Maybe'},\n",
" 'advent21': {'AoC',\n",
" 'Control.Applicative',\n",
" 'Control.Lens',\n",
" 'Data.Attoparsec.Text',\n",
" 'Data.Map.Strict',\n",
" 'Data.Text',\n",
" 'Data.Text.IO'},\n",
" 'advent22': {'AoC',\n",
" 'Control.Lens',\n",
" 'Control.Monad.Reader',\n",
" 'Data.Char',\n",
" 'Data.Ix',\n",
" 'Data.Map.Strict',\n",
" 'Data.Maybe',\n",
" 'Linear',\n",
" 'Prelude'},\n",
" 'advent23': {'AoC',\n",
" 'Control.Lens',\n",
" 'Control.Monad.State.Strict',\n",
" 'Data.Ix',\n",
" 'Data.Maybe',\n",
" 'Data.Monoid',\n",
" 'Data.MultiSet',\n",
" 'Data.Set',\n",
" 'Linear'},\n",
" 'advent24': {'AoC',\n",
" 'Control.Lens',\n",
" 'Control.Monad.Reader',\n",
" 'Data.Array.IArray',\n",
" 'Data.IntMap.Strict',\n",
" 'Data.List',\n",
" 'Data.Maybe',\n",
" 'Data.PQueue.Prio.Min',\n",
" 'Data.Sequence',\n",
" 'Data.Set',\n",
" 'Linear'},\n",
" 'advent25': {'AoC', 'Data.List'}}"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"main_imports_unqualified = {m: set(i[0] for i in main_imports[m]) for m in main_imports}\n",
"main_imports_unqualified"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "e5ff5780-e511-41ab-9207-0cc6bdaecb64",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('AoC', 25),\n",
" ('Data.List', 16),\n",
" ('Data.Text', 14),\n",
" ('Data.Attoparsec.Text', 14),\n",
" ('Data.Text.IO', 14),\n",
" ('Control.Lens', 13),\n",
" ('Data.Set', 11),\n",
" ('Control.Applicative', 10),\n",
" ('Data.Maybe', 10),\n",
" ('Linear', 9),\n",
" ('Control.Monad.Reader', 6),\n",
" ('Data.Map.Strict', 5),\n",
" ('Data.Ix', 5),\n",
" ('Data.List.Split', 4),\n",
" ('Data.Char', 4),\n",
" ('Data.Sequence', 4),\n",
" ('Data.IntMap.Strict', 3),\n",
" ('Data.Ord', 2),\n",
" ('Control.Monad.State.Strict', 2),\n",
" ('Data.PQueue.Prio.Min', 2),\n",
" ('Data.Array.IArray', 2),\n",
" ('Data.PQueue.Prio.Max', 2),\n",
" ('Data.MultiSet', 2),\n",
" ('Data.Tree', 1),\n",
" ('Data.Tree.Zipper', 1),\n",
" ('Control.Monad.Writer', 1),\n",
" ('Control.Monad.RWS.Strict', 1),\n",
" ('Data.IntMap', 1),\n",
" ('Data.Foldable', 1),\n",
" ('Control.DeepSeq', 1),\n",
" ('GHC.Generics', 1),\n",
" ('Control.Parallel.Strategies', 1),\n",
" ('Data.CircularList', 1),\n",
" ('Prelude', 1),\n",
" ('Data.Monoid', 1)]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import_counts_unqualified = collections.Counter(l for ls in main_imports_unqualified.values() for l in ls)\n",
"import_counts_unqualified.most_common()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "e0580f26-9f6d-49f9-83ff-92dbd190aad6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" AoC | \n",
" Control.Applicative | \n",
" Control.DeepSeq | \n",
" Control.Lens | \n",
" Control.Monad.RWS.Strict | \n",
" Control.Monad.Reader | \n",
" Control.Monad.State.Strict | \n",
" Control.Monad.Writer | \n",
" Control.Parallel.Strategies | \n",
" Data.Array.IArray | \n",
" ... | \n",
" Data.PQueue.Prio.Min | \n",
" Data.Sequence | \n",
" Data.Set | \n",
" Data.Text | \n",
" Data.Text.IO | \n",
" Data.Tree | \n",
" Data.Tree.Zipper | \n",
" GHC.Generics | \n",
" Linear | \n",
" Prelude | \n",
"
\n",
" \n",
" \n",
" \n",
" advent01 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent02 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent03 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent04 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent05 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent06 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent07 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent08 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent09 | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent10 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent11 | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent12 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" ... | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent13 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent14 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent15 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent16 | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent17 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent18 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent19 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent20 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent21 | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent22 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
"
\n",
" \n",
" advent23 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent24 | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" ... | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent25 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
"
\n",
"
25 rows × 35 columns
\n",
"
"
],
"text/plain": [
" AoC Control.Applicative Control.DeepSeq Control.Lens \\\n",
"advent01 True False False False \n",
"advent02 True True False False \n",
"advent03 True False False False \n",
"advent04 True False False False \n",
"advent05 True True False False \n",
"advent06 True False False False \n",
"advent07 True True False False \n",
"advent08 True False False False \n",
"advent09 True True False True \n",
"advent10 True True False False \n",
"advent11 True True False True \n",
"advent12 True False False True \n",
"advent13 True True False False \n",
"advent14 True False False True \n",
"advent15 True False False False \n",
"advent16 True True False True \n",
"advent17 True False False True \n",
"advent18 True False False True \n",
"advent19 True True True True \n",
"advent20 True False False True \n",
"advent21 True True False True \n",
"advent22 True False False True \n",
"advent23 True False False True \n",
"advent24 True False False True \n",
"advent25 True False False False \n",
"\n",
" Control.Monad.RWS.Strict Control.Monad.Reader \\\n",
"advent01 False False \n",
"advent02 False False \n",
"advent03 False False \n",
"advent04 False False \n",
"advent05 False False \n",
"advent06 False False \n",
"advent07 False False \n",
"advent08 False False \n",
"advent09 False False \n",
"advent10 False False \n",
"advent11 True True \n",
"advent12 False True \n",
"advent13 False False \n",
"advent14 False False \n",
"advent15 False False \n",
"advent16 False True \n",
"advent17 False False \n",
"advent18 False False \n",
"advent19 False True \n",
"advent20 False False \n",
"advent21 False False \n",
"advent22 False True \n",
"advent23 False False \n",
"advent24 False True \n",
"advent25 False False \n",
"\n",
" Control.Monad.State.Strict Control.Monad.Writer \\\n",
"advent01 False False \n",
"advent02 False False \n",
"advent03 False False \n",
"advent04 False False \n",
"advent05 False False \n",
"advent06 False False \n",
"advent07 False False \n",
"advent08 False False \n",
"advent09 False False \n",
"advent10 False False \n",
"advent11 True True \n",
"advent12 False False \n",
"advent13 False False \n",
"advent14 False False \n",
"advent15 False False \n",
"advent16 False False \n",
"advent17 False False \n",
"advent18 False False \n",
"advent19 False False \n",
"advent20 False False \n",
"advent21 False False \n",
"advent22 False False \n",
"advent23 True False \n",
"advent24 False False \n",
"advent25 False False \n",
"\n",
" Control.Parallel.Strategies Data.Array.IArray ... \\\n",
"advent01 False False ... \n",
"advent02 False False ... \n",
"advent03 False False ... \n",
"advent04 False False ... \n",
"advent05 False False ... \n",
"advent06 False False ... \n",
"advent07 False False ... \n",
"advent08 False False ... \n",
"advent09 False False ... \n",
"advent10 False False ... \n",
"advent11 False False ... \n",
"advent12 False True ... \n",
"advent13 False False ... \n",
"advent14 False False ... \n",
"advent15 False False ... \n",
"advent16 False False ... \n",
"advent17 False False ... \n",
"advent18 False False ... \n",
"advent19 True False ... \n",
"advent20 False False ... \n",
"advent21 False False ... \n",
"advent22 False False ... \n",
"advent23 False False ... \n",
"advent24 False True ... \n",
"advent25 False False ... \n",
"\n",
" Data.PQueue.Prio.Min Data.Sequence Data.Set Data.Text \\\n",
"advent01 False False False False \n",
"advent02 False False False True \n",
"advent03 False False True False \n",
"advent04 False False False True \n",
"advent05 False False False True \n",
"advent06 False False False False \n",
"advent07 False False False True \n",
"advent08 False False False False \n",
"advent09 False False True True \n",
"advent10 False False False True \n",
"advent11 False False False True \n",
"advent12 True True True False \n",
"advent13 False False False True \n",
"advent14 False False True True \n",
"advent15 False False True True \n",
"advent16 False True True True \n",
"advent17 False False True False \n",
"advent18 False False True True \n",
"advent19 False True True True \n",
"advent20 False False False False \n",
"advent21 False False False True \n",
"advent22 False False False False \n",
"advent23 False False True False \n",
"advent24 True True True False \n",
"advent25 False False False False \n",
"\n",
" Data.Text.IO Data.Tree Data.Tree.Zipper GHC.Generics Linear \\\n",
"advent01 False False False False False \n",
"advent02 True False False False False \n",
"advent03 False False False False False \n",
"advent04 True False False False False \n",
"advent05 True False False False False \n",
"advent06 False False False False False \n",
"advent07 True True True False False \n",
"advent08 False False False False False \n",
"advent09 True False False False True \n",
"advent10 True False False False False \n",
"advent11 True False False False False \n",
"advent12 False False False False True \n",
"advent13 True False False False False \n",
"advent14 True False False False True \n",
"advent15 True False False False True \n",
"advent16 True False False False False \n",
"advent17 False False False False True \n",
"advent18 True False False False True \n",
"advent19 True False False True False \n",
"advent20 False False False False False \n",
"advent21 True False False False False \n",
"advent22 False False False False True \n",
"advent23 False False False False True \n",
"advent24 False False False False True \n",
"advent25 False False False False False \n",
"\n",
" Prelude \n",
"advent01 False \n",
"advent02 False \n",
"advent03 False \n",
"advent04 False \n",
"advent05 False \n",
"advent06 False \n",
"advent07 False \n",
"advent08 False \n",
"advent09 False \n",
"advent10 False \n",
"advent11 False \n",
"advent12 False \n",
"advent13 False \n",
"advent14 False \n",
"advent15 False \n",
"advent16 False \n",
"advent17 False \n",
"advent18 False \n",
"advent19 False \n",
"advent20 False \n",
"advent21 False \n",
"advent22 True \n",
"advent23 False \n",
"advent24 False \n",
"advent25 False \n",
"\n",
"[25 rows x 35 columns]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_imports = set(m for p in main_imports_unqualified for m in main_imports_unqualified[p])\n",
"imports_df = pd.DataFrame.from_dict(\n",
" {p: {m: m in main_imports_unqualified[p] \n",
" for m in sorted(all_imports)} \n",
" for p in main_imports_unqualified}, \n",
" orient='index').sort_index()\n",
"imports_df"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "3668bdab-5b8f-4ab0-b788-002f0ced7b8c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"| | 0 |\n",
"|:----------------------------|----:|\n",
"| AoC | 25 |\n",
"| Data.List | 16 |\n",
"| Data.Text | 14 |\n",
"| Data.Attoparsec.Text | 14 |\n",
"| Data.Text.IO | 14 |\n",
"| Control.Lens | 13 |\n",
"| Data.Set | 11 |\n",
"| Data.Maybe | 10 |\n",
"| Control.Applicative | 10 |\n",
"| Linear | 9 |\n",
"| Control.Monad.Reader | 6 |\n",
"| Data.Map.Strict | 5 |\n",
"| Data.Ix | 5 |\n",
"| Data.Sequence | 4 |\n",
"| Data.List.Split | 4 |\n",
"| Data.Char | 4 |\n",
"| Data.IntMap.Strict | 3 |\n",
"| Data.Array.IArray | 2 |\n",
"| Control.Monad.State.Strict | 2 |\n",
"| Data.MultiSet | 2 |\n",
"| Data.Ord | 2 |\n",
"| Data.PQueue.Prio.Max | 2 |\n",
"| Data.PQueue.Prio.Min | 2 |\n",
"| Data.Tree | 1 |\n",
"| Data.Tree.Zipper | 1 |\n",
"| GHC.Generics | 1 |\n",
"| Control.DeepSeq | 1 |\n",
"| Data.Monoid | 1 |\n",
"| Data.IntMap | 1 |\n",
"| Data.Foldable | 1 |\n",
"| Data.CircularList | 1 |\n",
"| Control.Parallel.Strategies | 1 |\n",
"| Control.Monad.Writer | 1 |\n",
"| Control.Monad.RWS.Strict | 1 |\n",
"| Prelude | 1 |\n"
]
}
],
"source": [
"print(imports_df.sum().sort_values(ascending=False).to_markdown())"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "3f3e9d52-87b4-4a2d-889d-0bd925f967b0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" program | \n",
" module | \n",
" present | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" advent01 | \n",
" AoC | \n",
" True | \n",
"
\n",
" \n",
" 17 | \n",
" advent01 | \n",
" Data.List | \n",
" True | \n",
"
\n",
" \n",
" 18 | \n",
" advent01 | \n",
" Data.List.Split | \n",
" True | \n",
"
\n",
" \n",
" 23 | \n",
" advent01 | \n",
" Data.Ord | \n",
" True | \n",
"
\n",
" \n",
" 35 | \n",
" advent02 | \n",
" AoC | \n",
" True | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 831 | \n",
" advent24 | \n",
" Data.Sequence | \n",
" True | \n",
"
\n",
" \n",
" 832 | \n",
" advent24 | \n",
" Data.Set | \n",
" True | \n",
"
\n",
" \n",
" 838 | \n",
" advent24 | \n",
" Linear | \n",
" True | \n",
"
\n",
" \n",
" 840 | \n",
" advent25 | \n",
" AoC | \n",
" True | \n",
"
\n",
" \n",
" 857 | \n",
" advent25 | \n",
" Data.List | \n",
" True | \n",
"
\n",
" \n",
"
\n",
"
191 rows × 3 columns
\n",
"
"
],
"text/plain": [
" program module present\n",
"0 advent01 AoC True\n",
"17 advent01 Data.List True\n",
"18 advent01 Data.List.Split True\n",
"23 advent01 Data.Ord True\n",
"35 advent02 AoC True\n",
".. ... ... ...\n",
"831 advent24 Data.Sequence True\n",
"832 advent24 Data.Set True\n",
"838 advent24 Linear True\n",
"840 advent25 AoC True\n",
"857 advent25 Data.List True\n",
"\n",
"[191 rows x 3 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"imports_scatter = imports_df.stack().reset_index()\n",
"imports_scatter.columns = ['program', 'module', 'present']\n",
"imports_scatter = imports_scatter[imports_scatter.present]\n",
"imports_scatter"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "1b22b8c9-a14f-406d-bd77-ba7d7b3c3ffa",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"imports_scatter.plot.scatter(x='program', y='module', s=80, rot=45, figsize=(10, 10))"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "9552d5f9-cc44-4d49-b97e-8961556878c5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"35"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"imports_df.columns.size"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "fa42c909-7c89-4351-97fd-150138892255",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"array(['AoC', 'Data.List', 'Data.Text', 'Data.Attoparsec.Text',\n",
" 'Data.Text.IO', 'Control.Lens', 'Data.Set', 'Data.Maybe',\n",
" 'Control.Applicative', 'Linear', 'Control.Monad.Reader',\n",
" 'Data.Map.Strict', 'Data.Ix', 'Data.Sequence', 'Data.List.Split',\n",
" 'Data.Char', 'Data.IntMap.Strict', 'Data.Array.IArray',\n",
" 'Control.Monad.State.Strict', 'Data.MultiSet', 'Data.Ord',\n",
" 'Data.PQueue.Prio.Max', 'Data.PQueue.Prio.Min', 'Data.Tree',\n",
" 'Data.Tree.Zipper', 'GHC.Generics', 'Control.DeepSeq',\n",
" 'Data.Monoid', 'Data.IntMap', 'Data.Foldable', 'Data.CircularList',\n",
" 'Control.Parallel.Strategies', 'Control.Monad.Writer',\n",
" 'Control.Monad.RWS.Strict', 'Prelude'], dtype=object)"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_imports = imports_df.sum().sort_values(ascending=False).index.values\n",
"sorted_imports"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "8d845f2f-4b8f-49cf-92a8-342fd368c71f",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" AoC | \n",
" Data.List | \n",
" Data.Text | \n",
" Data.Attoparsec.Text | \n",
" Data.Text.IO | \n",
" Control.Lens | \n",
" Data.Set | \n",
" Data.Maybe | \n",
" Control.Applicative | \n",
" Linear | \n",
" ... | \n",
" GHC.Generics | \n",
" Control.DeepSeq | \n",
" Data.Monoid | \n",
" Data.IntMap | \n",
" Data.Foldable | \n",
" Data.CircularList | \n",
" Control.Parallel.Strategies | \n",
" Control.Monad.Writer | \n",
" Control.Monad.RWS.Strict | \n",
" Prelude | \n",
"
\n",
" \n",
" \n",
" \n",
" advent01 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent02 | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent03 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent04 | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent05 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent06 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent07 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent08 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent09 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent10 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent11 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
"
\n",
" \n",
" advent12 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent13 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent14 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent15 | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent16 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent17 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent18 | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent19 | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" ... | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent20 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent21 | \n",
" True | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent22 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
"
\n",
" \n",
" advent23 | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent24 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" True | \n",
" True | \n",
" True | \n",
" False | \n",
" True | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" advent25 | \n",
" True | \n",
" True | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" ... | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
"
\n",
"
25 rows × 35 columns
\n",
"
"
],
"text/plain": [
" AoC Data.List Data.Text Data.Attoparsec.Text Data.Text.IO \\\n",
"advent01 True True False False False \n",
"advent02 True False True True True \n",
"advent03 True True False False False \n",
"advent04 True False True True True \n",
"advent05 True True True True True \n",
"advent06 True True False False False \n",
"advent07 True True True True True \n",
"advent08 True True False False False \n",
"advent09 True True True True True \n",
"advent10 True True True True True \n",
"advent11 True True True True True \n",
"advent12 True False False False False \n",
"advent13 True True True True True \n",
"advent14 True True True True True \n",
"advent15 True False True True True \n",
"advent16 True True True True True \n",
"advent17 True False False False False \n",
"advent18 True False True True True \n",
"advent19 True True True True True \n",
"advent20 True True False False False \n",
"advent21 True False True True True \n",
"advent22 True False False False False \n",
"advent23 True False False False False \n",
"advent24 True True False False False \n",
"advent25 True True False False False \n",
"\n",
" Control.Lens Data.Set Data.Maybe Control.Applicative Linear \\\n",
"advent01 False False False False False \n",
"advent02 False False False True False \n",
"advent03 False True False False False \n",
"advent04 False False False False False \n",
"advent05 False False True True False \n",
"advent06 False False False False False \n",
"advent07 False False True True False \n",
"advent08 False False False False False \n",
"advent09 True True False True True \n",
"advent10 False False False True False \n",
"advent11 True False False True False \n",
"advent12 True True False False True \n",
"advent13 False False False True False \n",
"advent14 True True True False True \n",
"advent15 False True False False True \n",
"advent16 True True False True False \n",
"advent17 True True True False True \n",
"advent18 True True True False True \n",
"advent19 True True True True False \n",
"advent20 True False True False False \n",
"advent21 True False False True False \n",
"advent22 True False True False True \n",
"advent23 True True True False True \n",
"advent24 True True True False True \n",
"advent25 False False False False False \n",
"\n",
" ... GHC.Generics Control.DeepSeq Data.Monoid Data.IntMap \\\n",
"advent01 ... False False False False \n",
"advent02 ... False False False False \n",
"advent03 ... False False False False \n",
"advent04 ... False False False False \n",
"advent05 ... False False False False \n",
"advent06 ... False False False False \n",
"advent07 ... False False False False \n",
"advent08 ... False False False False \n",
"advent09 ... False False False False \n",
"advent10 ... False False False False \n",
"advent11 ... False False False True \n",
"advent12 ... False False False False \n",
"advent13 ... False False False False \n",
"advent14 ... False False False False \n",
"advent15 ... False False False False \n",
"advent16 ... False False False False \n",
"advent17 ... False False False False \n",
"advent18 ... False False False False \n",
"advent19 ... True True False False \n",
"advent20 ... False False False False \n",
"advent21 ... False False False False \n",
"advent22 ... False False False False \n",
"advent23 ... False False True False \n",
"advent24 ... False False False False \n",
"advent25 ... False False False False \n",
"\n",
" Data.Foldable Data.CircularList Control.Parallel.Strategies \\\n",
"advent01 False False False \n",
"advent02 False False False \n",
"advent03 False False False \n",
"advent04 False False False \n",
"advent05 False False False \n",
"advent06 False False False \n",
"advent07 False False False \n",
"advent08 False False False \n",
"advent09 False False False \n",
"advent10 False False False \n",
"advent11 False False False \n",
"advent12 True False False \n",
"advent13 False False False \n",
"advent14 False False False \n",
"advent15 False False False \n",
"advent16 False False False \n",
"advent17 False False False \n",
"advent18 False False False \n",
"advent19 False False True \n",
"advent20 False True False \n",
"advent21 False False False \n",
"advent22 False False False \n",
"advent23 False False False \n",
"advent24 False False False \n",
"advent25 False False False \n",
"\n",
" Control.Monad.Writer Control.Monad.RWS.Strict Prelude \n",
"advent01 False False False \n",
"advent02 False False False \n",
"advent03 False False False \n",
"advent04 False False False \n",
"advent05 False False False \n",
"advent06 False False False \n",
"advent07 False False False \n",
"advent08 False False False \n",
"advent09 False False False \n",
"advent10 False False False \n",
"advent11 True True False \n",
"advent12 False False False \n",
"advent13 False False False \n",
"advent14 False False False \n",
"advent15 False False False \n",
"advent16 False False False \n",
"advent17 False False False \n",
"advent18 False False False \n",
"advent19 False False False \n",
"advent20 False False False \n",
"advent21 False False False \n",
"advent22 False False True \n",
"advent23 False False False \n",
"advent24 False False False \n",
"advent25 False False False \n",
"\n",
"[25 rows x 35 columns]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"imports_sorted_cols = imports_df[sorted_imports]\n",
"imports_sorted_cols"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "4b70002e-f12e-4067-b8b8-119504e4d86b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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aROIZY1TwHfA+hrzunXrLjuvuz73sLzSIV3xY2YeqjSvW7fusvO663MD9nRIR0TEdmAVsIuRRxZn5s7S87p16+7WXfNn1z0/9xBXr0hXrAR+AzaN7Etg3AG6kHndunWXndddnxvwSoeIiIj0hD0d0gkRcXNEvB8R3wy2b42IZ2rI69atu+y87vrcM7TtRLWs8xXwIXAHI4/JpXk7ZPF53bp1l53XXZ97WF7pkK5Ynpmfztn3dyV53bp1l53XXZ8b8PaKdMfJiFhL02hERGymeZRuDXndunWXndddn7th0ksjljVOATcC79F0Ox8HPgZuqCGvW7fusvO663MPy9Ur0gkRcXlmnouIq4DLMvNMLXndunWXndddn3uIt1ekK45GxCvAncAvleV169Zddl53fW7ASYd0xy00l+IeoxmsL0fEXZXkdevWXXZed33uhknvx1jWpAVcB7wGnKstr1u37rLzuutye6VDOiMiNkTEDuALYBnwQC153bp1l53XXZ8bfAy6dEREHAW+BN4Cdmfmr7XkdevWXXZed33umfM46ZAuiIiVmXm6xrxu3brLzuuuzz1zHicdMk0i4iUGD485H5n5RKl53bp1+xvVPV33XOzpkGnzGfA5zf2+24Ejg7oNOFd4Xrdu3d26a/7suufnns18ul4t61IF7AWWjmwvBfbWkNetW3fZed31uYfllQ7pitXAipHtqwf7asjr1q277Lzu+twALJk0IDImzwEHImLvYHsDsK2SvG7dusvO667PDdhIKh0SEauBrcAhYDlwIjM/qiGvW7fusvO663MD9nRY3RTwCPA1cIrmXuDvwAc15HXr1l12Xnd97pnzTBqwrHFqMDiXAV8OttcBb9aQ161bd9l53fW5h2UjqXTF2cw8CxARV2bmYZoXBtWQ161bd9l53fW5ARtJpTuORcS1wC5gT0ScAk5UktetW3fZed31uQEbSaUHImIDcA3wTmb+WVNet27dZed11+V20iEiIiK9YE+HiIiI9IKTDhEREekFJx0iIiLSC046REREpBecdIiIiEgv/APSKC9C0fn4twAAAABJRU5ErkJggg==\n",
"text/plain": [
"