From b38141730d297bd48fddf3951f9eea4bda8d9f2b Mon Sep 17 00:00:00 2001 From: Milton Mazzarri Date: Thu, 30 Nov 2017 10:29:21 -0600 Subject: [PATCH 01/55] Fix unit tests for Spelling Corrector --- py/spell.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/py/spell.py b/py/spell.py index 5329b13..ac37b9b 100644 --- a/py/spell.py +++ b/py/spell.py @@ -58,20 +58,20 @@ def unit_tests(): assert words('This is a TEST.') == ['this', 'is', 'a', 'test'] assert Counter(words('This is a test. 123; A TEST this is.')) == ( Counter({'123': 1, 'a': 2, 'is': 2, 'test': 2, 'this': 2})) - assert len(WORDS) == 32192 - assert sum(WORDS.values()) == 1115504 + assert len(WORDS) == 32198 + assert sum(WORDS.values()) == 1115585 assert WORDS.most_common(10) == [ - ('the', 79808), + ('the', 79809), ('of', 40024), - ('and', 38311), + ('and', 38312), ('to', 28765), - ('in', 22020), + ('in', 22023), ('a', 21124), ('that', 12512), ('he', 12401), ('was', 11410), ('it', 10681)] - assert WORDS['the'] == 79808 + assert WORDS['the'] == 79809 assert P('quintessential') == 0 assert 0.07 < P('the') < 0.08 return 'unit_tests pass' From 10324c5a8ab66704210c8de6248386ce84fc679d Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Fri, 1 Dec 2017 08:48:41 -0800 Subject: [PATCH 02/55] Add files via upload --- ipynb/Advent 2017.ipynb | 252 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 ipynb/Advent 2017.ipynb diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb new file mode 100644 index 0000000..1ff2699 --- /dev/null +++ b/ipynb/Advent 2017.ipynb @@ -0,0 +1,252 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Python 3.x\n", + "\n", + "import re\n", + "import numpy as np\n", + "import math\n", + "import urllib.request\n", + "\n", + "from collections import Counter, defaultdict, namedtuple, deque\n", + "from functools import lru_cache\n", + "from itertools import permutations, combinations, chain, cycle, product, islice, count as count_from\n", + "from heapq import heappop, heappush\n", + "\n", + "identity = lambda x: x\n", + "letters = 'abcdefghijklmnopqrstuvwxyz'\n", + "\n", + "cat = ''.join\n", + "\n", + "Ø = frozenset() # Empty set\n", + "inf = float('inf')\n", + "BIG = 10 ** 999\n", + "\n", + "def Input(day, year=2017):\n", + " \"Open this day's input file.\"\n", + " filename = 'data/advent{}/input{}.txt'.format(year, day)\n", + " try:\n", + " return open(filename)\n", + " except FileNotFoundError:\n", + " return urllib.request.urlopen(\"http://norvig.com/ipython/\" + filename)\n", + "\n", + "################ Functions on Iterables\n", + "\n", + "def first(iterable, default=None): return next(iter(iterable), default)\n", + "\n", + "def first_true(iterable, pred=None, default=None):\n", + " \"\"\"Returns the first true value in the iterable.\n", + " If no true value is found, returns *default*\n", + " If *pred* is not None, returns the first item\n", + " for which pred(item) is true.\"\"\"\n", + " # first_true([a,b,c], default=x) --> a or b or c or x\n", + " # first_true([a,b], fn, x) --> a if fn(a) else b if fn(b) else x\n", + " return next(filter(pred, iterable), default)\n", + "\n", + "def nth(iterable, n, default=None):\n", + " \"Returns the nth item of iterable, or a default value\"\n", + " return next(islice(iterable, n, None), default)\n", + "\n", + "def upto(iterable, maxval):\n", + " \"From a monotonically increasing iterable, generate all the values <= maxval.\"\n", + " # Why <= maxval rather than < maxval? In part because that's how Ruby's upto does it.\n", + " return takewhile(lambda x: x <= maxval, iterable)\n", + "\n", + "def groupby(iterable, key=identity):\n", + " \"Return a dict of {key(item): [items...]} grouping all items in iterable by keys.\"\n", + " groups = defaultdict(list)\n", + " for item in iterable:\n", + " groups[key(item)].append(item)\n", + " return groups\n", + "\n", + "def grouper(iterable, n, fillvalue=None):\n", + " \"\"\"Collect data into fixed-length chunks:\n", + " grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx\"\"\"\n", + " args = [iter(iterable)] * n\n", + " return zip_longest(*args, fillvalue=fillvalue)\n", + "\n", + "def overlapping(iterable, n):\n", + " \"\"\"Generate all (overlapping) n-element subsequences of iterable.\n", + " overlapping('ABCDEFG', 3) --> ABC BCD CDE DEF EFG\"\"\"\n", + " if isinstance(iterable, abc.Sequence):\n", + " yield from (iterable[i:i+n] for i in range(len(iterable) + 1 - n))\n", + " else:\n", + " result = deque(maxlen=n)\n", + " for x in iterable:\n", + " result.append(x)\n", + " if len(result) == n:\n", + " yield tuple(result)\n", + " \n", + "def pairwise(iterable):\n", + " \"s -> (s0,s1), (s1,s2), (s2, s3), ...\"\n", + " return overlapping(iterable, 2)\n", + "\n", + "def sequence(iterable, type=tuple):\n", + " \"Coerce iterable to sequence: leave it alone if it is already a sequence, else make it of type.\"\n", + " return iterable if isinstance(iterable, abc.Sequence) else type(iterable)\n", + "\n", + "def join(iterable, sep=''):\n", + " \"Join the items in iterable, converting each to a string first.\"\n", + " return sep.join(map(str, iterable))\n", + " \n", + "def powerset(iterable):\n", + " \"Yield all subsets of items.\"\n", + " items = list(iterable)\n", + " for r in range(len(items)+1):\n", + " for c in combinations(items, r):\n", + " yield c\n", + " \n", + "def quantify(iterable, pred=bool):\n", + " \"Count how many times the predicate is true.\"\n", + " return sum(map(pred, iterable))\n", + "\n", + "def shuffled(iterable):\n", + " \"Create a new list out of iterable, and shuffle it.\"\n", + " new = list(iterable)\n", + " random.shuffle(new)\n", + " return new\n", + " \n", + "flatten = chain.from_iterable\n", + " \n", + "class Set(frozenset):\n", + " \"A frozenset, but with a prettier printer.\"\n", + " def __repr__(self): return '{' + join(sorted(self), ', ') + '}'\n", + " \n", + "def canon(items, typ=None):\n", + " \"Canonicalize these order-independent items into a hashable canonical form.\"\n", + " typ = (typ or (cat if isinstance(items, str) else tuple))\n", + " return typ(sorted(items))\n", + " \n", + "################ Math\n", + " \n", + "def transpose(matrix): return tuple(zip(*matrix))\n", + "\n", + "def isqrt(n):\n", + " \"Integer square root (rounds down).\"\n", + " return int(n ** 0.5)\n", + "\n", + "def ints(start, end):\n", + " \"The integers from start to end, inclusive. Equivalent to range(start, end+1)\"\n", + " return range(start, end + 1)\n", + "\n", + "def floats(start, end, step=1.0):\n", + " \"Yields start, start+step, start+2*step, ... up to (maybe including) end.\"\n", + " m = (1.0 if step >= 0 else -1.0)\n", + " while start * m <= end * m:\n", + " yield start\n", + " start += step\n", + " \n", + "def multiply(numbers):\n", + " \"Multiply all the numbers together.\"\n", + " result = 1\n", + " for n in numbers:\n", + " result *= n\n", + " return result\n", + "\n", + "################ 2-D points implemented using (x, y) tuples\n", + "\n", + "def X(point): x, y = point; return x\n", + "def Y(point): x, y = point; return y\n", + "\n", + "def neighbors4(point): \n", + " \"The four neighboring squares.\"\n", + " x, y = point\n", + " return ( (x, y-1),\n", + " (x-1, y), (x+1, y), \n", + " (x, y+1))\n", + "\n", + "def neighbors8(point): \n", + " \"The eight neighboring squares.\"\n", + " x, y = point \n", + " return ((x-1, y-1), (x, y-1), (x+1, y-1),\n", + " (x-1, y), (x+1, y),\n", + " (x+1, y+1), (x, y+1), (x+1, y+1))\n", + "\n", + "def cityblock_distance(p, q=(0, 0)): \n", + " \"Manhatten distance between two points.\"\n", + " return abs(X(p) - X(q)) + abs(Y(p) - Y(q))\n", + "\n", + "def distance(p, q=(0, 0)): \n", + " \"Hypotenuse distance between two points.\"\n", + " return math.hypot(X(p) - X(q), Y(p) - Y(q))\n", + "\n", + "################ Debugging \n", + "\n", + "def trace1(f):\n", + " \"Print a trace of the input and output of a function on one line.\"\n", + " def traced_f(*args):\n", + " result = f(*args)\n", + " print('{}({}) = {}'.format(f.__name__, ', '.join(map(str, args)), result))\n", + " return result\n", + " return traced_f\n", + "\n", + "def grep(pattern, iterable):\n", + " \"Print lines from iterable that match pattern.\"\n", + " for line in iterable:\n", + " if re.search(pattern, line):\n", + " print(line)\n", + "\n", + "################ A* and Breadth-First Search (we track states, not actions)\n", + "\n", + "def Astar(start, moves_func, h_func, cost_func=lambda s, s2: 1):\n", + " \"Find a shortest sequence of states from start to a goal state (a state s with h_func(s) == 0).\"\n", + " frontier = [(h_func(start), start)] # A priority queue, ordered by path length, f = g + h\n", + " previous = {start: None} # start state has no previous state; other states will\n", + " path_cost = {start: 0} # The cost of the best path to a state.\n", + " Path = lambda s: ([] if (s is None) else Path(previous[s]) + [s])\n", + " while frontier:\n", + " (f, s) = heappop(frontier)\n", + " if h_func(s) == 0:\n", + " return Path(s)\n", + " for s2 in moves_func(s):\n", + " g = path_cost[s] + cost_func(s, s2)\n", + " if s2 not in path_cost or g < path_cost[s2]:\n", + " heappush(frontier, (g + h_func(s2), s2))\n", + " path_cost[s2] = g\n", + " previous[s2] = s\n", + "\n", + "def bfs(start, moves_func, goals):\n", + " \"Breadth-first search\"\n", + " goal_func = (goals if callable(goals) else lambda s: s in goals)\n", + " return Astar(start, moves_func, lambda s: (0 if goal_func(s) else 1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 7ae3d123535834b140bae0cb921c0d810c29cdd4 Mon Sep 17 00:00:00 2001 From: Lilian Besson Date: Sat, 2 Dec 2017 08:32:12 +0100 Subject: [PATCH 03/55] =?UTF-8?q?Typo:=20poropositional=20=E2=86=92=20prop?= =?UTF-8?q?ositional?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Typo: `poropositional` → `propositional` --- ipynb/PropositionalLogic.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipynb/PropositionalLogic.ipynb b/ipynb/PropositionalLogic.ipynb index b35efb0..7766464 100644 --- a/ipynb/PropositionalLogic.ipynb +++ b/ipynb/PropositionalLogic.ipynb @@ -435,7 +435,7 @@ "source": [ "That looks pretty good! But far from perfect. Here are some errors:\n", "\n", - "* `Should I stay` *etc.*:
questions are not poropositional statements.\n", + "* `Should I stay` *etc.*:
questions are not propositional statements.\n", "\n", "* `If I were a carpenter`:
doesn't handle modal logic.\n", "\n", From 5badb35f300cca73539510344b7e476c922d4851 Mon Sep 17 00:00:00 2001 From: Lilian Besson Date: Sat, 2 Dec 2017 08:40:35 +0100 Subject: [PATCH 04/55] =?UTF-8?q?Typo:=20Eng;lish=20=E2=86=92=20English?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Typo: `Eng;lish` → `English` --- ipynb/PropositionalLogic.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipynb/PropositionalLogic.ipynb b/ipynb/PropositionalLogic.ipynb index 7766464..c6540a6 100644 --- a/ipynb/PropositionalLogic.ipynb +++ b/ipynb/PropositionalLogic.ipynb @@ -129,7 +129,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now the mechanism to process these rules. The key function is `match_rule`, which matches an English sentence against a rule. The function returns two values, a string representing the translation of the Eng;lish sentence into logic, and `defs`, a dictionary of `{Variable: \"value\"}` pairs. If `match_rule` finds that the rule matches, it recursively calls `match_rules` to match each of the subgroups of the regular expression (the `P` and `Q` in `if {P}, then {Q}`).\n", + "Now the mechanism to process these rules. The key function is `match_rule`, which matches an English sentence against a rule. The function returns two values, a string representing the translation of the English sentence into logic, and `defs`, a dictionary of `{Variable: \"value\"}` pairs. If `match_rule` finds that the rule matches, it recursively calls `match_rules` to match each of the subgroups of the regular expression (the `P` and `Q` in `if {P}, then {Q}`).\n", "The function `match_literal` handles negations, and is where the `defs` dictionary actually gets updated." ] }, From c8c4dee589cc107381c9b090c3c66f1694131378 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sat, 2 Dec 2017 09:14:12 -0800 Subject: [PATCH 05/55] Add files via upload --- ipynb/Advent 2017.ipynb | 196 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 185 insertions(+), 11 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 1ff2699..3f07891 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -1,18 +1,30 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# December 2017: Advent of Code Solutions\n", + "\n", + "
Peter Norvig, December 2017
\n", + "\n", + "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). But this time, I won't repeat the write up my version of the puzzle description each time; you'll have to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to read those. I just show my solutions.\n", + "\n", + "First, a set of imports and utility functions that might prove useful:" + ] + }, { "cell_type": "code", - "execution_count": 89, - "metadata": { - "collapsed": false - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ - "# Python 3.x\n", + "# Python 3.x Utility Functions\n", "\n", "import re\n", "import numpy as np\n", "import math\n", + "import random\n", "import urllib.request\n", "\n", "from collections import Counter, defaultdict, namedtuple, deque\n", @@ -36,6 +48,20 @@ " return open(filename)\n", " except FileNotFoundError:\n", " return urllib.request.urlopen(\"http://norvig.com/ipython/\" + filename)\n", + " \n", + "def array(lines):\n", + " \"Convert an iterable of lines into a 2-D array. If lines is a str, do splitlines.\"\n", + " if isinstance(lines, str): lines = lines.splitlines()\n", + " return [mapt(atom, line.split()) for line in lines]\n", + "\n", + "def atom(token):\n", + " try:\n", + " return int(token)\n", + " except ValueError:\n", + " try:\n", + " return float(token)\n", + " except ValueError:\n", + " return token\n", "\n", "################ Functions on Iterables\n", "\n", @@ -123,6 +149,10 @@ " \"Canonicalize these order-independent items into a hashable canonical form.\"\n", " typ = (typ or (cat if isinstance(items, str) else tuple))\n", " return typ(sorted(items))\n", + "\n", + "def mapt(fn, *args): \n", + " \"Do a map, and make the results into a tuple.\"\n", + " return tuple(map(fn, *args))\n", " \n", "################ Math\n", " \n", @@ -218,14 +248,158 @@ " return Astar(start, moves_func, lambda s: (0 if goal_func(s) else 1))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 1](https://adventofcode.com/2017/day/1): Inverse Captcha\n" + ] + }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 2, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "raw = '3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763'\n", + "\n", + "digits = mapt(int, raw)\n", + "N = len(digits)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1158" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(digits[i] \n", + " for i in range(N) \n", + " if digits[i] == digits[i - 1])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1132" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(digits[i] \n", + " for i in range(N) \n", + " if digits[i] == digits[i - N//2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I was able to do this warmup puzzle very quickly; too bad I started a few hours too late to make in on the leader board. I created a recurring calendar reminder so I'll be less likely to be late in the future." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 2](https://adventofcode.com/2017/day/2): Corruption Checksum\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "rows = array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", + "302\t463\t59\t58\t55\t87\t508\t54\t472\t63\t469\t419\t424\t331\t337\t72\n", + "899\t962\t77\t1127\t62\t530\t78\t880\t129\t1014\t93\t148\t239\t288\t357\t424\n", + "2417\t2755\t254\t3886\t5336\t3655\t5798\t3273\t5016\t178\t270\t6511\t223\t5391\t1342\t2377\n", + "68\t3002\t3307\t166\t275\t1989\t1611\t364\t157\t144\t3771\t1267\t3188\t3149\t156\t3454\n", + "1088\t1261\t21\t1063\t1173\t278\t1164\t207\t237\t1230\t1185\t431\t232\t660\t195\t1246\n", + "49\t1100\t136\t1491\t647\t1486\t112\t1278\t53\t1564\t1147\t1068\t809\t1638\t138\t117\n", + "158\t3216\t1972\t2646\t3181\t785\t2937\t365\t611\t1977\t1199\t2972\t201\t2432\t186\t160\n", + "244\t86\t61\t38\t58\t71\t243\t52\t245\t264\t209\t265\t308\t80\t126\t129\n", + "1317\t792\t74\t111\t1721\t252\t1082\t1881\t1349\t94\t891\t1458\t331\t1691\t89\t1724\n", + "3798\t202\t3140\t3468\t1486\t2073\t3872\t3190\t3481\t3760\t2876\t182\t2772\t226\t3753\t188\n", + "2272\t6876\t6759\t218\t272\t4095\t4712\t6244\t4889\t2037\t234\t223\t6858\t3499\t2358\t439\n", + "792\t230\t886\t824\t762\t895\t99\t799\t94\t110\t747\t635\t91\t406\t89\t157\n", + "2074\t237\t1668\t1961\t170\t2292\t2079\t1371\t1909\t221\t2039\t1022\t193\t2195\t1395\t2123\n", + "8447\t203\t1806\t6777\t278\t2850\t1232\t6369\t398\t235\t212\t992\t7520\t7304\t7852\t520\n", + "3928\t107\t3406\t123\t2111\t2749\t223\t125\t134\t146\t3875\t1357\t508\t1534\t4002\t4417''')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "46402" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(abs(max(row) - min(row)) for row in rows)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "265" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def evendiv(row): \n", + " return first(a // b for a in row for b in row if a > b and a // b == a / b)\n", + "\n", + "sum(map(evendiv, rows))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Today I remembered to start on time, but I was too slow to score any points; the best I could do was 112th place on Part Two. \n", + "\n", + "In Part One, my big mistake was typing `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"` and pointed at `\"max\"`." + ] } ], "metadata": { @@ -244,7 +418,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.0" + "version": "3.5.3" } }, "nbformat": 4, From 01b8185adca8316ec77995af642d147f962596f6 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sat, 2 Dec 2017 09:16:24 -0800 Subject: [PATCH 06/55] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f55fa7c..c48e3fa 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the f |Logic and Number Puzzles| |---| -|[Advent of Code 2016](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2016*| +|[Advent of Code 2017](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%202017.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2017; currently ongoing.*| +|[Advent of Code 2016](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2016*.| |[Translating English Sentences into Propositional Logic Statements](https://github.com/norvig/pytudes/blob/master/ipynb/PropositionalLogic.ipynb)
*Automatically converting informal English sentences into formal Propositional Logic.*| |[The Puzzle of the Misanthropic Neighbors](https://github.com/norvig/pytudes/blob/master/ipynb/Mean%20Misanthrope%20Density.ipynb)
*How crowded will this neighborhood be, if nobody wants to live next door to anyone else?*| |[Countdown to 2016](https://github.com/norvig/pytudes/blob/master/ipynb/Countdown.ipynb)
*Solving the equation 10 _ 9 _ 8 _ 7 _ 6 _ 5 _ 4 _ 3 _ 2 _ 1 = 2016. From an Alex Bellos puzzle.*| From e87740fc34b89363c6e6552279584abd5257d08f Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sat, 2 Dec 2017 10:53:35 -0800 Subject: [PATCH 07/55] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c48e3fa..2fae3ad 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This project contains **pytudes**—Python programs for perfecting programmi Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the files here, or clone the project, or run the notebooks online by clicking this button: [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/norvig/pytudes/master) -# pytudes: Index of Jupyter (IPython) Notebooks +# Index of Jupyter (IPython) Notebooks |Logic and Number Puzzles| |---| @@ -46,7 +46,7 @@ Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the f |[Economics Simulation](https://github.com/norvig/pytudes/blob/master/ipynb/Economics.ipynb)
*A simulation of a simple economic game.*| |[Project Euler Utilities](https://github.com/norvig/pytudes/blob/master/ipynb/Project%20Euler%20Utils.ipynb)
*My utility functions for the Project Euler problems, including `Primes` and `Factors`.*| -# pytudes: Index of Python Files +# Index of Python Files | **File** | **Description** | **Documentation**| |:--------|:-------------------|----| From 9baec381e3fcae4306d211b8f855cde8106d6750 Mon Sep 17 00:00:00 2001 From: Lilian Besson Date: Sun, 3 Dec 2017 00:00:20 +0100 Subject: [PATCH 08/55] =?UTF-8?q?Typo:=20infortative=20=E2=86=92=20informa?= =?UTF-8?q?tive?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Typo: `infortative` → `informative` - Remove last empty cell --- ipynb/BASIC.ipynb | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/ipynb/BASIC.ipynb b/ipynb/BASIC.ipynb index 138becf..71f7b70 100644 --- a/ipynb/BASIC.ipynb +++ b/ipynb/BASIC.ipynb @@ -1737,7 +1737,7 @@ "# Final Program\n", "\n", "Now for a final, longer example, Conway's Game of [Life](https://en.wikipedia.org/wiki/Conway's_Game_of_Life),\n", - "which shows that BASIC is capable of handling a non-trivial problem—but I wouldn't want to rely on it for anything much bigger. This should give us some added confidence in the validity of the interpreter, but I would say the interpreter needs more work before I would trust it. I hope you found working through the interpreter infortative, and maybe you have ideas for how to improve it, or to develop an interpreter for another language." + "which shows that BASIC is capable of handling a non-trivial problem—but I wouldn't want to rely on it for anything much bigger. This should give us some added confidence in the validity of the interpreter, but I would say the interpreter needs more work before I would trust it. I hope you found working through the interpreter informative, and maybe you have ideas for how to improve it, or to develop an interpreter for another language." ] }, { @@ -1931,15 +1931,6 @@ "999 END \n", "''')" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { From b6d22da1b1bdeab47e9890a62c0d6c7eaf95ddb4 Mon Sep 17 00:00:00 2001 From: Lilian Besson Date: Sun, 3 Dec 2017 00:04:44 +0100 Subject: [PATCH 09/55] =?UTF-8?q?Typo:=20alohabetically=20=E2=86=92=20alph?= =?UTF-8?q?abetically=20on=20Gesture=20Typing.ipynb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On `ipynb/Gesture Typing.ipynb`: - Typo: `alohabetically` → `alphabetically` - `longest 10 paths` → `10 longest paths` (clearer) --- ipynb/Gesture Typing.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ipynb/Gesture Typing.ipynb b/ipynb/Gesture Typing.ipynb index 05f676e..458d138 100644 --- a/ipynb/Gesture Typing.ipynb +++ b/ipynb/Gesture Typing.ipynb @@ -400,7 +400,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "And the longest ten paths? Including the lengths? We'll use a helper function, `print_top`, which prints the top *n* items in a seqence according to some key function:" + "And the ten longest paths? Including the lengths? We'll use a helper function, `print_top`, which prints the top *n* items in a seqence according to some key function:" ] }, { @@ -490,7 +490,7 @@ "===\n", "\n", "What is the average segment length for a typical typing work load? To answer that, we need to know what a typical work load is. We will read a file of \"typical\" text, and count how many times each segment is used. A `Workload` is a `dict` of the form `{segment: proportion, ...},` e.g. `{'AB': 0.02}`, where each key is a two-letter string (or *bigram*) representing a segment, and each value is the proportion of time that segment appears in the workload. Since the distance from `A` to `B` on a keyboard is the same as the distance from `B` to `A`, we can combine them together into one count;\n", - "I'll arbitrarily choose count them both under the alohabetically first one. I make a `Counter` of all two-letter segments, and `normalize` it so that the counts sum to 1 (and are thus probabilities)." + "I'll arbitrarily choose count them both under the alphabetically first one. I make a `Counter` of all two-letter segments, and `normalize` it so that the counts sum to 1 (and are thus probabilities)." ] }, { From 86cc91ec6e8f640fee0395e7f25398fb202508bd Mon Sep 17 00:00:00 2001 From: Yasser Bashir Date: Sun, 3 Dec 2017 22:08:39 +0500 Subject: [PATCH 10/55] Fixed a tiny typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2fae3ad..c5ade04 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the f |[Bad Grade, Good Experience](https://github.com/norvig/pytudes/blob/master/ipynb/Snobol.ipynb)
*As a student, did you ever get a bad grade on a programming assignment? (Snobol, Concordance)*| |[Conway's Game of Life](https://github.com/norvig/pytudes/blob/master/ipynb/Life.ipynb)
*The cellular automata zero-player game.*| |[A Concrete Introduction to Probability](https://github.com/norvig/pytudes/blob/master/ipynb/Probability.ipynb)
*Code and examples of the basic principles of Probability Theory.*| -|[Probability, Paradox, and the Reasonable Person Principle](https://github.com/norvig/pytudes/blob/master/ipynb/ProbabilityParadox.ipynb)
*Some classic paradoxes in Probability Theory, and how too think about disagreements.*| +|[Probability, Paradox, and the Reasonable Person Principle](https://github.com/norvig/pytudes/blob/master/ipynb/ProbabilityParadox.ipynb)
*Some classic paradoxes in Probability Theory, and how to think about disagreements.*| |[The Convex Hull Problem](https://github.com/norvig/pytudes/blob/master/ipynb/Convex%20Hull.ipynb)
*A classic Computer Science Algorithm.*| |[The Traveling Salesperson Problem](https://github.com/norvig/pytudes/blob/master/ipynb/TSP.ipynb)
*Another of the classics.*| |[Economics Simulation](https://github.com/norvig/pytudes/blob/master/ipynb/Economics.ipynb)
*A simulation of a simple economic game.*| From 5d0e4250a3b8698ac607e8f6b8d0cf65c9f9c803 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sun, 3 Dec 2017 22:22:28 -0800 Subject: [PATCH 11/55] Add files via upload --- data/advent2017/input4.txt | 512 +++++++++++++++++++++++++++++++++++++ 1 file changed, 512 insertions(+) create mode 100644 data/advent2017/input4.txt diff --git a/data/advent2017/input4.txt b/data/advent2017/input4.txt new file mode 100644 index 0000000..b9f9e0e --- /dev/null +++ b/data/advent2017/input4.txt @@ -0,0 +1,512 @@ +kvvfl kvvfl olud wjqsqa olud frc +slhm rdfm yxb rsobyt rdfm +pib wzfr xyoakcu zoapeze rtdxt rikc jyeps wdyo hawr xyoakcu hawr +ismtq qwoi kzt ktgzoc gnxblp dzfayil ftfx asscba ionxi dzfayil qwoi +dzuhys kfekxe nvdhdtj hzusdy xzhehgc dhtvdnj oxwlvef +gxg qahl aaipx tkmckn hcsuhy jsudcmy kcefhpn kiasaj tkmckn +roan kqnztj edc zpjwb +yzc roc qrygby rsvts nyijgwr xnpqz +jqgj hhgtw tmychia whkm vvxoq tfbzpe ska ldjmvmo +nyeeg omn geyen ngyee rcjt rjuxh +qpq udci tnp fdfk kffd eyzvmg ufppf wfuodj toamfn tkze jzsb +rrcgxyp rbufd tfjmok vpyhej hcnz ftkojm +jnmomfc jnmomfc bkluz izn ovvm flsch bkluz +odisl hzwv hiasrhi hez ihihsra qpbmi ltwjj iknkwxf nbdtq gbo +gjtszl gjtszl fruo fruo +rdapv gaik cqboix sxnizhh uxmpali jdd usqnz advrp dze +flooz flooz qad tcrq yze bnoijff qpqu vup hyagwll +lnazok dze foi tqwjsk hpx qcql euzpj mwfrk +ilb fmviby ivybmf gtx xtg +rpauuu timere gyg wcolt ireetm safi +croe szwmq bbhd lciird vhcci pdax +hnc ykswt qqqmei goe bri wmyai hnc qpgqc pberqf bzs +hsnrb wdvh iezzrq iezzrq rdbmpta iezzrq kemnptg alkjnp wymmz +ngw don ddvyds nlhkoa aaf gptumum ugtpmmu +vmccke qbpag kvf kvf tgrfghb kvf bhpd sglgx +obomgk bkcgo yso ttft vbw ckl wjgk +fli qvw zhin dfpgfjb udsin nihz ovr tiewo +tgmzmph hauzieo jmg tdbtl lvfr qpaayq qapaqy ausioeu jun piygx +jkp guqrnx asdqmxf vmfvtqb tloqgyo ioix gajowri tmek ilc puhipb +uycn zxqm znft ayal znacus kvcyd ekv qqfpnh +fqghur xtbtdd ztjrylr bpuikb ziyk +rvakn uqbl ozitpdh uqbl dsej xehj +laxp haz jyd xnkrb ijldth woy xapl iqgg alpx gnupa ukptmmh +dyiy dyiy ihb qcyxr +wbwkd hdwu zvgkn hdwu wjc sakwhn zxujdo npllzp uyr uyr +fxczpmn cininu akcxs ggslxr riyxe ojisxe +ppbch sampq dnct afikor dnct edsqy pnzyzmc afikor +jnvygtn hijqjxl vsd jnvygtn nqcqv zns odq gkboxrv kolnq wrvd +mroq mroq flsbu flsbu +fyshor xvpaunj qmktlo xoce wkiyfu ukcl srndc ugwylwm ozcwdw mtqcste kpokr +cfh cxjvx cfh cfh uewshh +bpspbap bpspbap fquj mxmn bwls iirhvuk dmpkyt exrn mxmn +tvyvzk ezszod ntxr xtnr och +knfxhy kbnyl knfxhy xhkssx lxru uprh nkxpbx oodolxr tpvyf +nblmysu iwoffs upgof tyagwf aan vovji ajk ywzq oyfi sfulz +aushzkm lcaeki mkuzsah ynxvte rsntd refk pcm +mgguob gobmug dzenpty gmogbu +yvq eepof rgnree nerger fpb stfrln ernger +hrgkbl mzwvswk rsrsbk ieru holco pajvvn ztgsr qkyp fyeg owpcmoj +fowda gmsqdca yugj mcrroxv mqcbojd fjnqfji qdfsc jqs +qnc rvjfz vvxk sjd xrma ucdjvq sbw zydyt dfzww +ocajazv cozaajv tqunkla udwf ecnnmbz lsakqg bki njnda zsdu ccfqw rxpc +qqm qdfya qxyx qmq qfday uqnfttt +rnbirb iapor qet iapor hxkhz dfvzig pedl ybyb +mkgamxg xkniv meb hbzmxjn dhbj zhbxjmn hdjb +ilteux pyutyfx mau lrr bacak +sjjonmn dbbbgs crxyuu jztstgd ezb uiabyaa +tra fle ufzlvf nnaw kec hiwnnlj tei wld iyt syk hjdczb +qmd jtlud dgh dbanock fzp dsjgqru wwvo jwvxwgv xlemfij jcacd +rpkx oxesil snazcgx fly miiyc ikmtmp oefyyn egbw +ypfpeu wldnyd acchppb yqwcaw wldnyd turbz megci nbgxq xkc ypfpeu +iqqv iqqv neui iqqv +ypsxm icqyup zyetrwq nbisrv +viommi toszx dpueq eyy cunjou ffcjc jaeez djefra pxvkj liudlig yye +fhnacbg jghchh ghjhhc iue hwqmo +vbjw lpn cizba ltnsfpz tzoweml irewlc uzckhpd mszal obd +yeos utxkft hflxkfe fxczge qpgigkc ksgr vuumql vhlvv +xzmkv xzmkv krecdi klpem jsbu nwcmik emfzxf cjmpgnj +vtkjo pmiv zou gxo qdiyxsf hwyinjk jhkgf rjq +dyuoc ywiyvch irfgl ywiyvch fxb fxb +tuz onhr syu rqya abkaf bcfx mbknex juwoor zmksl +oheg spjorx ksdy vwtq fxz phvtazk tcze lrxg +hew lbup botaj ltr jpd +dxgc tzinkej gnz hxvvub adsqmc dxgc asgpp rqbdcra goy pmamdua bhiacva +xqv ygb kihxqz vyv pjcny vmyvsdv cgsi nfyx +tqga ssshrw ndq qlbvwh huyd pxbgj qbxk dkkbf jxy chsobw pph +hxl iwph iwph xnr otifm ljhre +zlgvpd kapxpoc dve rklk ogh hgnp rbrmc zzkz hhmcx aklmo +sar gfor nkf hek nkf aql shc aql +dtcrw kfjzcjx qyhi bldson whwdayo mqtgt xhqzp ttqmg +omspdml isze jdl nvwo qrkm wztfg ssfgyh dryj jhp unsmty +jxt cszylng ifht ixtuna azoi xutqlv jtx tjx +usgm azuayp fgkby ezpyq jqwl ezofj +tnhvil nrvg moyrpqs sldx qymoff megflxh pyhqwms xmdw +zomy zcquwnv lzx bvcna yods mjp dgsez +blklyf xokd gpit tiysj yrwfhm tofx +dtig vhdp omuj vhpd +fogwxim qvdwig emdiv jvhl euwbzkg xvxb hwmqo ujdmlp epmykj +sjxll sjxll pedvgb sjxll +drvay gtzhgtx yrt okz nqf +haxfazn pvkovwb pgu tgshw mxcjf pbe nwoymzc mxcjf pbe hydwy jradcr +prjsloa ahylvj okbsj qbdcdjt pmfo pagyoeg vkmhjzt khzmjvt opfm xfrji gyjqyel +lzypt jdbtrad ogr jdbtrad heink +rcoucuq gdxewa rcoucuq whlw zhhm rcoucuq azaqohe mzyli rdvaf +yuag ebcf yuag nsotg qqzuxr jfmao vyucw wmoye +qwvk xemm hgqrr wyxkpp tojndm xlvzypw jus bgnu bgnu nklfwhs +daqi knenmku ccm xkiuy vkexsbc kvvdagx umopitw yaocnx yoakqql mllmsp +mrxgl gywit mfopia ncnsvw vdxek axuiot rsejua nei prndudz mnu +egqn gaa qgen urs mix zbn rhn +ewharq aihy udkdaob kgrdd kgrdd kugbjtj fcef llqb pduxaq wcexmm +dwtiw nelq hppad algxgf gcc upou akm efnb mxmhrud +yxqaa ups okbhgt iet qns tqn rnjqxgp +npmhdm cgds ldexvr typi jyivoqk zkgq vfyxu xgfo +dkwnmr umm dkwnmr okpjw wqx jpztebl eqsib dkwnmr +dxbild wpbup evscivq dxbild dxbild geqp ojfbpl jshvqej +cxdntxs csfocjd pyy tuhws teb boyloz xfw scxh pxhonky +lteucke xrgwy hszgzu hnyrcvb +pfgsgwg dxzh fworek qbstod +usemcrf psczxu gcjtr brls +hjol efxczux bqdn gvrnpey yyoqse gbam ndzyj lbwb bhzn unsezg +bapw xifz blupk qqdk bofvqpp wnbuwyt rnwocu lzwgtt zucag pov +xkre lqvd juf lqvd xio xyg xyg +tzdao ztheib aymcf aorg iyawrch hetcxa iyawrch czdymc ccv +ucgl azlppu jvxqlj pest +dvwlw fuuy mnhmm okrp ualnqlm uyuznba fzyejk yaq crl ctprp +odfq knox mkbcku pxucmuf lpjpol phl +ixongh hfs ruorbd auy qyssl kykwcix aytsm rlj aytsm duq segpqhk +izufsk wedpzh podjkor eamo vqvev ifnz podjkor xrnuqe +twyfps bmdbgtu qye qkwjms +wlav htym vhsnu cocphsj mdsuq vhsnu jflgmrp +opajag itwjhfu purnnvk opajag +hpkopqp vnj aialpt lzrkzfs nwucez nwuezc +mcx hzcjxq zbxr dsx tpknx fva +rlvgm xrejsvn ghawxb efyos xty wdzdgh olahbtn rga efyos vhtm nsr +cni mbab qtgeiow ulttn rckc kmiaju jvbq emyvpew cdlxldn ulttn brhkprx +eykpffp rapik qki fhjgdyu tome ehjuy bibjk htxd vexvag +wrk dpxt gwkuiov gbkif ike gbkif pcd wpj toywyf qzsa aol +yqwzh uujn ujun ujnu +srs ralwxrz yxvvmgp sjhbhk waasid cqtxoxf whcladv jkmaq khjbsh dlavcwh +mdvsjh xaj etvxlsy fxgiy rgjesel rlegesj ptriz ebdyhkp kugxm dxv egljser +lhehwrs mqevb ygmv gri izop qgb ivm +loqqam alojlwg hgen hbyw qlwpun loqqam worgnwk kope +phozre todsknr todsknr ibj mvllsar +wuripy ruwlfbh wukbkey qhq iishw tvtvci xawvxc vxacwx hsiwi ogq +xryq vxwupqa zhqex aquxpwv bnvxrba dtbxki +yvvwh zvsm vqskhp vqskhp ggqqlw bpn wbuv +kqz tdy goqwge ygn jgd +szjjhdk zkpoo nxexz ebicc +wzuemcj oyd qupulju iaakzmt vzkvz +nppahov umm wpzev wxkgfxd owgekp bhhb bbhh dgviiw kdfgxwx wryb +bnc rhes lmbuhhy kwbefga bnc rtxnvz bnc +ani mggxf mcoixh zdd nai hbhzl mes bdpqr +mjn uinoty jjegvze bjgqg yhqsxbt coj obylb hddude xqi rhfbhha alood +cbjzj drmihy tfkrhsd nuhav hihzx bvblqpl tdd szmp gjgfv box +uumhdxd cmwgyf vepr rwqdkj exwk +hwvr ydvw bqefu kghes gvbhp awms iqsqes khgse +mrey jqfw fwvzhps komj dayvs fbui zmtd cofn mrey +dsjds fdpx irjj usndok qcctsvf fgk wvg txwxcl dxs llp zyilwtq +xmkelgk fdukc cye legkxkm wwly +enlny eynln cccku brkz dpof mwfoxcd yftmnqh wpebvyc +ggdn jnysl dsacffw ukj hdae cmzxku +uqhm gcachmn kxndfrl htmfis jfnajz fiqiypr kekho kekho ndcw ckrndub dejfna +keazuq ertql rauwl keazuq obmh rauwl ksrotm +jppp poigqhv repfsje grjk xwkyuh pkx ayzcj hoxzv +yhjw pcuyad icie icie icie hwcsuy wcd yihjh jnrxs +gaug ivvx ceb xujonak hbtfkeb ttciml cctoz +dggyyi dggyyi gqlyumf yasu fwdfa cbb nncn verhq +rhgcw gpcyct kiuhbg kiuhbg gpcyct jlmleo nhumm +wulxxu jyjek hclcp ogob viex wiqcupq +tthu nxgzpid kcnj mss ukapgkp nnc bxjocv qwxs oejwsif aywqtu brahkb +dtde bgvb smu vbbg zhlu +lyo nwjjmep ldbok wgxhto wwuh qfgjknk wnsl +lleyr onha hkwulbm jfg +bybjwd uoxvbh mvj iqfpnxs bybjwd zqtszp wvc lbazjr zkzenja cev +rbuyyr divtslq yuqmyt ajyveb smxsjb nlk tzqhq ims fewg wpjhr gqh +kpewfd beq klilis klisli eeezut +euqh hueq ldoo crqurv lvrwh tmaewp oodl +bqi lzrf jyhvxfh bqi jyhvxfh nbztd lwpdn cuzi +srjylou phavzjd wost uxkaq byh sluryoj +ihrdk bcegkpq nygrs qbcq wyjg dvzme pgzhjl vibg kvv +ijsx iedemek ktlz gtga tbal lbki gtga +vmiaxn kefig kefig vngxz +vrdmfvi qts vlvhq vlvhq dihmq +cfz dyrz zlw qnt vok fwvahg skshbqf hbwozdc ntana jdb uflp +rimbj bxemw sfps krtk umta vnk ewmbx nrlje ymrtqrz mxewb kjxunbt +egnuti ozat eltl ngueti +qtcwoxq rmaf qtcwoxq qtcwoxq +zws gcoa pydruw qsrk lrkybdf ugr wkrxoj nyvf vitwn +tmr hhd dojid zwrj bhsim righ keqlep flzunou +lwoquvy acjowxk tqudk oenvioh nyavyl +rgh dfhgyke iff cpxhuz hui koe iff hui dmukrei +bjiumig lcbmbgh vleipx sfawua rnf +gftfh qwb tfdroe xbno qhgofm vqfoe mux +ljdrr gyfggai iun nju xrucbis mhrcrh fukr obvuqc whlalfe xrucbis nju +nxjmjr egqwg arllu xqaahri lzc ivt uhsti +sqiepba rcmts kvesv nvp +tiksw tiksw rjni gbhvzm ctbq zuqfyvz +ibsnm kfka aoqigwo sqouih rxz +jmymq lxio adtmk umyu sxvzquq bporqnb heol fow +mepa eckq rqviawv dkqoei ifmngpp jiava rtklseu +yuycd jiufjci yuycd uowg yuycd udq izkicbr csxobh +nwu tfsjavb rruoxbn oepcov elxf rruoxbn rruoxbn azglwth jcjm ksqiqpv +dthfwip zqnwa zqnwa zqnwa +gso wruece ufl crgnlxv vllsm dpyfm wpa ctxko +wvpze seodz lpq lpq pmtp wsxs ffppx +yfxquj phvjn rtwieq rtwieq kgxztyu vbjvkc prqqd lyzmdo ojbrt ojbrt qiqjz +esaezr rpggiy jey kbzrhu uthus osr xxaiijd qfxlf auhzbx gkigoqw +yfhcj uvgck cds gjhhrg cmempgj yfhcj cjb +yxi voxvtuw unwg jqqm +igvjr ljz rus sru gbjtjt qfeg ztu zjl +leof ocxns hbkoysh hbkoysh leof +hab lyxmf yhh qeks fwhfxki xmbcak okqjii nfgzyg bhtfgdj lpmjn +mgognh tad herere lvwnzx ixwqs zphmuuc etdjz kczsf +mtej rlolsnn zbl uykek dpkan gmz etxtgj +mihuieo emjgbp jgks mihuieo iexrfw mjdnr bvp mcuzea xkbusvi +jvqpj bwt jvqpj bwt gxr +qpnd fpt tpor bibbpcg hmvguez wqc afl ckviua gpi +dntmcg jglm sxtnu sxtnu sxtnu +fzkbptw cbfwo ozvwov wbv gcdd izqo ovwzov lolewo xikqpw +nkxyxzd kpn datf fki werq mwidqx oiibor zizcjph +xvgyxym zor ijoy lvwsf fjuara idvvq rreit mqyyy ctio tzwqqhj rnpee +maqkfpk maqkfpk xukg sfdmnlg xjopvr xjopvr irf +liujcd vnlkouy dxkwc gto vhjvtw +swhqhj cas aupsd swhqhj cas bvbooii jquck dtdm +igh iqicicf ghi pcxt srcrjx gmf gyscphv +drplj drplj wopgpnk wytag wopgpnk +zexe ilcqoh qiefb txkuv lirfzv +ovvpn ovvpn uqeurqx uwzn hgmucj ovvpn sjxulms +rox silka irhsvym kutus otasof tdneav pcagds +mkja omu tyshbfq onp trxs lxa tftbv bnpl djhnc zdqfs muo +tjj rmmqas cbbkxs qio pikk ykyew gxlxt nhsyl ykyew +frcprg njrz oaxcmhc qben pedm ecvtga nzxwpb ior gaklot dpem +zyt kncau spoe qlchg sqys wkpbng yflju qlchg vkve bzadbpa +qtq pkaicl qtq mfkfqvr dnleiq brrjxsx uoyxh pkaicl yvmlug +firwy imtlp ywl qfa dqrbazz ztzb pcsbwhn zesmlag +ivey ivey mtvc mtvc +lhize acwf moa cdeoazd voktshy qmvqq jvmuvk ljfmq tsanygc +xreiqkc aawrovl pofcsg xreiqkc xreiqkc +cjbzvn ozds iniqu sdoz gqmki bablvll krs vjzcbn +izsod htkeqz entxn qtns prpcwu omfnmoy +kwfb tctzda aztctd tadtcz gyt wunbcub ydiwdin xxk +epnl ijcp giq ltfk zjcabve zfksmz epnl giq xxxbsom +ulyukpa mdjsbn dydko uhkdt qms aaaj hustlwu +zlsbu ohx jcwovf egf zlvpqgx qhejm wrywdmw +uhxqrzr mmu kjxcalj unuohiq rri yzngnb ikvlxry mfiym qbksdx +khqciz som yklmm jceb khqciz jspy jceb +ncwggv njvi nqox krtsn lnm +bgtqme xaxcoq qbtgme obqual vorfk baoqul lgrb +jli tsbb nlxjc pkwzmz dlxrj hmho gzguko ilj iyaasm +wlmw grkumg dynwtyo emxhhqr huluk slpqu uhqcmd absmr ufirmwr +pbs pcammxv dplfr tzvmav nccyy blvyq ffhnz bccutq +hgge ghge vxmvz hqxgjdg zab guo gheg +ylj bucoyoq udndc wpgyrbx ueh udndc gxdsdh hdoz wwgqlg +cjdeh gttyqe kdkm ltzd lfeozse quvjq mnwhokm kdv oojxm nxt +mfkzus knqxt saxkqww njx zumsfk sbmcyad cpt agvbuv +tukn vyco yobvsn bzgnn klrnzy kea thzk pxpwq ryfff nxzm +ylbm lxlz lybm lzxl +wgtxoij zad slgsi cvnxfg iomswwl vmx +hkm yinhnkj kmh kwkw kayknck chur styjif yknakck +rtfwhkq rtfwhkq zsf zsf +sldq zlntr ueegiw kajivqc ozcbm ceft snvugom pdyc elppeed nnqrp prwwf +lhk xjonc muc tudag tsafx mmivb dvrjbp qgrew +hnzer fbgqp aazta aazta lxaz lmgv aazta +victgxu victgxu mlpd ummrnbx cazjgnw isxcyp efy zfa cyusj +gyojxo onzq gyojxo uxufp awi ilhl wefwfxr gcjlt tmliynw uxufp pdcnxah +wjwachn xkuhfbp oky oky ybaeqkr rbuix yreoaw wepmye brvon aasb +kiidorw vxtxiqx wtqvbrv efdth isel qbom vcssyc vxtxiqx wtqvbrv riafzsw mqzsj +eurpjd vkhdamt tmfx czeoot hiz ykz lmixzq tfur jhzr +ipuftpj qbll sqkkdw fwncmiv bri oeeh lehd ioh wag +suima nanngc imrmc krq atxdo woy atxdo akev qlr aezco qlr +cfc efwbzck ozkmcxv moczkvx ccf +bnekky iakrk sask uwgnjp iyi rynev bdnas ldh kass +sicmw vvjbvv cap nsumc xgvrlm wsoo uoqdu psykckm +ugg mtr wnzhmmh tjxc ehwnji lwhu mdsckk yvmk enubrqo +grb oxmxz ohu ytetedv ssx apzlppg fdkamm sxofc jdt ynmu wyejok +umoep rbyqm eqfk twqnog cptbbi dragna ngqs ffb cexxnc rbyqm +utizi ormkel wvwur bdx ecelqbv xiccama aag glfvmj +znb rsuqoa uxo svc +obs lbifa cffi catpd +qkxwian ajlzjz wewduzp bbyv qmt fsr qgiu epinp ghmf +hatg bfgmb aght ghat +kuq inp dun cknbun wmwsu drlmmg kyxc bdl +bddybth swdbf jhi fva qpobio bjwm wjaztp jywi +mgckz vhveu zkemhp zdf xtiqqew mlx wazgd +umbjq pya lvvxf jeavij rhrxvew bwjqgpr piz +xaycpwo vjcuc qksc yuixhni sfbfb dydyaq gdfvb tggg xidphvf bpjdrl goskxym +agxfoip gguif wvo agxfoip ntkbaw fbyggy ooft zxih +nzvsu ffwq uxvfbl qrql olhmhom qhdltg ymwz krtndtx olhmhom nfsv krtndtx +qdp jqk ustz xjripzv mnk grnodk pjwdsj uug zqxjqj +mufrcox zunisfs ocvcge acamm xua vor bsde kxr vor kxr orccxx +ncycbp anvcxay bmm wndmeaw oso knmk mmb wamenwd kmkv ppdd +motdcn xzagzwu vuzt utffrn yuqxzrh uvzt ujttq +tauoqy coiy ybesz tauoqy wpmr trquyne ahxbj jzhems dsdy +aczq ypw pgmzz srfn quatjgf +cih ypapk bfxvr euvhkk gugru auhqui +vyf pssgfvy dnhvbfl xpacme dnhvbfl mzdv iynq hcqu +lbzvbu hhxiq hdfyiiz iyzihfd xhqih uzdqyxr +iapbdll vdr cprmrkk vdr dfjqse mlry flpqk vdr +grrfkq xcpxd grrfkq dxc bjpr prvwh swoc swoc +bopo chvwuhf qhd ieesl xey ieesl fnjcbe +kic fyq hsucnu agwyl pzzmd hqksh psw +mxf uau iti lcoz lpg zbu ocre wqlocmh mxf nidqj lcoz +bypmix ptzxgmf xmtzgpf hrvzzq +lbfw zwusma lbfw tuyyy +lrf uej unswvh obgsb npbl zajr kenea uej qnyjcu wzufim qpzkgya +qcrxj llyu kligt hlm ehwtbx dda lgsvhdt xewfcv uikn +nfzjx izqdbq mfbxs imiuc yqxb xlmvix izqdbq eflqfq wku omgtuu izqdbq +lasdwg hiy btzt eefd eyoep icn nnmhg otml rek luixac nyzgn +vekteds utsuxdx utsuxdx vekteds +feyov qrij zbebwg ijrq seplram wttkwm zewbgb kzuhuh +dmkgtv wohgqo ddtqmv zatahx mym hqowog tkmvdg +vhha wjrmuyx kqh vyyrj xzchbi ejsdq orlxg vyyrj dlrc +yetngqn zdtuqox hkarjei fqpsgh eaqwbg zsssog ghb gddqqzr hbg +obldb zsrhz zxp uxphnev mwnbc pfjft fms xwslk vjm fxy +nfij dbfykv ttq gyjgac igxuyqi gtiioqx ilhdex dbfykv uyp bdiwya gqf +pffzruz vogfosh dcs wje +pohhf fhpoh oon yyz +xxuam afwm qxl lnt syyr bwxhhf sozauq shlhfmz kwnn milav ochq +wefcqrt gejw cwerqtf fttf gjew +jfsvnmr osca epwtle pgfif sxom +exlfzmq nakp rgdnx rrcvth vhrrct aajjdrt ryyg dsozd jdqlqj pakn iruv +rmcvo txszcs xxhyxz hbsozk wshkocf rmcvo rcbnt +kitz yjgney yvkymef nauj hmllsgl kyhm kqr pzsu rcf pzsu qpte +cdinpx bfur mkj naz ihkheyr nohhoe +ylris xeqcgup wap bbfih tgfoj +ina gnlnm zyeqhij cudfuf ipufae bvkdzni aat teqsg cudfuf bjokrbl teqsg +aedx edax dnfwq qndwf +rdngdy jde wvgkhto bdvngf mdup eskuvg ezli opibo mppoc mdup zrasc +qcnc iaw grjfsxe gnf gnf +zbjm snznt zelswrk gkhlnx dqxqn qqxnd dmro +zisecvx ztezof uzbq otnrtj qsjzkwm ewvcp rlir bfghlq tgapdr qxmr +ipnqj opjf vabyoe wkwnd +wyf mfqxnrf apm snarf jqu aaghx pwecbv lvghayg +acncv jmmbwlg oiphlm ifuo cvt +pvmb egansnd zmh gcuzzci rrxpslv ubith +uoleptg xbouzn xbmg cfh cpn wpqi xbouzn xtxis sxzpns +rilybri kurbpq vfmjpck tjyogho hfyxad svfofx lfbbhxj khaerfs iqr +seaebgz wlmtkre qguv qguv wlmtkre +sgo edkxya zdqgwtt gxu nibuu rairqoq mzxli dci qsv +tsol mdhzqr rmaqnru ggvcq arbwkn hlkcnj ljkcuof +mmliphp ocup puoc eijjv +gmajqpb ijki ijki kvz +pmqss unhlpcj dlkll nuhlcjp expe tlurzmv nsy vlumtzr tgseozl +gkvaoni hsba hsba viuedv phyoclp fdq phyoclp febld nqfs +rxvdtw abn pntv qrqfzz slsvv abn lrxix mnu npot +ghlfjp woy xwkbmv bkahpkj jve cncvk jvdype fwgvoju yrkwjp gwfvln mvkv +kmluh mie bby fwer chsinb ojglqr nqk mie +yzmiu igkgca ybnsqja jpfejtp yjddy xsosxfi ingx qwuhb emrkwpx idqjmmm +btrllw mphm dkvo ewdl dchcul yah btrllw kmqi mtvgk wtb +hxsgard yuikc lykt tdee adprp gpougod klnzk mzsmlb +hdn znblw ifoblur bwzln dbv +smofpbs vjuyiro llk lfzesga tybu tybu +gffnpug xaup iqiyz fjkpnkz drrk fwyxw lwzfskz gslwpmv vjxylva tbkyo nib +evydmb nhwuiiu fkerq nkgbuyy uclrs ydjgglh xhotwbm riirgzt +bsub eavbt uvd dpzwyt rhn khrbptt xszckc djnfxju axofhat powmso nvdffrv +xtuykl fjz mbikc xpnx hmey fjz fjz +rkls nwdcsyx rkls rkls +tygml untequ ybdfumz nqffbq uipc sove hfnqj +ytecew vven koqn royynd qsn ksl qsn sdw +hknlw qwho whoq oqwh +lzmmtqu qvhyeo cnofuj utpwkjz gnirz yhhu aodbnd +zsr axw kwtzcv tydzo kwtzcv lkxsm +rbjtqe nihifd gvdxd bpxzy rxteky vgcgllv vbbua anygiup rqo +dpd wblfwp wblfwp wblfwp ygahc tqjbaq +gsw gsw pacgj xmrcz zmxhmch xmrcz +pdq rhe xqmq lgpkhg fyffrot ovnqh wle +tbjavke ypzzrj jizx gdxoh icjsat otfh fmygumv +snch nxlgjgp jeyn sxoqfj jtage jtage iuice +rtb coefuj grwg grwg rtb krhqnma vfhgbr +vhegtl btorwxg szcev kbvkx itsk nlzpbed +hiukrf ilzkm yllhh xsgwkdp zyy kjbv +rfcg tdorci zcj wzftlv rfcg rfcg +lgbc lzizat vsno pau nvv vsno bbr lzizat qhtb gwp +sfwnio tcugjk bsfsz ykyfwg ibkap fsrvy mygk kzunawx zyhyh +mpavlh qps bylh lttjkz rqabgk vewb bwev tlzkjt gzrbxga ktmso prpkj +gpf ims ynh ffrs vpa iemp gofh cgbauje +secys qks mcnfhwh drog kqs pajy zoltkw lfihnb myb ioxptu +ytq nrta ouk ajqblf yuwwcd zdy blyoxbw dakk nvgi bzrhzaa +nkoych sufiia xkdvw crtldee zycl qblab egqhr qblab +nllno muxaf vds qjnitmw zkpj wskyhft kmqct xamuzpw qcai cdjtbt kaxv +qzdytpe osr fuw osr qzdytpe whperd rydwdcl knoa +zkdznhd peh duoygr zamrgl irnvj otpe pltpq jdkecg +byzgw rece iigdug ehif tpgje +ccnn foqdran gbctca tefdjxh ntcr rjciii xip xlss crl wvvhzqm twyohf +dqyii milqqc qjgkojp qjgkojp ryde +tdkyj tbrcud tsba vqtmb cjwxnf +hqhmq wemvrce nagig pwnw nagig epg nagig vlsi +tqgvw luoplw hccti npjm rytdruq cylrsun rytdruq vjsbjl rytdruq ppti +itgt tuwc itgt rvp itgt tigns eipl ksmru +pdw wdhtkn nbdbpn wff zhuuipg rvemv qxr +qgkwdq cjilayh ymeks mrpuzai dwgs stfstgz ucvqhb yout oiq +vpxik ypfr qytimvu qms oxbmw ppyfx +fwwidn gdhd pyuexk snsz iwndfw +lfcb sllxjna lfcb hpzahfg mmvgaa svny jhuzd +unyg gicmzd fwc spkciy toyq wjupckd vzzx iuqgka ytqycb pxsufj +goj tnrcml eyizngj txa xrkiw zvu igduz +wek xrrlkna clyof rrlnxak +cjm rmyuku vjom gtf +buk cfae awstd dywgqp hxo wcxvf laihqw xdqfes wdbh qceh uzlwj +sudguo dxwplto rlebdh bkamu dxwplto +crwkyxm yuz kjtdhom crwkyxm +trhc sduorxr aizfryh rsudxor gbyc +pczkyl bptp qnn nxmpwsx udrg hhlb rubtrmx twzodlp xygnht +jmqct cden yfajtkz fevcw sxonbxz sxonbxz qkzkm hhngr fbv +sdsnm mwvicr wypfi cty ndbowr woiz mrauwzd qlno mwvicr +vteyo fng lvr lxytn txpj milg +wjx ahtmgo cgwcaj kaxae fhlvlqf +ezj eetqhzu upwda iiefwlk vyvby +imalvy yeghqe jwcu mvrod cwju +bxnmsa yhfu npsdar tsbri hfuy sirbt oofxmy +fkndt elbjtn vepqtxt elvpf fpelv bzkgag qttexpv prblwb +rmq iqs yvprnyy iezqrzm wlqsrr +yviovq lekxghj oey qwhzj lxknxw qiyovv ksnt jptz +tyrg cifxt hugqf tyrg ffuiv jmax qyw fozfosq ffuiv +nmg rsl jpzazd qbtlf yxqtsj czwmdfd bamge lbjdof uqy jssc +cbx boozjip pwgvzlq rjz kxy kxy hszacok fvsq jhnir cnsba gafz +sbcuxb wfur nnnfqjj fdwg huhe sbcuxb +icwk qelbxs uevp qped zsnhh wpuok wddxsln ftnzupr ruxol cgxjb jbhh +izcp htykj xxmndoq amnspe htykj +vverol oixwlny vqd tvfzu henc gnyrwr +ytxio etytsx choynep zqapo hfjit +lkvgr oyzfa taiqr jok djatvy ckif tmdw oyzfa zroy +jlgpyp kkqysg oqjki hjohoug hbhta muilz zft +sumfyu wftcu bwwdcy lezimwa qwvxv zwh mqyv bmfot aii torcol rnt +tpdj xrw ccsbnh fhptv fwkxjfm dmqaokd bjci +zxi vmf vmf dpyg +sfzxysw lcms bkojtv bkojtv +opywo qll ipkitr mtwp tudrr svhyp huz bxsdpn xomfy +gkod luo qrosbp orbd rpsjzyd rlh gdok tze +nusiuq nusiuq zeys ahufexc +veno jntg avtmtdn qojxru zegdcql odfcetz pgehau +uqun vigjm ykac ozlelj danmji bibugox +rpuozh ajwru rbvuevv uhzsq +iawoe tyb aewio ymf byt inijv ctu fcys micsgzl pbby alt +gktyxp ris mqpfm bkqsfl nrg idbbcxg jhcf +qibt invvv qibt luitx rnm eby hrfbmwl wnap sgkzvb qlwc hrfbmwl +jwkv qecsjbw lycgldd wjvk tjcp dycldgl pzrvr zrlcf kji +nzsrmiq nmhse ilivrk kqv +besmyzi imkgpt iekbjax abxeijk uvzs wwv +jdocl uki ltswp tjkljc ymce iuepze qygqxzs tei lkry +hhyfy gvzd mqksxlq czn afe mesnag eep frwgekg mqksxlq phpy +ehg connnza ekt ddgokw +mpbsoms uzhzl xevww ztt uzhzl +lftybr firc awsud dsxdkk ltf ipjv dtx lcymth +vkcpb gxtxq yioeq fexj xxgqt +srvca fslnnvf nfmkpvt egw wemumq jie vznf dzsjw cukf kcvyir +yxjkl lyjkx jyxlk kgc xtz +tpoe xzov csp leleoqo noyre tdhf cyib sjgtdx raehdw nmcxp +qvt uhznqe bpvos vtq ddlebtd tqv +xlw utsxs gpia rvlvnts elkxr dddihy tnrslvv ibf wlx bxg +cwqnnrt rkkqyf dye yde fzl pthanj +boc rqjenpp xjqte jteqx pvoofc pidqe ruoucy gvnro ognrv +qhalb gnazwc fhl iuti +clnbjfo nnfs nnfs heymvr oarew oarew nxu +lwtrotg hiaxwj ymzbly nvhzjhj zlsaheg nvhzjhj ymzbly +rrvi tsjp tsjp tsjp killji +rpx hiclj cmwq ibhj nfd +pvwymn iebkd xmpw vuhhkap ksw zigzy mzzyyxy rmuh iwwhea cglfq +rlwelgy sffml jin qsdzro xlsty mgqzuu etxjuo emzd jgnoyq tkjuy vfvb +tkctdj hhkuc viskmy obw +zvjkuj akeky ikj jqd hfhzbwe bkc +btev nrdo hcyiuph stf qharfg vpmel mpfz nvs ytgbbc +ieepn ndueuw svmdr tcvumw mceyrn mrjwhyl tbdj mgrgvz +uxrs ckyi xpmqm czzrkl cjp +nlliwd wrqkrkz yjmng nlliwd zirde hcjjn wco ysf mgl +dxti lcahe ommare izlwf ramsfb nzgfvo ijvm fwymrdu bndq +isxy jpvuzu tdduyhw dixp cfa fkzbteg ytoi kepk ysf yqcpi +qmeprfj soqo ncgeor cqsuuj grzy wogxy vyblnbg slvtry vdols kka +ltykfp gtzl olrp gxend vapee deq +emywfbn dbfiut rkt wvwe dbfiut bwffhea yuzcxv gogpicp wvwe +vqvmrp ofbk dlfabd jwllzxk obx vqpwjj umvng tqwis fstxy fstxy +miha zgvyux rmraszo xwf +kjaagk btm kjaagk wkewjrg kjaagk +lbmli aizs omrdr gzktnx asiz ptanzpa xlo ljre ckyb wob +svz dlk rijagg avxmg fkzwhk uro gegm +dzplum temdw jqnm tvxcww bmg tftttpp deuw comxey xfimzjx caluczi nqn +uwvhxa ztkd nlsdyt vihl julkwwv uzch dwakhs +wkhuihh ycrc cxff vzcfhpp uegfd gaok kcnvz lhzogq lwa tyrypvu +idp zmrrzp zmrrzp nktp xsnx rjsxn +eybrnib ivgntl vaxsbpi eybrnib +nzvnq xvbfa pbhwwh ylju runvsj imlx vztesn +nfdohd nfdohd gtevnky pivjyct ihvd fzcsrq lko fmqk +kwpkks ecikxu bcxswlt qvrxm sbcqmh +kdjrmj piuh kdjrmj vnaf gyedkg vptxgm xezssxx zsg qjzpo zsg +oqo sley aqx qmpqb fgmylbj egd zivj kepxizv kuakyn lunbnd +hmcf hmcf xlhgc hmcf cdlm buofnx +onjcj yluonz kzmk phqo phqo phqo +ohaafy efl bnkkjww wwjnyoj dxeaig ywnjjwo slk hrbebw ohlyju elf +msohiqz aunk njki bfktdgi htmyrj mgx +numlzrl rmnlulz glb ltt fhbajz gqxpu +gko hco oai ryq xwy sdqosft spjkiu cxfhg ycwpglh noy rah +btzpjem brpk vqr atxu rhlh rqv jmg fvyus +phmxxgj ejx xje qtk hsb kqt npwj gqt +hujyjp nwmsd ant zipuya lrkahww uwqal vzlo qmbo twkjkse ufivi +zfbnyz fwvh xrnrw usn zin daq iwjzj +yykyg iwypfy hehqnl cjvk cevdrec +gui muuto wsta glqmx gfo rdmbv mxwz gffzt eejpw gion +lpng nduid iqbpu nduid knrqd +xwxn oefpckv gjaua ugaaj gjuaa +qxk aeql trqdmqc crzlinj crzlinj trqdmqc rijcne ewyf +rfv qmbe fvr bmeq +upqyfw lowzq wpen upqyfw gfskbil sljuzh wpen +bdcara qyhx rtaez qyq gbyr +evzls qxtxq clzd svbgqi zxlzgss vtrre fko eebo qjyl +zaapeo kpwhz tygknau nyd pch trp xqe +ypzcafg rnqmbh qtteg sncu ssojhhm zonfym thir xmgheb wqj gpjg ssojhhm +wvcwyn xrf muozyya lasdp xpjgu kpqv zkiihiv ifje cbdlavg xbied hfnaa +qqqb rettz rycukl ihpkhh +dnxzxqv znb znb fbxj azxtezb xvxa +peqkd xlzqkov esgnw ucku hrwpfxd xtd vnig vlmfp ajte qswr kqoj +dpwy oavzkk dwyp ehij upqxgii pydw +amfc hfv xmqa nqvn cal rqmcq oej amqx cla ntxj +hqhhe qkbhwli wmhlcq xaczs peywuo +vcr xfv xfv kymo qpszwzo xfv +nmrbur tswo xbo ljlrzo bmhpgc pev zovkznz lok wbbhtkk +tojj lxqgr rhjavrm ndsdup gdbjwaq cqpnl wfaxivl rfry ryfr udspnd +beffod sknlph amb feobdf +mldgn jxovw yuawcvz kzgzwht rxqhzev fsdnvu vluuo eycoh cugf qjugo +tlnd qcxj ker fdir cgkpo nrqhyq raef uqadf iahy rxx +mhvisju lhmdbs tcxied xeidtc ujry cditex gvqpqm +cgc jazrp crgnna uvuokl uvuokl uoiwl sknmc sknmc +rvbu czwpdit vmlihg spz lfaxxev zslfuto oog dvoksub From e0b802994f6e14cf6474f9a730828b60374b7771 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sun, 3 Dec 2017 22:23:08 -0800 Subject: [PATCH 12/55] Delete input1.txt --- data/advent2017/input1.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 data/advent2017/input1.txt diff --git a/data/advent2017/input1.txt b/data/advent2017/input1.txt deleted file mode 100644 index 8b13789..0000000 --- a/data/advent2017/input1.txt +++ /dev/null @@ -1 +0,0 @@ - From 040b6fa93dfdc9ef4b5254e2b13099b123b95d43 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 4 Dec 2017 00:31:05 -0800 Subject: [PATCH 13/55] Add files via upload --- ipynb/Advent 2017.ipynb | 455 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 416 insertions(+), 39 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 3f07891..1b84775 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -8,15 +8,19 @@ "\n", "
Peter Norvig, December 2017
\n", "\n", - "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). But this time, I won't repeat the write up my version of the puzzle description each time; you'll have to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to read those. I just show my solutions.\n", + "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). But this time, I won't write up my interpretation of each day's the puzzle description; you'll have to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to read those. I just show my solutions.\n", "\n", - "First, a set of imports and utility functions that might prove useful:" + "# Day 0: Imports and Utility Functions\n", + "\n", + "I might need these:" ] }, { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "# Python 3.x Utility Functions\n", @@ -27,9 +31,10 @@ "import random\n", "import urllib.request\n", "\n", - "from collections import Counter, defaultdict, namedtuple, deque\n", + "from collections import Counter, defaultdict, namedtuple, deque, abc, OrderedDict\n", "from functools import lru_cache\n", - "from itertools import permutations, combinations, chain, cycle, product, islice, count as count_from\n", + "from itertools import (permutations, combinations, chain, cycle, product, islice, \n", + " takewhile, zip_longest, count as count_from)\n", "from heapq import heappop, heappush\n", "\n", "identity = lambda x: x\n", @@ -41,20 +46,23 @@ "inf = float('inf')\n", "BIG = 10 ** 999\n", "\n", + "################ Functions for Input, Parsing\n", + "\n", "def Input(day, year=2017):\n", " \"Open this day's input file.\"\n", - " filename = 'data/advent{}/input{}.txt'.format(year, day)\n", - " try:\n", - " return open(filename)\n", - " except FileNotFoundError:\n", - " return urllib.request.urlopen(\"http://norvig.com/ipython/\" + filename)\n", + " return open('data/advent{}/input{}.txt'.format(year, day))\n", " \n", "def array(lines):\n", - " \"Convert an iterable of lines into a 2-D array. If lines is a str, do splitlines.\"\n", + " \"Parse an iterable of str lines into a 2-D array. If `lines` is a str, do splitlines.\"\n", " if isinstance(lines, str): lines = lines.splitlines()\n", - " return [mapt(atom, line.split()) for line in lines]\n", + " return mapt(vector, lines)\n", + "\n", + "def vector(line):\n", + " \"Parse a str into a tuple of atoms (numbers or str tokens).\"\n", + " return mapt(atom, line.split())\n", "\n", "def atom(token):\n", + " \"Parse a str token into a number, or leave it as a str.\"\n", " try:\n", " return int(token)\n", " except ValueError:\n", @@ -147,14 +155,14 @@ " \n", "def canon(items, typ=None):\n", " \"Canonicalize these order-independent items into a hashable canonical form.\"\n", - " typ = (typ or (cat if isinstance(items, str) else tuple))\n", + " typ = typ or (cat if isinstance(items, str) else tuple)\n", " return typ(sorted(items))\n", "\n", "def mapt(fn, *args): \n", " \"Do a map, and make the results into a tuple.\"\n", " return tuple(map(fn, *args))\n", " \n", - "################ Math\n", + "################ Math Functions\n", " \n", "def transpose(matrix): return tuple(zip(*matrix))\n", "\n", @@ -163,11 +171,11 @@ " return int(n ** 0.5)\n", "\n", "def ints(start, end):\n", - " \"The integers from start to end, inclusive. Equivalent to range(start, end+1)\"\n", + " \"The integers from start to end, inclusive: range(start, end+1)\"\n", " return range(start, end + 1)\n", "\n", "def floats(start, end, step=1.0):\n", - " \"Yields start, start+step, start+2*step, ... up to (maybe including) end.\"\n", + " \"Yields from start to end (inclusive), by increments of step.\"\n", " m = (1.0 if step >= 0 else -1.0)\n", " while start * m <= end * m:\n", " yield start\n", @@ -185,6 +193,9 @@ "def X(point): x, y = point; return x\n", "def Y(point): x, y = point; return y\n", "\n", + "origin = (0, 0)\n", + "UP, DOWN, LEFT, RIGHT = (0, 1), (0, -1), (-1, 0), (1, 0)\n", + "\n", "def neighbors4(point): \n", " \"The four neighboring squares.\"\n", " x, y = point\n", @@ -197,13 +208,13 @@ " x, y = point \n", " return ((x-1, y-1), (x, y-1), (x+1, y-1),\n", " (x-1, y), (x+1, y),\n", - " (x+1, y+1), (x, y+1), (x+1, y+1))\n", + " (x-1, y+1), (x, y+1), (x+1, y+1))\n", "\n", - "def cityblock_distance(p, q=(0, 0)): \n", + "def cityblock_distance(p, q=origin): \n", " \"Manhatten distance between two points.\"\n", " return abs(X(p) - X(q)) + abs(Y(p) - Y(q))\n", "\n", - "def distance(p, q=(0, 0)): \n", + "def distance(p, q=origin): \n", " \"Hypotenuse distance between two points.\"\n", " return math.hypot(X(p) - X(q), Y(p) - Y(q))\n", "\n", @@ -223,9 +234,11 @@ " if re.search(pattern, line):\n", " print(line)\n", "\n", - "################ A* and Breadth-First Search (we track states, not actions)\n", + "################ A* and Breadth-First Search (tracking states, not actions)\n", "\n", - "def Astar(start, moves_func, h_func, cost_func=lambda s, s2: 1):\n", + "def always(value): return (lambda *args: value)\n", + "\n", + "def Astar(start, moves_func, h_func, cost_func=always(1)):\n", " \"Find a shortest sequence of states from start to a goal state (a state s with h_func(s) == 0).\"\n", " frontier = [(h_func(start), start)] # A priority queue, ordered by path length, f = g + h\n", " previous = {start: None} # start state has no previous state; other states will\n", @@ -248,6 +261,82 @@ " return Astar(start, moves_func, lambda s: (0 if goal_func(s) else 1))" ] }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pass'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def tests():\n", + " # Functions for Input, Parsing\n", + " assert array('''1 2 3\n", + " 4 5 6''') == ((1, 2, 3), \n", + " (4, 5, 6))\n", + " assert vector('testing 1 2 3.') == ('testing', 1, 2, 3.0)\n", + " \n", + " # Functions on Iterables\n", + " assert first('abc') == first(['a', 'b', 'c']) == 'a'\n", + " assert first_true([0, None, False, {}, 42, 43]) == 42\n", + " assert nth('abc', 1) == nth(iter('abc'), 1) == 'b'\n", + " assert cat(upto('abcdef', 'd')) == 'abcd'\n", + " assert cat(['do', 'g']) == 'dog'\n", + " assert groupby([-3, -2, -1, 1, 2], abs) == {1: [-1, 1], 2: [-2, 2], 3: [-3]}\n", + " assert list(grouper(range(8), 3)) == [(0, 1, 2), (3, 4, 5), (6, 7, None)]\n", + " assert list(overlapping((0, 1, 2, 3, 4), 3)) == [(0, 1, 2), (1, 2, 3), (2, 3, 4)]\n", + " assert list(overlapping('abcdefg', 4)) == ['abcd', 'bcde', 'cdef', 'defg'] \n", + " assert list(pairwise((0, 1, 2, 3, 4))) == [(0, 1), (1, 2), (2, 3), (3, 4)]\n", + " assert sequence('seq') == 'seq'\n", + " assert sequence((i**2 for i in range(5))) == (0, 1, 4, 9, 16)\n", + " assert join(range(5)) == '01234'\n", + " assert join(range(5), ', ') == '0, 1, 2, 3, 4'\n", + " assert multiply([1, 2, 3, 4]) == 24\n", + " assert transpose(((1, 2, 3), (4, 5, 6))) == ((1, 4), (2, 5), (3, 6))\n", + " assert isqrt(9) == 3 == isqrt(10)\n", + " assert ints(1, 100) == range(1, 101)\n", + " assert identity('anything') == 'anything'\n", + " assert set(powerset({1, 2, 3})) == {(), (1,), (1, 2), (1, 2, 3), (1, 3), (2,), (2, 3), (3,)}\n", + " assert quantify(['testing', 1, 2, 3, int, len], callable) == 2 # int and len are callable\n", + " assert quantify([0, False, None, '', [], (), {}, 42]) == 1 # Only 42 is truish\n", + " assert set(shuffled('abc')) == set('abc')\n", + " assert canon('abecedarian') == 'aaabcdeeinr'\n", + " assert canon([9, 1, 4]) == canon({1, 4, 9}) == (1, 4, 9)\n", + " assert mapt(math.sqrt, [1, 9, 4]) == (1, 3, 2)\n", + " \n", + " # Math\n", + " assert transpose([(1, 2, 3), (4, 5, 6)]) == ((1, 4), (2, 5), (3, 6))\n", + " assert isqrt(10) == isqrt(9) == 3\n", + " assert ints(1, 5) == range(1, 6)\n", + " assert list(floats(1, 5)) == [1., 2., 3., 4., 5.]\n", + " assert multiply(ints(1, 10)) == math.factorial(10) == 3628800\n", + " \n", + " # 2-D points\n", + " P = (3, 4)\n", + " assert X(P) == 3 and Y(P) == 4\n", + " assert cityblock_distance(P) == cityblock_distance(P, origin) == 7\n", + " assert distance(P) == distance(P, origin) == 5\n", + " \n", + " # Search\n", + " assert Astar((4, 4), neighbors8, distance) == [(4, 4), (3, 3), (2, 2), (1, 1), (0, 0)]\n", + " assert bfs((4, 4), neighbors8, {origin}) == [(4, 4), (3, 3), (2, 2), (1, 1), (0, 0)]\n", + " forty2 = always(42)\n", + " assert forty2() == forty2('?') == forty2(4, 2) == 42\n", + "\n", + " return 'pass'\n", + "\n", + "tests()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -257,19 +346,19 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, + "execution_count": 3, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ - "raw = '3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763'\n", - "\n", - "digits = mapt(int, raw)\n", + "digits = mapt(int, '3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763')\n", "N = len(digits)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -278,7 +367,7 @@ "1158" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -289,9 +378,16 @@ " if digits[i] == digits[i - 1])" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**:" + ] + }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -300,7 +396,7 @@ "1132" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -315,7 +411,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I was able to do this warmup puzzle very quickly; too bad I started a few hours too late to make in on the leader board. I created a recurring calendar reminder so I'll be less likely to be late in the future." + "This was an easy warmup puzzle. I forgot that Advent of Code was starting at 9:00PM my time, so I started late, but even if I had started on time, I doubt I would have been fast enough to score points. (I created a recurring calendar reminder so I'll be more likely to start on time in the future.)" ] }, { @@ -327,8 +423,10 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": 6, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "rows = array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", @@ -351,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -360,7 +458,7 @@ "46402" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -369,9 +467,16 @@ "sum(abs(max(row) - min(row)) for row in rows)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**:" + ] + }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -380,7 +485,7 @@ "265" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -396,9 +501,281 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Today I remembered to start on time, but I was too slow to score any points; the best I could do was 112th place on Part Two. \n", + "This day was also very easy. In Part One, I was slowed down by a typo: I had `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"`. Later on, Alex Martelli explained to me that the message meant that in `abs(max(row)=...)` it thought that `max(row)` was a keyword argument to `abs`. \n", "\n", - "In Part One, my big mistake was typing `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"` and pointed at `\"max\"`." + "In Part Two, note that to check that `a/b` is an exact integer, I used `a // b == a / b`, which I think is more clear and less error-prone than the expression one would typically use here, `a % b == 0`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 3](https://adventofcode.com/2017/day/3): Spiral Memory" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "N = 277678" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This one takes some thinking, not just fast typing. I analyzed the problem as having three parts:\n", + "- Generate a spiral\n", + "- Find the Nth square on the spiral. \n", + "- Find the distance from that square to the center.\n", + "\n", + "I suspect many people will do all three of these in one function. That's probably the best way to get the answer quickly, but I'd rather be clear than quick, so I'll factor out each part, according to the single responsibility principle. My function `spiral()` will generate the coordinates of squares on an infinite spiral, in order, going out from the center square, `(0, 0)`.\n", + "\n", + "How to make a spiral? My analysis is that, after the center square, the spiral goes 1 square right, then 1 square up, then 2 square left, then 2 square down, to complete one revolution; the next revolution starts with 3 square going up, and so on. I'll call each of these a `leg`, so `spiral` consists of four calls to `leg`, with increments to the `length` after every two legs. \n", + "\n", + "One thing is less clear than I would like: the variable `square` is modified by the function `leg` (in other words, it is an in/out parameter). A small test confirms that this matches the puzzle description:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, 0),\n", + " (1, 0),\n", + " (1, 1),\n", + " (0, 1),\n", + " (-1, 1),\n", + " (-1, 0),\n", + " (-1, -1),\n", + " (0, -1),\n", + " (1, -1),\n", + " (2, -1)]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def spiral():\n", + " \"Yield the (x, y) coordinates of successive points in an infinite spiral.\"\n", + " length = 1\n", + " square = [0, 0]\n", + " yield tuple(square)\n", + " while True:\n", + " yield from leg(square, length, RIGHT)\n", + " yield from leg(square, length, UP)\n", + " length += 1\n", + " yield from leg(square, length, LEFT)\n", + " yield from leg(square, length, DOWN)\n", + " length += 1 \n", + " \n", + "def leg(square, length, delta):\n", + " \"Complete one leg of given length, mutating `square` and yielding a copy at each step.\"\n", + " for _ in range(length):\n", + " square[:] = (X(square) + X(delta), Y(square) + Y(delta))\n", + " yield tuple(square) \n", + " \n", + "list(islice(spiral(), 10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can find the `N`th square. As this is Python, indexes start at 0, whereas the problem starts at 1, so I have to subtract 1. Then I can find the distance to the origin:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(212, -263)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nth(spiral(), N - 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "475" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cityblock_distance(_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's the right answer. I was slow arriving at it because I forgot the second `length += 1` in `spiral` and it took a while to debug. (I had the right analysis, but just left out a line of code.)\n", + "\n", + "For **Part Two** I can re-use my `spiral` generator, yay! Here's a function to sum the neighboring squares (I can use my `neighbors8` function, yay!):" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def spiralsums():\n", + " \"Yield the values of a spiral where each point has the sum of the 8 neighbors.\"\n", + " value = defaultdict(int)\n", + " for p in spiral():\n", + " value[p] = sum(value[q] for q in neighbors8(p)) or 1\n", + " yield value[p]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 1, 2, 4, 5, 10, 11, 23, 25, 26, 54, 57]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(islice(spiralsums(), 12))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks good, so let's get the answer:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "279138" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "first(x for x in spiralsums() if x > N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 4](https://adventofcode.com/2017/day/4): High-Entropy Passphrases\n", + "\n", + "This is the first time I will have to store an input file and read it with the function `Input`. It should be straightforward, though:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "337" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def isvalid(line):\n", + " words = line.split()\n", + " return len(words) == len(set(words))\n", + "\n", + "quantify(Input(4), isvalid)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two:**" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "231" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def isvalid2(line):\n", + " words = mapt(canon, line.split())\n", + " return len(words) == len(set(words))\n", + "\n", + "quantify(Input(4), isvalid2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It took me less than five minutes, and my preparation with `Input` and `canon` helped, but I was still too slow to score any points." ] } ], From d5248633cfcbcb6a42192f7fc30a088d0c355401 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 4 Dec 2017 00:32:09 -0800 Subject: [PATCH 14/55] Add files via upload --- Advent 2017.ipynb | 803 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 803 insertions(+) create mode 100644 Advent 2017.ipynb diff --git a/Advent 2017.ipynb b/Advent 2017.ipynb new file mode 100644 index 0000000..1197420 --- /dev/null +++ b/Advent 2017.ipynb @@ -0,0 +1,803 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# December 2017: Advent of Code Solutions\n", + "\n", + "Peter Norvig\n", + "\n", + "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). But this time, I won't write up my interpretation of each day's the puzzle description; you'll have to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to read those. I just show my solutions.\n", + "\n", + "# Day 0: Imports and Utility Functions\n", + "\n", + "I might need these:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Python 3.x Utility Functions\n", + "\n", + "import re\n", + "import numpy as np\n", + "import math\n", + "import random\n", + "import urllib.request\n", + "\n", + "from collections import Counter, defaultdict, namedtuple, deque, abc, OrderedDict\n", + "from functools import lru_cache\n", + "from itertools import (permutations, combinations, chain, cycle, product, islice, \n", + " takewhile, zip_longest, count as count_from)\n", + "from heapq import heappop, heappush\n", + "\n", + "identity = lambda x: x\n", + "letters = 'abcdefghijklmnopqrstuvwxyz'\n", + "\n", + "cat = ''.join\n", + "\n", + "Ø = frozenset() # Empty set\n", + "inf = float('inf')\n", + "BIG = 10 ** 999\n", + "\n", + "################ Functions for Input, Parsing\n", + "\n", + "def Input(day, year=2017):\n", + " \"Open this day's input file.\"\n", + " return open('data/advent{}/input{}.txt'.format(year, day))\n", + " \n", + "def array(lines):\n", + " \"Parse an iterable of str lines into a 2-D array. If `lines` is a str, do splitlines.\"\n", + " if isinstance(lines, str): lines = lines.splitlines()\n", + " return mapt(vector, lines)\n", + "\n", + "def vector(line):\n", + " \"Parse a str into a tuple of atoms (numbers or str tokens).\"\n", + " return mapt(atom, line.split())\n", + "\n", + "def atom(token):\n", + " \"Parse a str token into a number, or leave it as a str.\"\n", + " try:\n", + " return int(token)\n", + " except ValueError:\n", + " try:\n", + " return float(token)\n", + " except ValueError:\n", + " return token\n", + "\n", + "################ Functions on Iterables\n", + "\n", + "def first(iterable, default=None): return next(iter(iterable), default)\n", + "\n", + "def first_true(iterable, pred=None, default=None):\n", + " \"\"\"Returns the first true value in the iterable.\n", + " If no true value is found, returns *default*\n", + " If *pred* is not None, returns the first item\n", + " for which pred(item) is true.\"\"\"\n", + " # first_true([a,b,c], default=x) --> a or b or c or x\n", + " # first_true([a,b], fn, x) --> a if fn(a) else b if fn(b) else x\n", + " return next(filter(pred, iterable), default)\n", + "\n", + "def nth(iterable, n, default=None):\n", + " \"Returns the nth item of iterable, or a default value\"\n", + " return next(islice(iterable, n, None), default)\n", + "\n", + "def upto(iterable, maxval):\n", + " \"From a monotonically increasing iterable, generate all the values <= maxval.\"\n", + " # Why <= maxval rather than < maxval? In part because that's how Ruby's upto does it.\n", + " return takewhile(lambda x: x <= maxval, iterable)\n", + "\n", + "def groupby(iterable, key=identity):\n", + " \"Return a dict of {key(item): [items...]} grouping all items in iterable by keys.\"\n", + " groups = defaultdict(list)\n", + " for item in iterable:\n", + " groups[key(item)].append(item)\n", + " return groups\n", + "\n", + "def grouper(iterable, n, fillvalue=None):\n", + " \"\"\"Collect data into fixed-length chunks:\n", + " grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx\"\"\"\n", + " args = [iter(iterable)] * n\n", + " return zip_longest(*args, fillvalue=fillvalue)\n", + "\n", + "def overlapping(iterable, n):\n", + " \"\"\"Generate all (overlapping) n-element subsequences of iterable.\n", + " overlapping('ABCDEFG', 3) --> ABC BCD CDE DEF EFG\"\"\"\n", + " if isinstance(iterable, abc.Sequence):\n", + " yield from (iterable[i:i+n] for i in range(len(iterable) + 1 - n))\n", + " else:\n", + " result = deque(maxlen=n)\n", + " for x in iterable:\n", + " result.append(x)\n", + " if len(result) == n:\n", + " yield tuple(result)\n", + " \n", + "def pairwise(iterable):\n", + " \"s -> (s0,s1), (s1,s2), (s2, s3), ...\"\n", + " return overlapping(iterable, 2)\n", + "\n", + "def sequence(iterable, type=tuple):\n", + " \"Coerce iterable to sequence: leave it alone if it is already a sequence, else make it of type.\"\n", + " return iterable if isinstance(iterable, abc.Sequence) else type(iterable)\n", + "\n", + "def join(iterable, sep=''):\n", + " \"Join the items in iterable, converting each to a string first.\"\n", + " return sep.join(map(str, iterable))\n", + " \n", + "def powerset(iterable):\n", + " \"Yield all subsets of items.\"\n", + " items = list(iterable)\n", + " for r in range(len(items)+1):\n", + " for c in combinations(items, r):\n", + " yield c\n", + " \n", + "def quantify(iterable, pred=bool):\n", + " \"Count how many times the predicate is true.\"\n", + " return sum(map(pred, iterable))\n", + "\n", + "def shuffled(iterable):\n", + " \"Create a new list out of iterable, and shuffle it.\"\n", + " new = list(iterable)\n", + " random.shuffle(new)\n", + " return new\n", + " \n", + "flatten = chain.from_iterable\n", + " \n", + "class Set(frozenset):\n", + " \"A frozenset, but with a prettier printer.\"\n", + " def __repr__(self): return '{' + join(sorted(self), ', ') + '}'\n", + " \n", + "def canon(items, typ=None):\n", + " \"Canonicalize these order-independent items into a hashable canonical form.\"\n", + " typ = typ or (cat if isinstance(items, str) else tuple)\n", + " return typ(sorted(items))\n", + "\n", + "def mapt(fn, *args): \n", + " \"Do a map, and make the results into a tuple.\"\n", + " return tuple(map(fn, *args))\n", + " \n", + "################ Math Functions\n", + " \n", + "def transpose(matrix): return tuple(zip(*matrix))\n", + "\n", + "def isqrt(n):\n", + " \"Integer square root (rounds down).\"\n", + " return int(n ** 0.5)\n", + "\n", + "def ints(start, end):\n", + " \"The integers from start to end, inclusive: range(start, end+1)\"\n", + " return range(start, end + 1)\n", + "\n", + "def floats(start, end, step=1.0):\n", + " \"Yields from start to end (inclusive), by increments of step.\"\n", + " m = (1.0 if step >= 0 else -1.0)\n", + " while start * m <= end * m:\n", + " yield start\n", + " start += step\n", + " \n", + "def multiply(numbers):\n", + " \"Multiply all the numbers together.\"\n", + " result = 1\n", + " for n in numbers:\n", + " result *= n\n", + " return result\n", + "\n", + "################ 2-D points implemented using (x, y) tuples\n", + "\n", + "def X(point): x, y = point; return x\n", + "def Y(point): x, y = point; return y\n", + "\n", + "origin = (0, 0)\n", + "UP, DOWN, LEFT, RIGHT = (0, 1), (0, -1), (-1, 0), (1, 0)\n", + "\n", + "def neighbors4(point): \n", + " \"The four neighboring squares.\"\n", + " x, y = point\n", + " return ( (x, y-1),\n", + " (x-1, y), (x+1, y), \n", + " (x, y+1))\n", + "\n", + "def neighbors8(point): \n", + " \"The eight neighboring squares.\"\n", + " x, y = point \n", + " return ((x-1, y-1), (x, y-1), (x+1, y-1),\n", + " (x-1, y), (x+1, y),\n", + " (x-1, y+1), (x, y+1), (x+1, y+1))\n", + "\n", + "def cityblock_distance(p, q=origin): \n", + " \"Manhatten distance between two points.\"\n", + " return abs(X(p) - X(q)) + abs(Y(p) - Y(q))\n", + "\n", + "def distance(p, q=origin): \n", + " \"Hypotenuse distance between two points.\"\n", + " return math.hypot(X(p) - X(q), Y(p) - Y(q))\n", + "\n", + "################ Debugging \n", + "\n", + "def trace1(f):\n", + " \"Print a trace of the input and output of a function on one line.\"\n", + " def traced_f(*args):\n", + " result = f(*args)\n", + " print('{}({}) = {}'.format(f.__name__, ', '.join(map(str, args)), result))\n", + " return result\n", + " return traced_f\n", + "\n", + "def grep(pattern, iterable):\n", + " \"Print lines from iterable that match pattern.\"\n", + " for line in iterable:\n", + " if re.search(pattern, line):\n", + " print(line)\n", + "\n", + "################ A* and Breadth-First Search (tracking states, not actions)\n", + "\n", + "def always(value): return (lambda *args: value)\n", + "\n", + "def Astar(start, moves_func, h_func, cost_func=always(1)):\n", + " \"Find a shortest sequence of states from start to a goal state (a state s with h_func(s) == 0).\"\n", + " frontier = [(h_func(start), start)] # A priority queue, ordered by path length, f = g + h\n", + " previous = {start: None} # start state has no previous state; other states will\n", + " path_cost = {start: 0} # The cost of the best path to a state.\n", + " Path = lambda s: ([] if (s is None) else Path(previous[s]) + [s])\n", + " while frontier:\n", + " (f, s) = heappop(frontier)\n", + " if h_func(s) == 0:\n", + " return Path(s)\n", + " for s2 in moves_func(s):\n", + " g = path_cost[s] + cost_func(s, s2)\n", + " if s2 not in path_cost or g < path_cost[s2]:\n", + " heappush(frontier, (g + h_func(s2), s2))\n", + " path_cost[s2] = g\n", + " previous[s2] = s\n", + "\n", + "def bfs(start, moves_func, goals):\n", + " \"Breadth-first search\"\n", + " goal_func = (goals if callable(goals) else lambda s: s in goals)\n", + " return Astar(start, moves_func, lambda s: (0 if goal_func(s) else 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pass'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def tests():\n", + " # Functions for Input, Parsing\n", + " assert array('''1 2 3\n", + " 4 5 6''') == ((1, 2, 3), \n", + " (4, 5, 6))\n", + " assert vector('testing 1 2 3.') == ('testing', 1, 2, 3.0)\n", + " \n", + " # Functions on Iterables\n", + " assert first('abc') == first(['a', 'b', 'c']) == 'a'\n", + " assert first_true([0, None, False, {}, 42, 43]) == 42\n", + " assert nth('abc', 1) == nth(iter('abc'), 1) == 'b'\n", + " assert cat(upto('abcdef', 'd')) == 'abcd'\n", + " assert cat(['do', 'g']) == 'dog'\n", + " assert groupby([-3, -2, -1, 1, 2], abs) == {1: [-1, 1], 2: [-2, 2], 3: [-3]}\n", + " assert list(grouper(range(8), 3)) == [(0, 1, 2), (3, 4, 5), (6, 7, None)]\n", + " assert list(overlapping((0, 1, 2, 3, 4), 3)) == [(0, 1, 2), (1, 2, 3), (2, 3, 4)]\n", + " assert list(overlapping('abcdefg', 4)) == ['abcd', 'bcde', 'cdef', 'defg'] \n", + " assert list(pairwise((0, 1, 2, 3, 4))) == [(0, 1), (1, 2), (2, 3), (3, 4)]\n", + " assert sequence('seq') == 'seq'\n", + " assert sequence((i**2 for i in range(5))) == (0, 1, 4, 9, 16)\n", + " assert join(range(5)) == '01234'\n", + " assert join(range(5), ', ') == '0, 1, 2, 3, 4'\n", + " assert multiply([1, 2, 3, 4]) == 24\n", + " assert transpose(((1, 2, 3), (4, 5, 6))) == ((1, 4), (2, 5), (3, 6))\n", + " assert isqrt(9) == 3 == isqrt(10)\n", + " assert ints(1, 100) == range(1, 101)\n", + " assert identity('anything') == 'anything'\n", + " assert set(powerset({1, 2, 3})) == {(), (1,), (1, 2), (1, 2, 3), (1, 3), (2,), (2, 3), (3,)}\n", + " assert quantify(['testing', 1, 2, 3, int, len], callable) == 2 # int and len are callable\n", + " assert quantify([0, False, None, '', [], (), {}, 42]) == 1 # Only 42 is truish\n", + " assert set(shuffled('abc')) == set('abc')\n", + " assert canon('abecedarian') == 'aaabcdeeinr'\n", + " assert canon([9, 1, 4]) == canon({1, 4, 9}) == (1, 4, 9)\n", + " assert mapt(math.sqrt, [1, 9, 4]) == (1, 3, 2)\n", + " \n", + " # Math\n", + " assert transpose([(1, 2, 3), (4, 5, 6)]) == ((1, 4), (2, 5), (3, 6))\n", + " assert isqrt(10) == isqrt(9) == 3\n", + " assert ints(1, 5) == range(1, 6)\n", + " assert list(floats(1, 5)) == [1., 2., 3., 4., 5.]\n", + " assert multiply(ints(1, 10)) == math.factorial(10) == 3628800\n", + " \n", + " # 2-D points\n", + " P = (3, 4)\n", + " assert X(P) == 3 and Y(P) == 4\n", + " assert cityblock_distance(P) == cityblock_distance(P, origin) == 7\n", + " assert distance(P) == distance(P, origin) == 5\n", + " \n", + " # Search\n", + " assert Astar((4, 4), neighbors8, distance) == [(4, 4), (3, 3), (2, 2), (1, 1), (0, 0)]\n", + " assert bfs((4, 4), neighbors8, {origin}) == [(4, 4), (3, 3), (2, 2), (1, 1), (0, 0)]\n", + " forty2 = always(42)\n", + " assert forty2() == forty2('?') == forty2(4, 2) == 42\n", + "\n", + " return 'pass'\n", + "\n", + "tests()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 1](https://adventofcode.com/2017/day/1): Inverse Captcha\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "digits = mapt(int, '3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763')\n", + "N = len(digits)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1158" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(digits[i] \n", + " for i in range(N) \n", + " if digits[i] == digits[i - 1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1132" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(digits[i] \n", + " for i in range(N) \n", + " if digits[i] == digits[i - N//2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This was an easy warmup puzzle. I forgot that Advent of Code was starting at 9:00PM my time, so I started late, but even if I had started on time, I doubt I would have been fast enough to score points. (I created a recurring calendar reminder so I'll be more likely to start on time in the future.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 2](https://adventofcode.com/2017/day/2): Corruption Checksum\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "rows = array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", + "302\t463\t59\t58\t55\t87\t508\t54\t472\t63\t469\t419\t424\t331\t337\t72\n", + "899\t962\t77\t1127\t62\t530\t78\t880\t129\t1014\t93\t148\t239\t288\t357\t424\n", + "2417\t2755\t254\t3886\t5336\t3655\t5798\t3273\t5016\t178\t270\t6511\t223\t5391\t1342\t2377\n", + "68\t3002\t3307\t166\t275\t1989\t1611\t364\t157\t144\t3771\t1267\t3188\t3149\t156\t3454\n", + "1088\t1261\t21\t1063\t1173\t278\t1164\t207\t237\t1230\t1185\t431\t232\t660\t195\t1246\n", + "49\t1100\t136\t1491\t647\t1486\t112\t1278\t53\t1564\t1147\t1068\t809\t1638\t138\t117\n", + "158\t3216\t1972\t2646\t3181\t785\t2937\t365\t611\t1977\t1199\t2972\t201\t2432\t186\t160\n", + "244\t86\t61\t38\t58\t71\t243\t52\t245\t264\t209\t265\t308\t80\t126\t129\n", + "1317\t792\t74\t111\t1721\t252\t1082\t1881\t1349\t94\t891\t1458\t331\t1691\t89\t1724\n", + "3798\t202\t3140\t3468\t1486\t2073\t3872\t3190\t3481\t3760\t2876\t182\t2772\t226\t3753\t188\n", + "2272\t6876\t6759\t218\t272\t4095\t4712\t6244\t4889\t2037\t234\t223\t6858\t3499\t2358\t439\n", + "792\t230\t886\t824\t762\t895\t99\t799\t94\t110\t747\t635\t91\t406\t89\t157\n", + "2074\t237\t1668\t1961\t170\t2292\t2079\t1371\t1909\t221\t2039\t1022\t193\t2195\t1395\t2123\n", + "8447\t203\t1806\t6777\t278\t2850\t1232\t6369\t398\t235\t212\t992\t7520\t7304\t7852\t520\n", + "3928\t107\t3406\t123\t2111\t2749\t223\t125\t134\t146\t3875\t1357\t508\t1534\t4002\t4417''')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "46402" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(abs(max(row) - min(row)) for row in rows)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "265" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def evendiv(row): \n", + " return first(a // b for a in row for b in row if a > b and a // b == a / b)\n", + "\n", + "sum(map(evendiv, rows))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This day was also very easy. In Part One, I was slowed down by a typo: I had `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"`. Later on, Alex Martelli explained to me that the message meant that in `abs(max(row)=...)` it thought that `max(row)` was a keyword argument to `abs`. \n", + "\n", + "In Part Two, note that to check that `a/b` is an exact integer, I used `a // b == a / b`, which I think is more clear and less error-prone than the expression one would typically use here, `a % b == 0`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 3](https://adventofcode.com/2017/day/3): Spiral Memory" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "N = 277678" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This one takes some thinking, not just fast typing. I analyzed the problem as having three parts:\n", + "- Generate a spiral\n", + "- Find the Nth square on the spiral. \n", + "- Find the distance from that square to the center.\n", + "\n", + "I suspect many people will do all three of these in one function. That's probably the best way to get the answer quickly, but I'd rather be clear than quick, so I'll factor out each part, according to the single responsibility principle. My function `spiral()` will generate the coordinates of squares on an infinite spiral, in order, going out from the center square, `(0, 0)`.\n", + "\n", + "How to make a spiral? My analysis is that, after the center square, the spiral goes 1 square right, then 1 square up, then 2 square left, then 2 square down, to complete one revolution; the next revolution starts with 3 square going up, and so on. I'll call each of these a `leg`, so `spiral` consists of four calls to `leg`, with increments to the `length` after every two legs. \n", + "\n", + "One thing is less clear than I would like: the variable `square` is modified by the function `leg` (in other words, it is an in/out parameter). A small test confirms that this matches the puzzle description:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, 0),\n", + " (1, 0),\n", + " (1, 1),\n", + " (0, 1),\n", + " (-1, 1),\n", + " (-1, 0),\n", + " (-1, -1),\n", + " (0, -1),\n", + " (1, -1),\n", + " (2, -1)]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def spiral():\n", + " \"Yield the (x, y) coordinates of successive points in an infinite spiral.\"\n", + " length = 1\n", + " square = [0, 0]\n", + " yield tuple(square)\n", + " while True:\n", + " yield from leg(square, length, RIGHT)\n", + " yield from leg(square, length, UP)\n", + " length += 1\n", + " yield from leg(square, length, LEFT)\n", + " yield from leg(square, length, DOWN)\n", + " length += 1 \n", + " \n", + "def leg(square, length, delta):\n", + " \"Complete one leg of given length, mutating `square` and yielding a copy at each step.\"\n", + " for _ in range(length):\n", + " square[:] = (X(square) + X(delta), Y(square) + Y(delta))\n", + " yield tuple(square) \n", + " \n", + "list(islice(spiral(), 10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can find the `N`th square. As this is Python, indexes start at 0, whereas the problem starts at 1, so I have to subtract 1. Then I can find the distance to the origin:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(212, -263)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nth(spiral(), N - 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "475" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cityblock_distance(_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's the right answer. I was slow arriving at it because I forgot the second `length += 1` in `spiral` and it took a while to debug. (I had the right analysis, but just left out a line of code.)\n", + "\n", + "For **Part Two** I can re-use my `spiral` generator, yay! Here's a function to sum the neighboring squares (I can use my `neighbors8` function, yay!):" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def spiralsums():\n", + " \"Yield the values of a spiral where each point has the sum of the 8 neighbors.\"\n", + " value = defaultdict(int)\n", + " for p in spiral():\n", + " value[p] = sum(value[q] for q in neighbors8(p)) or 1\n", + " yield value[p]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 1, 2, 4, 5, 10, 11, 23, 25, 26, 54, 57]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(islice(spiralsums(), 12))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks good, so let's get the answer:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "279138" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "first(x for x in spiralsums() if x > N)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 4](https://adventofcode.com/2017/day/4): High-Entropy Passphrases\n", + "\n", + "This is the first time I will have to store an input file and read it with the function `Input`. It should be straightforward, though:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "337" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def isvalid(line):\n", + " words = line.split()\n", + " return len(words) == len(set(words))\n", + "\n", + "quantify(Input(4), isvalid)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two:**" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "231" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def isvalid2(line):\n", + " words = mapt(canon, line.split())\n", + " return len(words) == len(set(words))\n", + "\n", + "quantify(Input(4), isvalid2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It took me less than five minutes, and my preparation with `Input` and `canon` helped, but I was still too slow to score any points." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 03b18cdd759675ec615b6a2eb180d5c2ced5cb09 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 4 Dec 2017 00:32:26 -0800 Subject: [PATCH 15/55] Delete Advent 2017.ipynb --- Advent 2017.ipynb | 803 ---------------------------------------------- 1 file changed, 803 deletions(-) delete mode 100644 Advent 2017.ipynb diff --git a/Advent 2017.ipynb b/Advent 2017.ipynb deleted file mode 100644 index 1197420..0000000 --- a/Advent 2017.ipynb +++ /dev/null @@ -1,803 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# December 2017: Advent of Code Solutions\n", - "\n", - "Peter Norvig\n", - "\n", - "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). But this time, I won't write up my interpretation of each day's the puzzle description; you'll have to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to read those. I just show my solutions.\n", - "\n", - "# Day 0: Imports and Utility Functions\n", - "\n", - "I might need these:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Python 3.x Utility Functions\n", - "\n", - "import re\n", - "import numpy as np\n", - "import math\n", - "import random\n", - "import urllib.request\n", - "\n", - "from collections import Counter, defaultdict, namedtuple, deque, abc, OrderedDict\n", - "from functools import lru_cache\n", - "from itertools import (permutations, combinations, chain, cycle, product, islice, \n", - " takewhile, zip_longest, count as count_from)\n", - "from heapq import heappop, heappush\n", - "\n", - "identity = lambda x: x\n", - "letters = 'abcdefghijklmnopqrstuvwxyz'\n", - "\n", - "cat = ''.join\n", - "\n", - "Ø = frozenset() # Empty set\n", - "inf = float('inf')\n", - "BIG = 10 ** 999\n", - "\n", - "################ Functions for Input, Parsing\n", - "\n", - "def Input(day, year=2017):\n", - " \"Open this day's input file.\"\n", - " return open('data/advent{}/input{}.txt'.format(year, day))\n", - " \n", - "def array(lines):\n", - " \"Parse an iterable of str lines into a 2-D array. If `lines` is a str, do splitlines.\"\n", - " if isinstance(lines, str): lines = lines.splitlines()\n", - " return mapt(vector, lines)\n", - "\n", - "def vector(line):\n", - " \"Parse a str into a tuple of atoms (numbers or str tokens).\"\n", - " return mapt(atom, line.split())\n", - "\n", - "def atom(token):\n", - " \"Parse a str token into a number, or leave it as a str.\"\n", - " try:\n", - " return int(token)\n", - " except ValueError:\n", - " try:\n", - " return float(token)\n", - " except ValueError:\n", - " return token\n", - "\n", - "################ Functions on Iterables\n", - "\n", - "def first(iterable, default=None): return next(iter(iterable), default)\n", - "\n", - "def first_true(iterable, pred=None, default=None):\n", - " \"\"\"Returns the first true value in the iterable.\n", - " If no true value is found, returns *default*\n", - " If *pred* is not None, returns the first item\n", - " for which pred(item) is true.\"\"\"\n", - " # first_true([a,b,c], default=x) --> a or b or c or x\n", - " # first_true([a,b], fn, x) --> a if fn(a) else b if fn(b) else x\n", - " return next(filter(pred, iterable), default)\n", - "\n", - "def nth(iterable, n, default=None):\n", - " \"Returns the nth item of iterable, or a default value\"\n", - " return next(islice(iterable, n, None), default)\n", - "\n", - "def upto(iterable, maxval):\n", - " \"From a monotonically increasing iterable, generate all the values <= maxval.\"\n", - " # Why <= maxval rather than < maxval? In part because that's how Ruby's upto does it.\n", - " return takewhile(lambda x: x <= maxval, iterable)\n", - "\n", - "def groupby(iterable, key=identity):\n", - " \"Return a dict of {key(item): [items...]} grouping all items in iterable by keys.\"\n", - " groups = defaultdict(list)\n", - " for item in iterable:\n", - " groups[key(item)].append(item)\n", - " return groups\n", - "\n", - "def grouper(iterable, n, fillvalue=None):\n", - " \"\"\"Collect data into fixed-length chunks:\n", - " grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx\"\"\"\n", - " args = [iter(iterable)] * n\n", - " return zip_longest(*args, fillvalue=fillvalue)\n", - "\n", - "def overlapping(iterable, n):\n", - " \"\"\"Generate all (overlapping) n-element subsequences of iterable.\n", - " overlapping('ABCDEFG', 3) --> ABC BCD CDE DEF EFG\"\"\"\n", - " if isinstance(iterable, abc.Sequence):\n", - " yield from (iterable[i:i+n] for i in range(len(iterable) + 1 - n))\n", - " else:\n", - " result = deque(maxlen=n)\n", - " for x in iterable:\n", - " result.append(x)\n", - " if len(result) == n:\n", - " yield tuple(result)\n", - " \n", - "def pairwise(iterable):\n", - " \"s -> (s0,s1), (s1,s2), (s2, s3), ...\"\n", - " return overlapping(iterable, 2)\n", - "\n", - "def sequence(iterable, type=tuple):\n", - " \"Coerce iterable to sequence: leave it alone if it is already a sequence, else make it of type.\"\n", - " return iterable if isinstance(iterable, abc.Sequence) else type(iterable)\n", - "\n", - "def join(iterable, sep=''):\n", - " \"Join the items in iterable, converting each to a string first.\"\n", - " return sep.join(map(str, iterable))\n", - " \n", - "def powerset(iterable):\n", - " \"Yield all subsets of items.\"\n", - " items = list(iterable)\n", - " for r in range(len(items)+1):\n", - " for c in combinations(items, r):\n", - " yield c\n", - " \n", - "def quantify(iterable, pred=bool):\n", - " \"Count how many times the predicate is true.\"\n", - " return sum(map(pred, iterable))\n", - "\n", - "def shuffled(iterable):\n", - " \"Create a new list out of iterable, and shuffle it.\"\n", - " new = list(iterable)\n", - " random.shuffle(new)\n", - " return new\n", - " \n", - "flatten = chain.from_iterable\n", - " \n", - "class Set(frozenset):\n", - " \"A frozenset, but with a prettier printer.\"\n", - " def __repr__(self): return '{' + join(sorted(self), ', ') + '}'\n", - " \n", - "def canon(items, typ=None):\n", - " \"Canonicalize these order-independent items into a hashable canonical form.\"\n", - " typ = typ or (cat if isinstance(items, str) else tuple)\n", - " return typ(sorted(items))\n", - "\n", - "def mapt(fn, *args): \n", - " \"Do a map, and make the results into a tuple.\"\n", - " return tuple(map(fn, *args))\n", - " \n", - "################ Math Functions\n", - " \n", - "def transpose(matrix): return tuple(zip(*matrix))\n", - "\n", - "def isqrt(n):\n", - " \"Integer square root (rounds down).\"\n", - " return int(n ** 0.5)\n", - "\n", - "def ints(start, end):\n", - " \"The integers from start to end, inclusive: range(start, end+1)\"\n", - " return range(start, end + 1)\n", - "\n", - "def floats(start, end, step=1.0):\n", - " \"Yields from start to end (inclusive), by increments of step.\"\n", - " m = (1.0 if step >= 0 else -1.0)\n", - " while start * m <= end * m:\n", - " yield start\n", - " start += step\n", - " \n", - "def multiply(numbers):\n", - " \"Multiply all the numbers together.\"\n", - " result = 1\n", - " for n in numbers:\n", - " result *= n\n", - " return result\n", - "\n", - "################ 2-D points implemented using (x, y) tuples\n", - "\n", - "def X(point): x, y = point; return x\n", - "def Y(point): x, y = point; return y\n", - "\n", - "origin = (0, 0)\n", - "UP, DOWN, LEFT, RIGHT = (0, 1), (0, -1), (-1, 0), (1, 0)\n", - "\n", - "def neighbors4(point): \n", - " \"The four neighboring squares.\"\n", - " x, y = point\n", - " return ( (x, y-1),\n", - " (x-1, y), (x+1, y), \n", - " (x, y+1))\n", - "\n", - "def neighbors8(point): \n", - " \"The eight neighboring squares.\"\n", - " x, y = point \n", - " return ((x-1, y-1), (x, y-1), (x+1, y-1),\n", - " (x-1, y), (x+1, y),\n", - " (x-1, y+1), (x, y+1), (x+1, y+1))\n", - "\n", - "def cityblock_distance(p, q=origin): \n", - " \"Manhatten distance between two points.\"\n", - " return abs(X(p) - X(q)) + abs(Y(p) - Y(q))\n", - "\n", - "def distance(p, q=origin): \n", - " \"Hypotenuse distance between two points.\"\n", - " return math.hypot(X(p) - X(q), Y(p) - Y(q))\n", - "\n", - "################ Debugging \n", - "\n", - "def trace1(f):\n", - " \"Print a trace of the input and output of a function on one line.\"\n", - " def traced_f(*args):\n", - " result = f(*args)\n", - " print('{}({}) = {}'.format(f.__name__, ', '.join(map(str, args)), result))\n", - " return result\n", - " return traced_f\n", - "\n", - "def grep(pattern, iterable):\n", - " \"Print lines from iterable that match pattern.\"\n", - " for line in iterable:\n", - " if re.search(pattern, line):\n", - " print(line)\n", - "\n", - "################ A* and Breadth-First Search (tracking states, not actions)\n", - "\n", - "def always(value): return (lambda *args: value)\n", - "\n", - "def Astar(start, moves_func, h_func, cost_func=always(1)):\n", - " \"Find a shortest sequence of states from start to a goal state (a state s with h_func(s) == 0).\"\n", - " frontier = [(h_func(start), start)] # A priority queue, ordered by path length, f = g + h\n", - " previous = {start: None} # start state has no previous state; other states will\n", - " path_cost = {start: 0} # The cost of the best path to a state.\n", - " Path = lambda s: ([] if (s is None) else Path(previous[s]) + [s])\n", - " while frontier:\n", - " (f, s) = heappop(frontier)\n", - " if h_func(s) == 0:\n", - " return Path(s)\n", - " for s2 in moves_func(s):\n", - " g = path_cost[s] + cost_func(s, s2)\n", - " if s2 not in path_cost or g < path_cost[s2]:\n", - " heappush(frontier, (g + h_func(s2), s2))\n", - " path_cost[s2] = g\n", - " previous[s2] = s\n", - "\n", - "def bfs(start, moves_func, goals):\n", - " \"Breadth-first search\"\n", - " goal_func = (goals if callable(goals) else lambda s: s in goals)\n", - " return Astar(start, moves_func, lambda s: (0 if goal_func(s) else 1))" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'pass'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def tests():\n", - " # Functions for Input, Parsing\n", - " assert array('''1 2 3\n", - " 4 5 6''') == ((1, 2, 3), \n", - " (4, 5, 6))\n", - " assert vector('testing 1 2 3.') == ('testing', 1, 2, 3.0)\n", - " \n", - " # Functions on Iterables\n", - " assert first('abc') == first(['a', 'b', 'c']) == 'a'\n", - " assert first_true([0, None, False, {}, 42, 43]) == 42\n", - " assert nth('abc', 1) == nth(iter('abc'), 1) == 'b'\n", - " assert cat(upto('abcdef', 'd')) == 'abcd'\n", - " assert cat(['do', 'g']) == 'dog'\n", - " assert groupby([-3, -2, -1, 1, 2], abs) == {1: [-1, 1], 2: [-2, 2], 3: [-3]}\n", - " assert list(grouper(range(8), 3)) == [(0, 1, 2), (3, 4, 5), (6, 7, None)]\n", - " assert list(overlapping((0, 1, 2, 3, 4), 3)) == [(0, 1, 2), (1, 2, 3), (2, 3, 4)]\n", - " assert list(overlapping('abcdefg', 4)) == ['abcd', 'bcde', 'cdef', 'defg'] \n", - " assert list(pairwise((0, 1, 2, 3, 4))) == [(0, 1), (1, 2), (2, 3), (3, 4)]\n", - " assert sequence('seq') == 'seq'\n", - " assert sequence((i**2 for i in range(5))) == (0, 1, 4, 9, 16)\n", - " assert join(range(5)) == '01234'\n", - " assert join(range(5), ', ') == '0, 1, 2, 3, 4'\n", - " assert multiply([1, 2, 3, 4]) == 24\n", - " assert transpose(((1, 2, 3), (4, 5, 6))) == ((1, 4), (2, 5), (3, 6))\n", - " assert isqrt(9) == 3 == isqrt(10)\n", - " assert ints(1, 100) == range(1, 101)\n", - " assert identity('anything') == 'anything'\n", - " assert set(powerset({1, 2, 3})) == {(), (1,), (1, 2), (1, 2, 3), (1, 3), (2,), (2, 3), (3,)}\n", - " assert quantify(['testing', 1, 2, 3, int, len], callable) == 2 # int and len are callable\n", - " assert quantify([0, False, None, '', [], (), {}, 42]) == 1 # Only 42 is truish\n", - " assert set(shuffled('abc')) == set('abc')\n", - " assert canon('abecedarian') == 'aaabcdeeinr'\n", - " assert canon([9, 1, 4]) == canon({1, 4, 9}) == (1, 4, 9)\n", - " assert mapt(math.sqrt, [1, 9, 4]) == (1, 3, 2)\n", - " \n", - " # Math\n", - " assert transpose([(1, 2, 3), (4, 5, 6)]) == ((1, 4), (2, 5), (3, 6))\n", - " assert isqrt(10) == isqrt(9) == 3\n", - " assert ints(1, 5) == range(1, 6)\n", - " assert list(floats(1, 5)) == [1., 2., 3., 4., 5.]\n", - " assert multiply(ints(1, 10)) == math.factorial(10) == 3628800\n", - " \n", - " # 2-D points\n", - " P = (3, 4)\n", - " assert X(P) == 3 and Y(P) == 4\n", - " assert cityblock_distance(P) == cityblock_distance(P, origin) == 7\n", - " assert distance(P) == distance(P, origin) == 5\n", - " \n", - " # Search\n", - " assert Astar((4, 4), neighbors8, distance) == [(4, 4), (3, 3), (2, 2), (1, 1), (0, 0)]\n", - " assert bfs((4, 4), neighbors8, {origin}) == [(4, 4), (3, 3), (2, 2), (1, 1), (0, 0)]\n", - " forty2 = always(42)\n", - " assert forty2() == forty2('?') == forty2(4, 2) == 42\n", - "\n", - " return 'pass'\n", - "\n", - "tests()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# [Day 1](https://adventofcode.com/2017/day/1): Inverse Captcha\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "digits = mapt(int, '3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763')\n", - "N = len(digits)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1158" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(digits[i] \n", - " for i in range(N) \n", - " if digits[i] == digits[i - 1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Part Two**:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1132" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(digits[i] \n", - " for i in range(N) \n", - " if digits[i] == digits[i - N//2])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This was an easy warmup puzzle. I forgot that Advent of Code was starting at 9:00PM my time, so I started late, but even if I had started on time, I doubt I would have been fast enough to score points. (I created a recurring calendar reminder so I'll be more likely to start on time in the future.)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# [Day 2](https://adventofcode.com/2017/day/2): Corruption Checksum\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "rows = array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", - "302\t463\t59\t58\t55\t87\t508\t54\t472\t63\t469\t419\t424\t331\t337\t72\n", - "899\t962\t77\t1127\t62\t530\t78\t880\t129\t1014\t93\t148\t239\t288\t357\t424\n", - "2417\t2755\t254\t3886\t5336\t3655\t5798\t3273\t5016\t178\t270\t6511\t223\t5391\t1342\t2377\n", - "68\t3002\t3307\t166\t275\t1989\t1611\t364\t157\t144\t3771\t1267\t3188\t3149\t156\t3454\n", - "1088\t1261\t21\t1063\t1173\t278\t1164\t207\t237\t1230\t1185\t431\t232\t660\t195\t1246\n", - "49\t1100\t136\t1491\t647\t1486\t112\t1278\t53\t1564\t1147\t1068\t809\t1638\t138\t117\n", - "158\t3216\t1972\t2646\t3181\t785\t2937\t365\t611\t1977\t1199\t2972\t201\t2432\t186\t160\n", - "244\t86\t61\t38\t58\t71\t243\t52\t245\t264\t209\t265\t308\t80\t126\t129\n", - "1317\t792\t74\t111\t1721\t252\t1082\t1881\t1349\t94\t891\t1458\t331\t1691\t89\t1724\n", - "3798\t202\t3140\t3468\t1486\t2073\t3872\t3190\t3481\t3760\t2876\t182\t2772\t226\t3753\t188\n", - "2272\t6876\t6759\t218\t272\t4095\t4712\t6244\t4889\t2037\t234\t223\t6858\t3499\t2358\t439\n", - "792\t230\t886\t824\t762\t895\t99\t799\t94\t110\t747\t635\t91\t406\t89\t157\n", - "2074\t237\t1668\t1961\t170\t2292\t2079\t1371\t1909\t221\t2039\t1022\t193\t2195\t1395\t2123\n", - "8447\t203\t1806\t6777\t278\t2850\t1232\t6369\t398\t235\t212\t992\t7520\t7304\t7852\t520\n", - "3928\t107\t3406\t123\t2111\t2749\t223\t125\t134\t146\t3875\t1357\t508\t1534\t4002\t4417''')" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "46402" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(abs(max(row) - min(row)) for row in rows)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Part Two**:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "265" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def evendiv(row): \n", - " return first(a // b for a in row for b in row if a > b and a // b == a / b)\n", - "\n", - "sum(map(evendiv, rows))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This day was also very easy. In Part One, I was slowed down by a typo: I had `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"`. Later on, Alex Martelli explained to me that the message meant that in `abs(max(row)=...)` it thought that `max(row)` was a keyword argument to `abs`. \n", - "\n", - "In Part Two, note that to check that `a/b` is an exact integer, I used `a // b == a / b`, which I think is more clear and less error-prone than the expression one would typically use here, `a % b == 0`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# [Day 3](https://adventofcode.com/2017/day/3): Spiral Memory" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "N = 277678" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This one takes some thinking, not just fast typing. I analyzed the problem as having three parts:\n", - "- Generate a spiral\n", - "- Find the Nth square on the spiral. \n", - "- Find the distance from that square to the center.\n", - "\n", - "I suspect many people will do all three of these in one function. That's probably the best way to get the answer quickly, but I'd rather be clear than quick, so I'll factor out each part, according to the single responsibility principle. My function `spiral()` will generate the coordinates of squares on an infinite spiral, in order, going out from the center square, `(0, 0)`.\n", - "\n", - "How to make a spiral? My analysis is that, after the center square, the spiral goes 1 square right, then 1 square up, then 2 square left, then 2 square down, to complete one revolution; the next revolution starts with 3 square going up, and so on. I'll call each of these a `leg`, so `spiral` consists of four calls to `leg`, with increments to the `length` after every two legs. \n", - "\n", - "One thing is less clear than I would like: the variable `square` is modified by the function `leg` (in other words, it is an in/out parameter). A small test confirms that this matches the puzzle description:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(0, 0),\n", - " (1, 0),\n", - " (1, 1),\n", - " (0, 1),\n", - " (-1, 1),\n", - " (-1, 0),\n", - " (-1, -1),\n", - " (0, -1),\n", - " (1, -1),\n", - " (2, -1)]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def spiral():\n", - " \"Yield the (x, y) coordinates of successive points in an infinite spiral.\"\n", - " length = 1\n", - " square = [0, 0]\n", - " yield tuple(square)\n", - " while True:\n", - " yield from leg(square, length, RIGHT)\n", - " yield from leg(square, length, UP)\n", - " length += 1\n", - " yield from leg(square, length, LEFT)\n", - " yield from leg(square, length, DOWN)\n", - " length += 1 \n", - " \n", - "def leg(square, length, delta):\n", - " \"Complete one leg of given length, mutating `square` and yielding a copy at each step.\"\n", - " for _ in range(length):\n", - " square[:] = (X(square) + X(delta), Y(square) + Y(delta))\n", - " yield tuple(square) \n", - " \n", - "list(islice(spiral(), 10))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can find the `N`th square. As this is Python, indexes start at 0, whereas the problem starts at 1, so I have to subtract 1. Then I can find the distance to the origin:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(212, -263)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "nth(spiral(), N - 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "475" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cityblock_distance(_)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That's the right answer. I was slow arriving at it because I forgot the second `length += 1` in `spiral` and it took a while to debug. (I had the right analysis, but just left out a line of code.)\n", - "\n", - "For **Part Two** I can re-use my `spiral` generator, yay! Here's a function to sum the neighboring squares (I can use my `neighbors8` function, yay!):" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def spiralsums():\n", - " \"Yield the values of a spiral where each point has the sum of the 8 neighbors.\"\n", - " value = defaultdict(int)\n", - " for p in spiral():\n", - " value[p] = sum(value[q] for q in neighbors8(p)) or 1\n", - " yield value[p]" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 1, 2, 4, 5, 10, 11, 23, 25, 26, 54, 57]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(islice(spiralsums(), 12))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Looks good, so let's get the answer:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "279138" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "first(x for x in spiralsums() if x > N)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# [Day 4](https://adventofcode.com/2017/day/4): High-Entropy Passphrases\n", - "\n", - "This is the first time I will have to store an input file and read it with the function `Input`. It should be straightforward, though:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "337" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def isvalid(line):\n", - " words = line.split()\n", - " return len(words) == len(set(words))\n", - "\n", - "quantify(Input(4), isvalid)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Part Two:**" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "231" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def isvalid2(line):\n", - " words = mapt(canon, line.split())\n", - " return len(words) == len(set(words))\n", - "\n", - "quantify(Input(4), isvalid2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It took me less than five minutes, and my preparation with `Input` and `canon` helped, but I was still too slow to score any points." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 7cb53ef37aabd05ee713916a60165671c640f34b Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 4 Dec 2017 00:32:41 -0800 Subject: [PATCH 16/55] Add files via upload --- ipynb/Advent 2017.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 1b84775..1197420 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -6,7 +6,7 @@ "source": [ "# December 2017: Advent of Code Solutions\n", "\n", - "
Peter Norvig, December 2017
\n", + "Peter Norvig\n", "\n", "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). But this time, I won't write up my interpretation of each day's the puzzle description; you'll have to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to read those. I just show my solutions.\n", "\n", From bc2a23fcd430ba26487820ea6f45f49934344928 Mon Sep 17 00:00:00 2001 From: Jeroen Van Goey Date: Mon, 4 Dec 2017 10:02:48 +0100 Subject: [PATCH 17/55] Fix typo Uppercase X should be lowercase x --- ipynb/Advent of Code.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipynb/Advent of Code.ipynb b/ipynb/Advent of Code.ipynb index 7af2248..812fe73 100644 --- a/ipynb/Advent of Code.ipynb +++ b/ipynb/Advent of Code.ipynb @@ -99,7 +99,7 @@ " \"The eight neighbors (with diagonals).\"\n", " x, y = point \n", " return ((x+1, y), (x-1, y), (x, y+1), (x, y-1),\n", - " (X+1, y+1), (x-1, y-1), (x+1, y-1), (x-1, y+1))\n", + " (x+1, y+1), (x-1, y-1), (x+1, y-1), (x-1, y+1))\n", "\n", "def cityblock_distance(p, q=(0, 0)): \n", " \"City block distance between two points.\"\n", From b74936ba06bb37e55fc3659903b7f0f988e7ea22 Mon Sep 17 00:00:00 2001 From: Necmettin Karakaya Date: Tue, 5 Dec 2017 11:09:48 +0800 Subject: [PATCH 18/55] fix typos. --- ipynb/Cheryl-and-Eve.ipynb | 2 +- ipynb/Coin Flip.ipynb | 2 +- ipynb/Gesture Typing.ipynb | 4 ++-- ipynb/Ghost.ipynb | 2 +- ipynb/Golomb-Puzzle.ipynb | 4 ++-- ipynb/How To Count Things.ipynb | 2 +- ipynb/How to Do Things with Words.ipynb | 10 +++++----- ipynb/Mean Misanthrope Density.ipynb | 2 +- ipynb/Probability.ipynb | 4 ++-- ipynb/ProbabilityParadox.ipynb | 2 +- ipynb/PropositionalLogic.ipynb | 6 +++--- ipynb/Riddler Battle Royale.ipynb | 2 +- ipynb/Scrabble.ipynb | 4 ++-- ipynb/Sicherman Dice.ipynb | 26 ++++++++++++------------- ipynb/TSP.ipynb | 10 +++++----- ipynb/WWW.ipynb | 2 +- py/ibol.py | 2 +- 17 files changed, 43 insertions(+), 43 deletions(-) diff --git a/ipynb/Cheryl-and-Eve.ipynb b/ipynb/Cheryl-and-Eve.ipynb index 6f335d0..29864bd 100644 --- a/ipynb/Cheryl-and-Eve.ipynb +++ b/ipynb/Cheryl-and-Eve.ipynb @@ -108,7 +108,7 @@ " return len(possible_dates) == 1\n", "\n", "def hear(possible_dates, *statements):\n", - " \"Return the subset of possibile dates that are consistent with all the statements.\"\n", + " \"Return the subset of possible dates that are consistent with all the statements.\"\n", " return {date for date in possible_dates\n", " if all(stmt(date) for stmt in statements)}\n", "\n", diff --git a/ipynb/Coin Flip.ipynb b/ipynb/Coin Flip.ipynb index 84fe89c..ff1c312 100644 --- a/ipynb/Coin Flip.ipynb +++ b/ipynb/Coin Flip.ipynb @@ -30,7 +30,7 @@ "- `Move`: A *move* is a set of positions to flip. A position will be an integer index into the coin sequence, so a move is a set of these such as `{0, 2}`, which we can interpret as \"flip the 12 o'clock and 6 o'clock positions.\" \n", "- `all_coins`: Set of all possible coin sequences: `{'HHHH', 'HHHT', ...}`.\n", "- `rotations`: The function `rotations(coins)` returns the set of all 4 rotations of the coin sequence.\n", - "- `update`: The function `update(belief, move)` retuns an updated belief state, representing all the possible coin sequences that could result from any devil rotation followed by the specified flip(s). (But don't flip `'HHHH'`, because the game would have already ended.)\n", + "- `update`: The function `update(belief, move)` returns an updated belief state, representing all the possible coin sequences that could result from any devil rotation followed by the specified flip(s). (But don't flip `'HHHH'`, because the game would have already ended.)\n", "- `flip`: The function `flip(coins, move)` flips the specified positions within the coin sequence." ] }, diff --git a/ipynb/Gesture Typing.ipynb b/ipynb/Gesture Typing.ipynb index 458d138..1ec2c2d 100644 --- a/ipynb/Gesture Typing.ipynb +++ b/ipynb/Gesture Typing.ipynb @@ -35,7 +35,7 @@ "* **Location**: A location is a **point** in two-dimensional space (we assume keyboards are flat).\n", "* **Path**: A path connects the letters in a word. In the picture above the path is curved, but a shortest path is formed by connecting straight line **segments**, so maybe we need only deal with straight lines.\n", "* **Segment**: A line segment is a straight line between two points.\n", - "* **Length**: Paths and Segments have lengths; the distance travelled along them.\n", + "* **Length**: Paths and Segments have lengths; the distance traveled along them.\n", "* **Words**: We will need a list of allowable words (in order to find the one with the longest path).\n", "* **Work Load**: If we want to find the average path length over a typical work load, we'll have to represent a work load: not\n", "just a list of words, but a measure of how frequent each word (or each segment) is.\n", @@ -2058,7 +2058,7 @@ "* Hillclimbing just keeps the one best keyboard it has found so far. Other optimization techniques such as\n", "[beam search](http://en.wikipedia.org/wiki/Beam_search) or [genetic algorithms](http://en.wikipedia.org/wiki/Genetic_algorithm) or [ant colony optimization](http://en.wikipedia.org/wiki/Ant_colony_optimization_algorithms) maintain several candidates at a time. Is that a good idea?\n", "\n", - "* The code in this notebook emphasises clarity, not efficiency. Can you modify the code (or perhaps port it to another language) and make it twice as efficient? 10 times? 100 times?\n", + "* The code in this notebook emphasizes clarity, not efficiency. Can you modify the code (or perhaps port it to another language) and make it twice as efficient? 10 times? 100 times?\n", "\n", "* What other factors do you think are important to user satisfaction with a keyboard. Can you measure them?\n", "\n", diff --git a/ipynb/Ghost.ipynb b/ipynb/Ghost.ipynb index 0292d11..de05e0c 100644 --- a/ipynb/Ghost.ipynb +++ b/ipynb/Ghost.ipynb @@ -402,7 +402,7 @@ "**No.** The game is a win for the second player, not the first.\n", "This agrees with [xkcd](https://xkcd.com/)'s Randall Monroe, who [says](https://blog.xkcd.com/2007/12/31/ghost/) *\"I hear if you use the Scrabble wordlist, it’s always a win for the second player.\"*\n", "\n", - "But ... Wikipedia says that the minimum word length can be \"three or four letters.\" In `enable1` the limit was three; let's try agian with a limit of four:" + "But ... Wikipedia says that the minimum word length can be \"three or four letters.\" In `enable1` the limit was three; let's try again with a limit of four:" ] }, { diff --git a/ipynb/Golomb-Puzzle.ipynb b/ipynb/Golomb-Puzzle.ipynb index 587597b..f7480ea 100644 --- a/ipynb/Golomb-Puzzle.ipynb +++ b/ipynb/Golomb-Puzzle.ipynb @@ -645,7 +645,7 @@ "\n", "In Way 1, we could pre-sort the rectangles (say, biggest first). Then we try to put the biggest rectangle in all possible positions on the grid, and for each position that fits, try putting the second biggest rectangle in all remaining positions, and so on. As a rough estimate, assume there are on average about 10 ways to place a rectangle. Then this way will look at about 105 = 100,000 combinations.\n", "\n", - "In Way 2, we consider the positions in some fixed order; say top-to-bottom, left-to right. Take the first empty position (say, the upper left corner). Try putting each of the rectangles there, and for each one that fits, try all possible rectangles in the next empty position, and so on. There are only 5! permutations of rectangles, and each rectangle can go either horizontaly or vertically, so we would have to consider 5! × 25 = 3840 combinations. Since 3840 < 100,000, I'll go with Way 2. Here is a more precise description:\n", + "In Way 2, we consider the positions in some fixed order; say top-to-bottom, left-to right. Take the first empty position (say, the upper left corner). Try putting each of the rectangles there, and for each one that fits, try all possible rectangles in the next empty position, and so on. There are only 5! permutations of rectangles, and each rectangle can go either horizontally or vertically, so we would have to consider 5! × 25 = 3840 combinations. Since 3840 < 100,000, I'll go with Way 2. Here is a more precise description:\n", "\n", "> Way 2: To `pack` a set of rectangles onto a grid, find the first empty cell on the grid. Try in turn all possible placements of any rectangle (in either orientation) at that position. For each one that fits, try to `pack` the remaining rectangles, and return the resulting grid if one of these packings succeeds. " ] @@ -1239,7 +1239,7 @@ " pass\n", " \n", "def replace_all(text, olds, news):\n", - " \"Replace each occurence of each old in text with the corresponding new.\"\n", + " \"Replace each occurrence of each old in text with the corresponding new.\"\n", " # E.g. replace_all('A + B', ['A', 'B'], [1, 2]) == '1 + 2'\n", " for (old, new) in zip(olds, news):\n", " text = text.replace(str(old), str(new))\n", diff --git a/ipynb/How To Count Things.ipynb b/ipynb/How To Count Things.ipynb index 5036910..2edcae5 100644 --- a/ipynb/How To Count Things.ipynb +++ b/ipynb/How To Count Things.ipynb @@ -402,7 +402,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# (2) Count Strings with Alphabetic First Occurences\n", + "# (2) Count Strings with Alphabetic First Occurrences\n", "\n", "Here's another problem:\n", "\n", diff --git a/ipynb/How to Do Things with Words.ipynb b/ipynb/How to Do Things with Words.ipynb index e7bb241..e3c68a3 100644 --- a/ipynb/How to Do Things with Words.ipynb +++ b/ipynb/How to Do Things with Words.ipynb @@ -1254,7 +1254,7 @@ " \n", "$P(w_1 \\ldots w_n) = P(w_1 \\mid start) \\times P(w_2 \\mid w_1) \\times P(w_3 \\mid w_2) \\ldots \\times \\ldots P(w_n \\mid w_{n-1})$\n", "\n", - "This is called the *bigram* model, and is equivalent to taking a text, cutting it up into slips of paper with two words on them, and having multiple bags, and putting each slip into a bag labelled with the first word on the slip. Then, to generate language, we choose the first word from the original single bag of words, and chose all subsequent words from the bag with the label of the previously-chosen word. To determine the probability of a word sequence, we multiply together the conditional probabilities of each word given the previous word. We'll do this with a function, `cPword` for \"conditional probability of a word.\"\n", + "This is called the *bigram* model, and is equivalent to taking a text, cutting it up into slips of paper with two words on them, and having multiple bags, and putting each slip into a bag labeled with the first word on the slip. Then, to generate language, we choose the first word from the original single bag of words, and chose all subsequent words from the bag with the label of the previously-chosen word. To determine the probability of a word sequence, we multiply together the conditional probabilities of each word given the previous word. We'll do this with a function, `cPword` for \"conditional probability of a word.\"\n", "\n", "$P(w_n \\mid w_{n-1}) = P(w_{n-1}w_n) / P(w_{n-1}) $" ] @@ -1419,9 +1419,9 @@ } ], "source": [ - "tolkein = 'adrybaresandyholewithnothinginittositdownonortoeat'\n", - "print segment(tolkein)\n", - "print segment2(tolkein)" + "tolkien = 'adrybaresandyholewithnothinginittositdownonortoeat'\n", + "print segment(tolkien)\n", + "print segment2(tolkien)" ] }, { @@ -1610,7 +1610,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The issue here is the finality of a probability of zero. Out of the three 15-letter words, it turns out that \"nongovernmental\" is in the dictionary, but if it hadn't been, if somehow our corpus of words had missed it, then the probability of that whole phrase would have been zero. It seems that is too strict; there must be some \"real\" words that are not in our dictionary, so we shouldn't give them probability zero. There is also a question of likelyhood of being a \"real\" word. It does seem that \"neverbeforeseen\" is more English-like than \"zqbhjhsyefvvjqc\", and so perhaps should have a higher probability.\n", + "The issue here is the finality of a probability of zero. Out of the three 15-letter words, it turns out that \"nongovernmental\" is in the dictionary, but if it hadn't been, if somehow our corpus of words had missed it, then the probability of that whole phrase would have been zero. It seems that is too strict; there must be some \"real\" words that are not in our dictionary, so we shouldn't give them probability zero. There is also a question of likelihood of being a \"real\" word. It does seem that \"neverbeforeseen\" is more English-like than \"zqbhjhsyefvvjqc\", and so perhaps should have a higher probability.\n", "\n", "We can address this by assigning a non-zero probability to words that are not in the dictionary. This is even more important when it comes to multi-word phrases (such as bigrams), because it is more likely that a legitimate one will appear that has not been observed before.\n", "\n", diff --git a/ipynb/Mean Misanthrope Density.ipynb b/ipynb/Mean Misanthrope Density.ipynb index dd0996a..73a1b44 100644 --- a/ipynb/Mean Misanthrope Density.ipynb +++ b/ipynb/Mean Misanthrope Density.ipynb @@ -839,7 +839,7 @@ "\n", "- *In `occ(n)`, is it ok to start from all empty houses, rather than considering layouts of partially-occupied houses?* Yes, because the problem states that initially all houses are empty, and each choice of a house breaks the street up into runs of acceptable houses, flanked by unacceptable houses. If we get the computation right for a run of `n` acceptable houses, then we can get the whole answer right. A key point is that the chosen first house breaks the row of houses into 2 runs of *acceptable* houses, not 2 runs of *unoccupied* houses. If it were unoccupied houses, then we would have to also keep track of whether there were occupied houses to the right and/or left of the runs. By considering runs of acceptable houses, eveything is clean and simple.\n", "\n", - "- *In `occ(7)`, if the first house chosen is 2, that breaks the street up into runs of 1 and 3 acceptable houses. There is only one way to occupy the 1 house, but there are several ways to occupy the 3 houses. Shouldn't the average give more weight to the 3 houses, since there are more possibilities there?* No. We are caclulating occupancy, and there is a specific number (5/3) which is the expected occupancy of 3 houses; it doesn't matter if there is one combination or a million combinations that contribute to that expected value, all that matters is what the expected value is.\n", + "- *In `occ(7)`, if the first house chosen is 2, that breaks the street up into runs of 1 and 3 acceptable houses. There is only one way to occupy the 1 house, but there are several ways to occupy the 3 houses. Shouldn't the average give more weight to the 3 houses, since there are more possibilities there?* No. We are calculating occupancy, and there is a specific number (5/3) which is the expected occupancy of 3 houses; it doesn't matter if there is one combination or a million combinations that contribute to that expected value, all that matters is what the expected value is.\n", "\n", "\n" ] diff --git a/ipynb/Probability.ipynb b/ipynb/Probability.ipynb index 3269a51..ee8c703 100644 --- a/ipynb/Probability.ipynb +++ b/ipynb/Probability.ipynb @@ -247,7 +247,7 @@ "- We have multiple balls of the same color. \n", "- An outcome is a *set* of balls, where order doesn't matter, not a *sequence*, where order matters.\n", "\n", - "To account for the first issue, I'll have 8 different white balls labelled `'W1'` through `'W8'`, rather than having eight balls all labelled `'W'`. That makes it clear that selecting `'W1'` is different from selecting `'W2'`.\n", + "To account for the first issue, I'll have 8 different white balls labeled `'W1'` through `'W8'`, rather than having eight balls all labeled `'W'`. That makes it clear that selecting `'W1'` is different from selecting `'W2'`.\n", "\n", "The second issue is handled automatically by the `P` function, but if I want to do calculations by hand, I will sometimes first count the number of *permutations* of balls, then get the number of *combinations* by dividing the number of permutations by *c*!, where *c* is the number of balls in a combination. For example, if I want to choose 2 white balls from the 8 available, there are 8 ways to choose a first white ball and 7 ways to choose a second, and therefore 8 × 7 = 56 permutations of two white balls. But there are only 56 / 2 = 28 combinations, because `(W1, W2)` is the same combination as `(W2, W1)`.\n", "\n", @@ -655,7 +655,7 @@ } }, "source": [ - "So the probabilty of 6 red balls is then just 9 choose 6 divided by the size of the sample space:" + "So the probability of 6 red balls is then just 9 choose 6 divided by the size of the sample space:" ] }, { diff --git a/ipynb/ProbabilityParadox.ipynb b/ipynb/ProbabilityParadox.ipynb index ae643a6..56ed36c 100644 --- a/ipynb/ProbabilityParadox.ipynb +++ b/ipynb/ProbabilityParadox.ipynb @@ -2249,7 +2249,7 @@ } }, "source": [ - "A table and a plot will give a feel for the `util` function. Notice the characterisitc concave-down shape of the plot." + "A table and a plot will give a feel for the `util` function. Notice the characteristics concave-down shape of the plot." ] }, { diff --git a/ipynb/PropositionalLogic.ipynb b/ipynb/PropositionalLogic.ipynb index c6540a6..5617c14 100644 --- a/ipynb/PropositionalLogic.ipynb +++ b/ipynb/PropositionalLogic.ipynb @@ -21,7 +21,7 @@ " R: Wotan’s plan will be fulfilled\n", " S: Valhalla will be destroyed\n", "\n", - "For some sentences, it takes detailed knowledge to get a good translation. The following two sentences are ambiguous, with different prefered interpretations, and translating them correctly requires knowledge of eating habits:\n", + "For some sentences, it takes detailed knowledge to get a good translation. The following two sentences are ambiguous, with different preferred interpretations, and translating them correctly requires knowledge of eating habits:\n", "\n", " I will eat salad or I will eat bread and I will eat butter. P ∨ (Q ⋀ R)\n", " I will eat salad or I will eat soup and I will eat ice cream. (P ∨ Q) ⋀ R\n", @@ -30,7 +30,7 @@ "\n", " Rule('{P} ⇒ {Q}', 'if {P} then {Q}', 'if {P}, {Q}')\n", " \n", - "which means that the logic translation will have the form `'P ⇒ Q'`, whenever the English sentence has either the form `'if P then Q'` or `'if P, Q'`, where `P` and `Q` can match any non-empty subsequence of characters. Whatever matches `P` and `Q` will be recursively processed by the rules. The rules are in order—top to bottom, left to right, and the first rule that matches in that order will be accepted, no matter what, so be sure you order your rules carefully. One guideline I have adhered to is to put all the rules that start with a keyword (like `'if'` or `'neither'`) before the rules that start with a variable (like `'{P}'`); that way you avoid accidently having a keyword swallowed up inside a `'{P}'`.\n", + "which means that the logic translation will have the form `'P ⇒ Q'`, whenever the English sentence has either the form `'if P then Q'` or `'if P, Q'`, where `P` and `Q` can match any non-empty subsequence of characters. Whatever matches `P` and `Q` will be recursively processed by the rules. The rules are in order—top to bottom, left to right, and the first rule that matches in that order will be accepted, no matter what, so be sure you order your rules carefully. One guideline I have adhered to is to put all the rules that start with a keyword (like `'if'` or `'neither'`) before the rules that start with a variable (like `'{P}'`); that way you avoid accidentally having a keyword swallowed up inside a `'{P}'`.\n", "\n", "Consider the example sentence `\"If loving you is wrong, I don't want to be right.\"` This should match the pattern \n", "`'if {P}, {Q}'` with the variable `P` equal to `\"loving you is wrong\"`. But I don't want the variable `Q` to be \n", @@ -441,7 +441,7 @@ "\n", "* `nothing is better`:
doesn't handle quantifiers.\n", "\n", - "* `Either Wotan will triumph and Valhalla will be saved or else he won't`:
gets `'he will'` as one of the propositions, but better would be if that refered back to `'Wotan will triumph'`.\n", + "* `Either Wotan will triumph and Valhalla will be saved or else he won't`:
gets `'he will'` as one of the propositions, but better would be if that referred back to `'Wotan will triumph'`.\n", "\n", "* `Wotan will intervene and cause Siegmund's death`:
gets `\"cause Siegmund's death\"` as a proposition, but better would be `\"Wotan will cause Siegmund's death\"`.\n", "\n", diff --git a/ipynb/Riddler Battle Royale.ipynb b/ipynb/Riddler Battle Royale.ipynb index e79a11b..a10e594 100644 --- a/ipynb/Riddler Battle Royale.ipynb +++ b/ipynb/Riddler Battle Royale.ipynb @@ -455,7 +455,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Opponent modelling\n", + "## Opponent modeling\n", "\n", "To have a chance of winning the second round of this contest, we have to predict what the other entries will be like. Nobody knows for sure, but I can hypothesize that the entries will be slightly better than the first round, and try to approximate that by hillclimbing from each of the first-round plans for a small number of steps:" ] diff --git a/ipynb/Scrabble.ipynb b/ipynb/Scrabble.ipynb index 7e77597..7dbea70 100644 --- a/ipynb/Scrabble.ipynb +++ b/ipynb/Scrabble.ipynb @@ -255,7 +255,7 @@ "\n", "We'll represent a tile as a one-character string, like `'W'`. We'll represent a rack as a string of tiles, usually of length 7, such as `'EELRTTS'`. (I also considered a `collections.Counter` to represent a rack, but felt that `str` was simpler, and with the rack size limited to 7, efficiency was not a major issue.)\n", "\n", - "The blank tile causes some complications. We'll represent a blank in a player's rack as the underscore character, `'_'`. But once the blank is played on the board, it must be used as if it was a specific letter. However, it doesn't score the points of the letter. I chose to use the lowercase version of the letter to represent this. That way, we know what letter the blank is standing for, and we can distingush between scoring and non-scoring tiles. For example, `'EELRTT_'` is a rack that contains a blank; and `'LETTERs'` is a word played on the board that uses the blank to stand for the letter `S`. \n", + "The blank tile causes some complications. We'll represent a blank in a player's rack as the underscore character, `'_'`. But once the blank is played on the board, it must be used as if it was a specific letter. However, it doesn't score the points of the letter. I chose to use the lowercase version of the letter to represent this. That way, we know what letter the blank is standing for, and we can distinguish between scoring and non-scoring tiles. For example, `'EELRTT_'` is a rack that contains a blank; and `'LETTERs'` is a word played on the board that uses the blank to stand for the letter `S`. \n", "\n", "We'll define `letters` to give all the distinct letters that can be made by a rack, and `remove` to remove letters from a rack (after they have been played)." ] @@ -5491,7 +5491,7 @@ "source": [ "# Playing a Game\n", "\n", - "Now let's play a complete game. We start with a bag of tiles wih the official Scrabble® distribution:" + "Now let's play a complete game. We start with a bag of tiles with the official Scrabble® distribution:" ] }, { diff --git a/ipynb/Sicherman Dice.ipynb b/ipynb/Sicherman Dice.ipynb index 9b1c6a4..35ab0de 100644 --- a/ipynb/Sicherman Dice.ipynb +++ b/ipynb/Sicherman Dice.ipynb @@ -21,7 +21,7 @@ "\n", "And some of those sums, like 8, can be made multiple ways, while 2 and 12 can only be made one way. \n", "\n", - "**Yeah. 8 can be made 5 ways, so it has a 5/36 probability of occuring.**\n", + "**Yeah. 8 can be made 5 ways, so it has a 5/36 probability of occurring.**\n", "\n", "The interesting thing is that people have been playing dice games for 7,000 years. But it wasn't until 1977 that Colonel George Sicherman asked whether is is possible to have a pair of dice that are not regular dice—that is, they don't have (1, 2, 3, 4, 5, 6) on the six sides—but have the same distribution of sums as a regular pair—so the pair of dice would also have to have 5 ways of making 8, but it could be different ways; maybe 7+1 could be one way. Sicherman assumes that each side bears a positive integer.\n", "\n", @@ -483,18 +483,18 @@ "\n", "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "
2345678910111223456789101112
Regular dice:\n", diff --git a/ipynb/TSP.ipynb b/ipynb/TSP.ipynb index d64a4df..7e75acb 100644 --- a/ipynb/TSP.ipynb +++ b/ipynb/TSP.ipynb @@ -76,7 +76,7 @@ "\n", "> **All Tours Algorithm**: *Generate all possible tours of the cities, and choose the shortest tour (the one with minimum tour length).*\n", "\n", - "My design philosophy is to first write an English description of the algorithm, then write Python code that closely mirrors the English description. This will probably require some auxilliary functions and data structures; just assume they exist; put them on a TO DO list, and eventually define them with the same design philosophy.\n", + "My design philosophy is to first write an English description of the algorithm, then write Python code that closely mirrors the English description. This will probably require some auxiliary functions and data structures; just assume they exist; put them on a TO DO list, and eventually define them with the same design philosophy.\n", "\n", "Here is the start of the implementation:" ] @@ -2507,7 +2507,7 @@ "Mount Vernon, Fairfax County, Virginia\t38.729314\t-77.107386\n", "Fort Union Trading Post National Historic Site, Williston, North Dakota 1804, ND\t48.000160\t-104.041483\n", "San Andreas Fault, San Benito County, CA\t36.576088\t-120.987632\n", - "Chickasaw National Recreation Area, 1008 W 2nd St, Sulphur, OK 73086\t34.457043\t-97.012213\n", + "Chickasaw National Recreation Area, 1008 W 2nd St, Sulfur, OK 73086\t34.457043\t-97.012213\n", "Hanford Site, Benton County, WA\t46.550684\t-119.488974\n", "Spring Grove Cemetery, Spring Grove Avenue, Cincinnati, OH\t39.174331\t-84.524997\n", "Craters of the Moon National Monument & Preserve, Arco, ID\t43.416650\t-113.516650\n", @@ -2605,7 +2605,7 @@ "\n", "\n", "\n", - "The two tours are similar but not the same. I think the difference is that roads through the rockies and along the coast of the Carolinas tend to be very windy, so Randal's tour avoids them, whereas my program assumes staright-line roads and thus includes them. William Cook provides an\n", + "The two tours are similar but not the same. I think the difference is that roads through the rockies and along the coast of the Carolinas tend to be very windy, so Randal's tour avoids them, whereas my program assumes straight-line roads and thus includes them. William Cook provides an\n", "analysis, and a [tour that is shorter](http://www.math.uwaterloo.ca/tsp/usa50/index.html) than either Randal's or mine.\n", "\n", "Now let's go back to the [original web page](http://www.realestate3d.com/gps/latlong.htm) to get a bigger map with over 1000 cities. A shell command fetches the file:" @@ -2792,7 +2792,7 @@ "\n", "It is time to develop the *greedy algorithm*, so-called because at every step it greedily adds to the tour the edge that is shortest (even if that is not best in terms of long-range planning). The nearest neighbor algorithm always extended the tour by adding on to the end. The greedy algorithm is different in that it doesn't have a notion of *end* of the tour; instead it keeps a *set* of partial segments. Here's a brief statement of the algorithm:\n", "\n", - "> **Greedy Algorithm:** *Maintain a set of segments; intially each city defines its own 1-city segment. Find the shortest possible edge that connects two endpoints of two different segments, and join those segments with that edge. Repeat until we form a segment that tours all the cities.*\n", + "> **Greedy Algorithm:** *Maintain a set of segments; initially each city defines its own 1-city segment. Find the shortest possible edge that connects two endpoints of two different segments, and join those segments with that edge. Repeat until we form a segment that tours all the cities.*\n", "\n", "On each step of the algorithm, we want to \"find the shortest possible edge that connects two endpoints.\" That seems like an expensive operation to do on each step. So we will add in some data structures to enable us to speed up the computation. Here's a more detailed sketch of the algorithm:\n", "\n", @@ -3431,7 +3431,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If we have more than 3 cities, how do we split them? My approach is to imagine drawing an axis-aligned rectangle that is just big enough to contain all the cities. If the rectangle is wider than it is tall, then order all the cities by *x* coordiante and split that ordered list in half. If the rectangle is taller than it is wide, order and split the cities by *y* coordinate. " + "If we have more than 3 cities, how do we split them? My approach is to imagine drawing an axis-aligned rectangle that is just big enough to contain all the cities. If the rectangle is wider than it is tall, then order all the cities by *x* coordinate and split that ordered list in half. If the rectangle is taller than it is wide, order and split the cities by *y* coordinate. " ] }, { diff --git a/ipynb/WWW.ipynb b/ipynb/WWW.ipynb index 21017dc..b222814 100644 --- a/ipynb/WWW.ipynb +++ b/ipynb/WWW.ipynb @@ -519,7 +519,7 @@ "\n", "## 17 May 2016\n", "\n", - "The Thunder finished off the Spurs and beat the Warriors in game 1. Are the Thunder, like the Cavs, peaking at just the right time, after an inconsistant regular season? Is it time for Warriors fans to panic?\n", + "The Thunder finished off the Spurs and beat the Warriors in game 1. Are the Thunder, like the Cavs, peaking at just the right time, after an inconsistent regular season? Is it time for Warriors fans to panic?\n", "\n", "Sure, the Warriors were down a game twice in last year's playoffs and came back to win both times. Sure, the Warriors are still 3-1 against the Thunder this year, and only lost two games all season to elite teams (Spurs, Thunder, Cavs, Clippers, Raptors). But the Thunder are playing at a top level. Here's my update, showing that the loss cost the Warriors 5%:" ] diff --git a/py/ibol.py b/py/ibol.py index c76ddc2..d2490a6 100644 --- a/py/ibol.py +++ b/py/ibol.py @@ -157,7 +157,7 @@ def sreport(species): if d==glen: d = '>25' print 'diameter %s for %s (%d elements)' % (d, s, len(c)) SS[d] += 1 - print 'Diameters of %d labelled clusters: %s' % (len(set(species)), showh(SS)) + print 'Diameters of %d labeled clusters: %s' % (len(set(species)), showh(SS)) def compare(cl1, cl2): "Compare two lists of clusters" From 51bd5df844cb1bba3af79909f58a213775edecb5 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 4 Dec 2017 22:20:21 -0800 Subject: [PATCH 19/55] Add files via upload --- ipynb/Advent 2017.ipynb | 161 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 156 insertions(+), 5 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 1197420..3087c8e 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -411,7 +411,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This was an easy warmup puzzle. I forgot that Advent of Code was starting at 9:00PM my time, so I started late, but even if I had started on time, I doubt I would have been fast enough to score points. (I created a recurring calendar reminder so I'll be more likely to start on time in the future.)" + "This was an easy warmup puzzle. " ] }, { @@ -501,9 +501,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This day was also very easy. In Part One, I was slowed down by a typo: I had `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"`. Later on, Alex Martelli explained to me that the message meant that in `abs(max(row)=...)` it thought that `max(row)` was a keyword argument to `abs`. \n", + "This day was also very easy. In Part One, I was slowed down by a typo: I had `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"`. Later on, Alex Martelli explained to me that the message meant that in `abs(max(row)=...)` it thought that `max(row)` was a keyword argument to `abs`, as in `abs(x=-1)`.\n", "\n", - "In Part Two, note that to check that `a/b` is an exact integer, I used `a // b == a / b`, which I think is more clear and less error-prone than the expression one would typically use here, `a % b == 0`." + "In Part Two, note that to check that `a/b` is an exact integer, I used `a // b == a / b`, which I think is more clear and less error-prone than the expression one would typically use here, `a % b == 0`, which requires you to think about two things: division and the modulus operator (is it `a % b` or `b % a`?)." ] }, { @@ -653,7 +653,7 @@ "outputs": [], "source": [ "def spiralsums():\n", - " \"Yield the values of a spiral where each point has the sum of the 8 neighbors.\"\n", + " \"Yield the values of a spiral where each square has the sum of the 8 neighbors.\"\n", " value = defaultdict(int)\n", " for p in spiral():\n", " value[p] = sum(value[q] for q in neighbors8(p)) or 1\n", @@ -775,7 +775,158 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It took me less than five minutes, and my preparation with `Input` and `canon` helped, but I was still too slow to score any points." + "It took me less than five minutes, and my preparation with `Input` and `canon` helped, but I was still too slow to score any points--the top 20 took less than two minutes each." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 5](https://adventofcode.com/2017/day/5): A Maze of Twisty Trampolines, All Alike\n", + "\n", + "Let's first make sure we can read the data okay:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 2, 0, 0, -2, -2, -1, -4, -5, -6]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def jumps(): return [int(x) for x in Input(5)]\n", + "\n", + "jumps()[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now I'll make a little interpreter, `run`, which takes a list, `M` for memory, as input,\n", + "and maintains a program counter `pc`, and does the incrementing as described in the puzzle,\n", + "until the program counter is out of range:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "364539" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run(M):\n", + " pc = 0\n", + " for steps in count_from(1):\n", + " oldpc = pc\n", + " pc += M[pc]\n", + " M[oldpc] += 1\n", + " if pc not in range(len(M)):\n", + " return steps\n", + " \n", + "run(jumps())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two:**\n", + "\n", + "Part Two seems tricky, so I'll include an optional argument, `verbose`, to print out info as we go, to make sure I've got it right on a small example:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 0 [1, 3, 0, 1, -3]\n", + "2 1 [2, 3, 0, 1, -3]\n", + "3 4 [2, 2, 0, 1, -3]\n", + "4 1 [2, 2, 0, 1, -2]\n", + "5 3 [2, 3, 0, 1, -2]\n", + "6 4 [2, 3, 0, 2, -2]\n", + "7 2 [2, 3, 0, 2, -1]\n", + "8 2 [2, 3, 1, 2, -1]\n", + "9 3 [2, 3, 2, 2, -1]\n", + "10 5 [2, 3, 2, 3, -1]\n" + ] + }, + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run2(M, verbose=False):\n", + " pc = 0\n", + " for steps in count_from(1):\n", + " oldpc = pc\n", + " pc += M[pc]\n", + " M[oldpc] += (-1 if M[oldpc] >= 3 else 1)\n", + " if verbose: print(steps, pc, M)\n", + " if pc not in range(len(M)):\n", + " return steps\n", + " \n", + "run2([0, 3, 0, 1, -3], True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks right, so I can solve the puzzle:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "27477714" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "run2(jumps())" ] } ], From ccc285e74dc9d7dcc3125b6c407bfa60cd056765 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 4 Dec 2017 22:20:43 -0800 Subject: [PATCH 20/55] Add files via upload --- data/advent2017/input5.txt | 1074 ++++++++++++++++++++++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 data/advent2017/input5.txt diff --git a/data/advent2017/input5.txt b/data/advent2017/input5.txt new file mode 100644 index 0000000..d9555ca --- /dev/null +++ b/data/advent2017/input5.txt @@ -0,0 +1,1074 @@ +0 +2 +0 +0 +-2 +-2 +-1 +-4 +-5 +-6 +0 +1 +-5 +-3 +-10 +-8 +-2 +-13 +-14 +-15 +-8 +-5 +-13 +-16 +-21 +-3 +-14 +-23 +-9 +-11 +-19 +-29 +-2 +-20 +-28 +1 +-3 +-35 +1 +-20 +-4 +-37 +-11 +-27 +-33 +-43 +-20 +-5 +-9 +-22 +-47 +-5 +-49 +-13 +-22 +-2 +-2 +-51 +-53 +-22 +-38 +-16 +-37 +-30 +-49 +-48 +-35 +-5 +-42 +-21 +-31 +-61 +-43 +-31 +-72 +-35 +-3 +-31 +-65 +-78 +2 +-17 +-80 +-10 +-6 +-68 +-69 +-44 +-71 +-78 +-89 +-19 +-22 +-28 +-21 +-7 +-54 +-63 +-48 +-70 +-73 +-52 +-47 +-49 +-2 +-91 +-65 +-76 +-58 +-47 +-45 +-21 +-11 +-112 +-80 +-93 +-98 +-41 +-54 +-105 +-36 +-102 +-75 +-102 +-67 +-100 +-41 +-56 +-19 +-90 +-5 +-66 +-41 +-3 +-32 +-95 +-65 +-44 +-1 +1 +-62 +-7 +-29 +-61 +-7 +1 +-63 +0 +-20 +-58 +-58 +-7 +-54 +-80 +-48 +-51 +-151 +-141 +-37 +-122 +-130 +-132 +-158 +-117 +-63 +-103 +-130 +-116 +-130 +-63 +-134 +-131 +-59 +-30 +-33 +-38 +-127 +-31 +-76 +-35 +-162 +-132 +-121 +-31 +-28 +-2 +-29 +-148 +-156 +-168 +2 +-33 +-85 +-25 +-18 +-167 +-152 +-22 +-38 +-136 +-83 +-46 +-73 +-139 +-15 +-185 +-197 +-125 +-159 +-80 +-161 +-158 +-82 +-36 +-52 +-210 +-200 +-90 +-199 +-70 +-135 +-195 +-54 +-156 +-46 +-74 +-73 +-221 +-96 +-37 +-189 +-27 +-209 +-30 +-50 +-4 +-74 +-15 +-184 +2 +-78 +-33 +-37 +-99 +-65 +-196 +-32 +-36 +-188 +-62 +-5 +-244 +-116 +-150 +-118 +-124 +-54 +-28 +-43 +-208 +-205 +-95 +-90 +-129 +-242 +-70 +-144 +-64 +-247 +-170 +-213 +-40 +-173 +-90 +-77 +-139 +-56 +-70 +-120 +-9 +-68 +-78 +-7 +-123 +-103 +-173 +-254 +-249 +-246 +-139 +-192 +-92 +-204 +-71 +-199 +-56 +-63 +-231 +-23 +-115 +-240 +-51 +-200 +-184 +-287 +-98 +-7 +-81 +-275 +-262 +-260 +-32 +-99 +-28 +-199 +-160 +-176 +-210 +-244 +-162 +-82 +-35 +-276 +-71 +-114 +-222 +-294 +-28 +-122 +-110 +-178 +-264 +-239 +-104 +-85 +-11 +-117 +-15 +-69 +-275 +-289 +-212 +1 +-296 +-285 +-9 +-95 +-149 +-197 +-152 +-141 +-148 +-138 +-173 +-224 +-297 +-299 +-53 +-335 +-36 +-17 +-291 +-25 +-211 +-175 +-104 +-328 +-58 +-15 +-198 +-102 +-122 +-211 +-74 +-117 +-205 +-143 +-353 +-187 +-323 +-172 +-133 +-170 +-41 +-92 +-84 +-72 +-352 +-278 +-164 +-124 +-175 +-113 +-175 +-152 +-160 +-33 +-126 +-226 +-237 +-135 +-156 +-190 +-378 +-168 +-271 +-240 +-111 +-398 +-91 +-243 +-336 +-311 +-368 +-396 +-202 +-262 +-18 +-303 +-363 +-67 +-36 +-284 +-404 +-120 +-97 +-387 +-26 +-135 +-112 +-325 +-82 +-53 +-307 +-410 +-276 +-384 +-64 +-60 +-412 +-335 +-356 +-82 +-134 +-251 +-408 +-342 +-9 +-73 +-27 +-388 +-434 +-80 +-231 +-114 +0 +-64 +-325 +-251 +-153 +-109 +1 +-92 +-167 +-89 +-454 +-154 +-13 +-283 +-231 +-357 +-244 +-324 +-134 +-41 +-380 +-169 +-247 +-301 +-297 +-388 +-304 +-135 +-403 +-168 +-314 +-117 +-281 +-76 +-473 +-281 +-322 +-79 +-39 +-129 +-432 +-452 +-183 +-164 +-76 +-382 +-306 +-58 +-126 +-141 +-4 +-3 +-201 +-480 +-443 +-313 +-361 +-279 +-250 +-38 +-1 +-340 +-138 +-69 +-462 +-32 +-68 +-19 +-31 +-271 +-86 +-141 +-331 +-412 +-29 +-369 +-518 +-103 +-502 +-24 +-67 +-130 +-247 +-331 +-535 +-77 +-305 +-153 +-44 +-382 +-309 +-162 +-430 +-480 +-25 +-431 +-78 +-442 +-549 +-184 +-523 +-94 +-380 +-227 +-526 +-209 +-508 +-129 +-36 +-510 +-310 +-133 +-145 +-146 +-244 +-245 +-541 +-362 +-7 +-103 +-565 +-209 +2 +-140 +-51 +-572 +-28 +-354 +-525 +-148 +-79 +-176 +-34 +-396 +-162 +-374 +-448 +-76 +-87 +-136 +-584 +-179 +-230 +-490 +-361 +-333 +-328 +-34 +-524 +-273 +-195 +-32 +-520 +-260 +-506 +-576 +-422 +-115 +-65 +-285 +-314 +-322 +-146 +-287 +-251 +-585 +-326 +-77 +-250 +-321 +-334 +-560 +-455 +-523 +-90 +-234 +-343 +-457 +-395 +-173 +-560 +-474 +-118 +-244 +-263 +-493 +-597 +-232 +-237 +-619 +-372 +-416 +-142 +-93 +-546 +-538 +-198 +-574 +-250 +-491 +-168 +-47 +-247 +-127 +-641 +-228 +-192 +-545 +-543 +-172 +-220 +-277 +-647 +-87 +-198 +-450 +-247 +-15 +-406 +-562 +-335 +-436 +-665 +-362 +-211 +-582 +-178 +-523 +-232 +-287 +-635 +-33 +-666 +-577 +-54 +-509 +-271 +-561 +-491 +-512 +-212 +-269 +-473 +-460 +-587 +-209 +-538 +-14 +-303 +-360 +-275 +-125 +-373 +-108 +-31 +-314 +-639 +-220 +-52 +-378 +-398 +-369 +-594 +-204 +-423 +-441 +-447 +-27 +-495 +-595 +-352 +-388 +-127 +-424 +-609 +-435 +-626 +-191 +-46 +-363 +-15 +-557 +-433 +-53 +-680 +-129 +-462 +-40 +-598 +-246 +-468 +-600 +-351 +-409 +-89 +-732 +-178 +-472 +-335 +-622 +-563 +-322 +-261 +-63 +-671 +-291 +-591 +-518 +-373 +-615 +-727 +-553 +-166 +-108 +-723 +-77 +-736 +-364 +-765 +-49 +-41 +-99 +-134 +-684 +-281 +-530 +-545 +-372 +-570 +-48 +-288 +-583 +-421 +-601 +-162 +-176 +-414 +-735 +-195 +-786 +-656 +-488 +-744 +-256 +-345 +-152 +-44 +-29 +1 +-582 +-30 +-351 +-379 +-23 +-48 +-737 +-293 +-525 +-73 +-79 +-531 +-775 +-706 +-59 +-74 +-805 +-311 +-544 +-33 +-603 +-454 +-700 +-506 +-489 +-617 +-485 +-267 +-794 +-13 +-707 +-557 +-368 +-730 +-696 +-728 +-167 +-413 +-639 +-705 +-391 +-11 +-195 +-416 +-788 +-295 +-768 +-192 +-2 +-771 +-675 +-687 +-198 +-568 +-663 +-302 +-732 +-265 +-796 +-370 +-18 +-579 +-771 +-349 +-365 +-214 +-598 +-314 +-752 +-315 +-815 +-487 +-511 +-126 +-6 +-146 +-353 +-787 +-204 +-330 +-517 +-456 +-805 +-4 +-500 +-150 +-242 +-833 +-804 +-663 +-554 +-41 +-607 +-121 +-762 +-892 +-249 +-405 +-403 +-255 +-457 +-613 +-91 +-157 +-890 +-631 +-908 +-544 +-487 +-813 +-541 +-108 +-147 +-702 +-301 +-430 +-66 +-492 +-902 +-284 +-464 +-784 +-312 +-762 +-588 +-17 +-809 +-436 +-483 +-16 +-410 +-180 +-568 +-37 +-687 +-444 +-619 +-211 +-386 +-673 +-600 +-155 +-558 +-849 +-37 +-717 +-867 +-236 +-98 +-165 +-579 +-677 +-691 +-602 +-878 +-555 +-893 +-773 +-395 +-942 +-661 +-850 +-881 +-485 +-312 +-689 +-258 +-899 +-120 +-227 +-349 +-467 +-404 +-45 +-919 +-329 +-365 +-22 +-462 +-632 +-498 +-873 +-288 +-901 +-655 +-321 +-922 +-882 +-416 +-946 +-320 +-5 +-57 +-352 +-711 +-197 +-705 +-737 +-439 +-39 +-252 +-1002 +-617 +-373 +-605 +-887 +-451 +-824 +-455 +-66 +-619 +-18 +-404 +-64 +-736 +-44 +-381 +-447 +-567 +-877 +-411 +-216 +-635 +-598 +-419 +-577 +-142 +-189 +-917 +-692 +-153 +-2 +-116 +-172 +-423 +-886 +-454 +-492 +-491 +-656 +-832 +-1036 +-468 +-23 +-709 +-292 +-668 +-454 +-478 +-302 +-182 +-677 +-904 +-648 +-513 +-901 +-331 +-750 +-445 +-758 +-842 +-372 +-471 +-109 +-239 +-704 +-817 +-340 +-591 +-40 From 0d156a73d9e5d9f8798680db630c73cb96823739 Mon Sep 17 00:00:00 2001 From: Nicholas C <34197135+shredz7@users.noreply.github.com> Date: Tue, 5 Dec 2017 20:40:51 -0600 Subject: [PATCH 21/55] Change module to modulo in Beal.ipynb --- ipynb/Beal.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipynb/Beal.ipynb b/ipynb/Beal.ipynb index 2e60a2d..71cad1f 100644 --- a/ipynb/Beal.ipynb +++ b/ipynb/Beal.ipynb @@ -819,7 +819,7 @@ "\n", "# Faster Arithmetic (mod *p*)\n", "\n", - "Arithmetic is slow with integers that have thousands of digits. If we want to explore much further, we'll have to make the program more efficient. An obvious improvement would be to do all the arithmetic module some number $m$. Then we know:\n", + "Arithmetic is slow with integers that have thousands of digits. If we want to explore much further, we'll have to make the program more efficient. An obvious improvement would be to do all the arithmetic modulo some number $m$. Then we know:\n", "\n", "$$\\mbox{if} ~~ \n", "A^x + B^y = C^z\n", From 32bf3c22987b9bfe6b72351967875454929f32a5 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Tue, 5 Dec 2017 23:14:26 -0800 Subject: [PATCH 22/55] Add files via upload --- ipynb/Advent 2017.ipynb | 222 +++++++++++++++++++++++++++++++++++----- 1 file changed, 198 insertions(+), 24 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 3087c8e..8609645 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -784,7 +784,7 @@ "source": [ "# [Day 5](https://adventofcode.com/2017/day/5): A Maze of Twisty Trampolines, All Alike\n", "\n", - "Let's first make sure we can read the data okay:" + "Let's first make sure we can read the data/program okay:" ] }, { @@ -795,7 +795,7 @@ { "data": { "text/plain": [ - "[0, 2, 0, 0, -2, -2, -1, -4, -5, -6]" + "(0, 2, 0, 0, -2, -2, -1, -4, -5, -6)" ] }, "execution_count": 18, @@ -804,17 +804,17 @@ } ], "source": [ - "def jumps(): return [int(x) for x in Input(5)]\n", + "program = mapt(int, Input(5))\n", "\n", - "jumps()[:10]" + "program[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now I'll make a little interpreter, `run`, which takes a list, `M` for memory, as input,\n", - "and maintains a program counter `pc`, and does the incrementing as described in the puzzle,\n", + "Now I'll make a little interpreter, `run`, which takes a program, loads it into memory,\n", + " and executes the instruction, maintaining a program counter, `pc`, and doing the incrementing/branching as described in the puzzle,\n", "until the program counter is out of range:" ] }, @@ -835,16 +835,17 @@ } ], "source": [ - "def run(M):\n", - " pc = 0\n", - " for steps in count_from(1):\n", + "def run(program):\n", + " memory = list(program)\n", + " pc = steps = 0\n", + " while pc in range(len(memory)):\n", + " steps += 1\n", " oldpc = pc\n", - " pc += M[pc]\n", - " M[oldpc] += 1\n", - " if pc not in range(len(M)):\n", - " return steps\n", + " pc += memory[pc]\n", + " memory[oldpc] += 1\n", + " return steps\n", " \n", - "run(jumps())" + "run(program)" ] }, { @@ -853,7 +854,7 @@ "source": [ "**Part Two:**\n", "\n", - "Part Two seems tricky, so I'll include an optional argument, `verbose`, to print out info as we go, to make sure I've got it right on a small example:" + "Part Two seems tricky, so I'll include an optional argument, `verbose`, and check if the printout it produces matches the example in the puzzle description:" ] }, { @@ -889,15 +890,16 @@ } ], "source": [ - "def run2(M, verbose=False):\n", - " pc = 0\n", - " for steps in count_from(1):\n", + "def run2(program, verbose=False):\n", + " memory = list(program)\n", + " pc = steps = 0\n", + " while pc in range(len(memory)):\n", + " steps += 1\n", " oldpc = pc\n", - " pc += M[pc]\n", - " M[oldpc] += (-1 if M[oldpc] >= 3 else 1)\n", - " if verbose: print(steps, pc, M)\n", - " if pc not in range(len(M)):\n", - " return steps\n", + " pc += memory[pc]\n", + " memory[oldpc] += (-1 if memory[oldpc] >= 3 else 1)\n", + " if verbose: print(steps, pc, memory)\n", + " return steps\n", " \n", "run2([0, 3, 0, 1, -3], True)" ] @@ -926,7 +928,179 @@ } ], "source": [ - "run2(jumps())" + "run2(program)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Thanks to [Clement Sreeves](https://github.com/ClementSreeves) for the suggestion of making a distinction between the `program` and the `memory`. In my first version, `run` would mutate the argument, which was OK for a short exercise, but not best practice for a reliable API." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 6](https://adventofcode.com/2017/day/6): Memory Reallocation " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I had to read the puzzle description carefully, but then it is pretty clear what to do. I'll keep a set of previously seen configurations, which will all be tuples. But in the function `spread`, I want to mutate the configuration of banks, so I will convert to a list at the start, then convert back to a tuple at the end." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "banks = vector('4\t10\t4\t1\t8\t4\t9\t14\t5\t1\t14\t15\t0\t15\t3\t5')\n", + "\n", + "def realloc(banks):\n", + " \"How many cycles until we reach a configuration we've seen before?\"\n", + " seen = {banks}\n", + " for cycles in count_from(1):\n", + " banks = spread(banks)\n", + " if banks in seen:\n", + " return cycles\n", + " seen.add(banks)\n", + " \n", + "def spread(banks):\n", + " \"Find the area with the most blocks, and spread them evenly to following areas.\"\n", + " banks = list(banks)\n", + " maxi = max(range(len(banks)), key=lambda i: banks[i])\n", + " blocks = banks[maxi]\n", + " banks[maxi] = 0\n", + " for i in range(maxi + 1, maxi + 1 + blocks):\n", + " banks[i % len(banks)] += 1\n", + " return tuple(banks)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2, 4, 1, 2)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spread((0, 2, 7, 0))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "realloc((0, 2, 7, 0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These tests look good; let's solve the problem:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12841" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "realloc(banks)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two:** Here I will just replace the `set` of `seen` banks with a `dict` of `{bank: cycle_number}`; everything else is the same, and the final result is the current cycle number minus the cycle number of the previously-seen tuple of banks." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def realloc2(banks):\n", + " \"When we hit a cycle, what is the length of the cycle?\"\n", + " seen = {banks: 0}\n", + " for cycles in count_from(1):\n", + " banks = spread(banks)\n", + " if banks in seen:\n", + " return cycles - seen[banks]\n", + " seen[banks] = cycles\n", + "\n", + "realloc2((0, 2, 7, 0))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8038" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "realloc2(banks)" ] } ], From 3f9d45a87cb5b22947d6652a6c1d387bce7a63a8 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Fri, 8 Dec 2017 22:07:16 -0800 Subject: [PATCH 23/55] Add files via upload --- data/advent2017/input7.txt | 1337 ++++++++++++++++++++++++++++++++++++ data/advent2017/input8.txt | 1000 +++++++++++++++++++++++++++ data/advent2017/input9.txt | 1 + 3 files changed, 2338 insertions(+) create mode 100644 data/advent2017/input7.txt create mode 100644 data/advent2017/input8.txt create mode 100644 data/advent2017/input9.txt diff --git a/data/advent2017/input7.txt b/data/advent2017/input7.txt new file mode 100644 index 0000000..e43ac95 --- /dev/null +++ b/data/advent2017/input7.txt @@ -0,0 +1,1337 @@ +ifyzcgi (14) +axjvvur (50) +tcmdaji (40) -> wjbdxln, amtqhf +yjzqr (73) +smascq (97) +hyehtm (7) +oylvq (136) -> witry, cvlod +csyiik (34) +zivjpfo (23) -> lcchgb, bhqlq +ggfmiv (94) +vpltn (41) +gzxnn (171) -> mqodhde, djvkd +bsfygp (75) +dnrjb (9) +ohdnhx (261) -> tgiou, lndczw +frcrd (56) +cldaag (31) -> orbcuzi, teyakvf +vphlxz (26) +nljmcv (47) +xcxqa (6759) -> znely, rtsbgwx, hilafgl +hywzja (81) +ytxcti (60) +igzvp (68) +uzvsml (34) +keusrg (27) +tlmfw (45) -> pehflc, lefxyzt +hjmtrw (6772) -> cblhmk, zzflc, xsztla, iitbuxz, tckyc +ahjlf (1474) -> ejvipa, xhzyzer, pzwtjfj +egszxz (14) +skmuo (1607) -> rxsihsa, vsslzfp +ifyja (32) -> rvixnmq, aumrixf, wbenaek, jkkwtd, ywnsmem, mmhtyd, xmzzrgs +dwnokzu (311) -> xinfpy, lwvfsu +txbgfm (33) +roqfxg (62) -> wrhnq, rskara +autjn (29) +hnedp (10) +owxawf (60) -> twoyl, sikmtaj, lvptmrf +jensj (281) +sglkjsh (66) +eeziziu (34) +qjuuu (83) +iebulx (297) -> mqcflzv, nafrmeo +lhfuku (159) -> syzcti, ynhvfvx, ckegba +mxnlv (61) +emtjcx (60) +jspui (58) -> chlpx, xjkquk, afyxhh +nmikggy (64) +vatflrk (6) -> uxbhu, gekygl, xdyrvy, wesoooi, esphpt +jfcoc (41) +gyepcnc (6) +atbiby (80) -> aqtog, qjsvs +ygnkwn (52) +piexct (65) +uitfx (39) +rdvciwk (55) +jkgnvbn (23) +xpewzk (45) +vlqyxe (337) -> rosfnb, vphlxz +bmdgthp (215) -> kyfuyaf, tzrqqk +czafdho (24) +emuwzd (102) -> ifyzcgi, edotax +fwabsk (14) +uftnfv (53) +ndkcn (39) -> mkjuq, ghcgz, cxpwfir, lxwvf, nsghrq, vyvrn +srzfd (77) +gqhnstx (870) -> xmedt, brzucfh, layqazp +bdnjn (57) +pbckxv (14) +fbpbs (74) +zwutlym (92) +lzeud (290) -> igkrktn, oixlcn +gjctf (27) +azmneyd (60) +wbenaek (253) -> gdunxee, vgiqvsi, bmlkhaf +orpjw (72) +dgyulo (9) +qklqozd (125) -> otikjx, wuvhyc, dwejsn +waiwj (47) +bnevesk (256) -> dmglcj, blnwcb +yqnjd (50) +vvkkkpb (39) +ciprksz (84) +hblux (91) +dfywz (60) +jeiqx (26) +zdissfg (7) +mriqcjy (66) +eydak (49) +qwxwd (49) +plhlj (64) +nqgbp (67) +ewwfzg (70) +djzjiwd (44600) -> zszzkl, hrnrjrt, hjmtrw +mtflvu (71) +shesfq (143) -> ohdnhx, uhnqr, zdglrh, ripilxo, gfszte +huzokb (298) -> mnqii, mieqti +ohuvsf (83) +wcdibhx (196) -> xvwvc, ncmad, jkgnvbn +fxlbc (184) -> mdqeh, kmvcmg, sonvcww, pcckqq +lnknp (91) +swugafb (504) -> ryazls, vmkeu, fewrzd +pmadd (97) +mprgtb (42) +lorxjw (62) +welidg (97) +zzbad (30) -> npccgnv, yqnjd +dwejsn (40) +fvivo (225) -> worqh, yjzqr +zuawuo (111) -> jktlfu, uhvtpfy, ivlus +ikaol (26) +mmhtyd (220) -> yekmflj, nmikggy, xepgx +hujjten (37) +htqps (36) +dlobfkw (44) +fxrijc (57) +xgfad (33) -> zivlnu, ipsst +pafiy (17) -> dhtxpbb, dgcecu +cblhmk (1108) -> ggmhxx, tysdkgl, rrvbwb +kioga (93) +ljhlxc (83) +qsvbb (56) +uaffk (61) +lvptmrf (58) +hebhue (11) +eefyyr (10) +wyylpt (184) -> oneoorw, cfbaj +vmboh (90) +ghcgz (195) -> tajfmq, yzufk +jjhrmi (190) -> qhubjd, uycop +teduvv (25) +xjadrfg (28) +ugcccv (67) -> wehdeq, gyepcnc +psdzpg (38) +hyhbu (593) -> sblfh, ekvdv, iicpkf, xidtz +satjdgz (60) +cjbdxts (34) +gdunxee (53) +fqswta (47) +iwouvid (81) +iqbdxb (67) +ozbjpiq (16) +ysafyj (97) +lcchgb (82) +wkamonm (19) +waqca (61) +bbeyl (9) +rkfspx (17) +nggtuh (64) +jmypc (20) +yfegso (122) -> yhsmjfq, jzmacb, autjn, werkz +zirysk (72) +rtsbgwx (251) -> cbmqx, hvmlb, rsstvn, jtyurkp, gmkvgf, qkawtfu, ggwtf +yxgwsj (14) +xmgqmv (84) +lncmhi (48) +orclyi (30) +bjwny (94) +zehkwy (69) +mzajj (92) -> nljmcv, waiwj +ffsehyc (17) +agelbfq (343) -> iuchai, qynrx +dgcecu (86) +wtqxei (61) -> afywb, dqbfloz +vlmihf (32) +lovox (77) +cmvofka (30) +ttbuzrh (96) +vsunxw (196) -> pdbykx, dnynny, pqjua, jhnujj +skfnp (97) +upuybrd (300) -> dnrjb, rfknc, bbeyl +cpmebw (60) +wkmtw (59) +rpvwtq (5) +jenfafh (58) +pubtxq (51) +xlkwyg (55) +iltoh (22) +ctaazgn (103) -> hywzja, pywmbis +zxhqlfy (26) +dklujy (76) +khgvmj (66) +yfnkp (33) +edsjbi (37) +brtomr (75) +siqcu (15) +kxdehcg (13) +vmkeu (315) +momda (90) +pocvrcs (6) +sonvcww (17) +nemrt (91) +ldbkyg (75) +jsrrt (22) +ifuvyo (180) -> zvszwl, utewfcr, dtmbf +kfzqw (80) +iyfyi (41) +tykwy (44) +twgjdmg (24) +qface (27) +ygkdmh (74) +sblfh (120) -> gglxj, fqswta +gbldz (49) -> xitcp, jpynea +hmjpa (122) -> elovaun, uijgiu, apxgf, nlacdac +wsixz (14) +vgegr (83) +fggyk (46) +kjoru (16) +ixqrl (22) +gklehu (84) -> sazbmjz, piexct +xxego (33) +jxfimbl (95) -> nvpdisw, kioga +vymmkdf (116) -> ofqbu, sboms, obbpd, czafdho +jpwtbds (1608) -> zwutlym, qntzr +xsztla (828) -> cmdizw, qxkhq, nfcbi, rtutzu +wtfliw (87) +lbxrh (94) +ybioco (29) +yvdhwyh (102) -> xpewzk, hdxrbzc, vsaejz, pudso +eauxeyl (53) +skuazsw (70) +jlcie (99) +ckmftuc (21) -> khixdho, ihzsljz, uvkxner +yuikqm (68) +dqbfloz (87) +zofjia (133) -> gshsx, ntkpthi +vyvrn (173) -> lrjbgd, vwojto +tszockk (729) -> ctaazgn, gqbwc, wcdibhx, cujimpt +ydqqgrw (15) +hcxwql (398) -> lpoejf, cmvofka +gjedup (5) +arelp (195) +aonfn (235) -> kzkfcn, eefyyr +lsgbe (99) +gunvu (99) +kasaf (34) +imohij (13) +khwbzl (1131) -> zlbnkdc, ljmrml, roqfxg +nwikfyc (80) +khtegw (91) +epggt (90) +yapaib (175) -> gunvu, ymdmn +saawhdk (12641) -> vwvowk, ilcsp, vatflrk, iajts +qoetrb (15) +ztmmr (147) -> ypkhqlq, uitfx +uqfbnlo (69) +sgrhs (249) -> zymggc, wnvrg +hqjinj (101) -> skuazsw, ewwfzg +vmpnccn (73) -> bidhw, qriyeb, xsyzhcf, ehjjbu +vqddcl (71) +yffeit (76) +xvzinl (99) +znzbkh (16) -> swnan, tbioyr +gnjit (23) -> dhfagjw, xxnpoe +qojhhod (1789) -> sjdanf, hmjpa, szglq +aluqao (313) -> lyhlx, ouhuptm +ipysrdj (222) +worqh (73) +tsxfibs (46) -> yfnkp, edjlm, txbgfm +pcumn (420) -> qwcyozf, dskuj, anoxh, dkmkdfd, fkapr +mejwrm (139) -> oxsewk, zsknxq +aynpyne (44) +sikmtaj (58) +sbfprua (70) +wwofru (53) +nmuxe (88) +uuvtlk (74) +rqisvrh (2703) -> bvmgt, gbxxpd, ffinat, ympbbx, uimoc, shesfq +ehjjbu (89) +cbmqx (163) -> bnlbs, psdzpg +naekrk (70) +cvnrr (17) +pwnqyt (133) -> zijzutq, yvdhwyh, vbmyyrh +sagyrje (49) +efuysje (97) +pzwtjfj (74) -> oyienb, ozbjpiq +ggmhxx (42) -> fhhgts, cepxc, zwzxy +bhfui (13) +chlpx (87) +hmlbrz (55) +oneoorw (90) +kyfuyaf (79) +kiylza (88) +fghxbc (99) -> fozagvz, wqgssb, kqqsq, oijwjli +qgxgzo (14) +cubqfzc (184) -> qwmqci, dmvcduz +lcqfe (61) +xypffi (11) +qntzr (92) +mkjuq (181) -> jdiczst, edsjbi +dhtii (62) -> kfzqw, lbozpy +amtqhf (99) +ixknk (37) +iuapj (162) -> gzfrn, wqtuhe, fndyvvn, zjveu, iebulx, agelbfq +khtooum (53) +aecsfp (72) +fcdcdh (88) +junfev (18) +pxfrz (91) +xratfed (6) +gwbfat (26) +cvcblhv (73) -> jbnns, glkjrrs +sdfvrod (114) -> lcqfe, uigcn +xkfkucf (951) -> skbrota, pwvahdb, odpqjr +okkvefs (820) -> fpuscxk, zhdioii, gzxnn, koxnez +dgosy (59) +yhvndwy (27) +pefzsea (86) +xaogy (131) -> ixknk, ykvss, hujjten +nvpdisw (93) +lmkwafp (56) +cwnvk (51) -> tvdsktm, pwzsq, plhlj, ayqbj +phbtrm (171) -> hmmjjct, xzvln +mrmbyj (53) +jibemf (87) +tysdkgl (20) -> mrwbv, llkaoeh +fpuscxk (147) -> ypdumo, lvdrrk +ejkumeu (235) -> xypffi, nvcafwu, cvdows +uijgiu (38) +cjjynt (264) -> rkwhbhr, axjvvur +nobfn (236) +svanha (62) +nuxxmd (53) -> lybaepp, eolqn +vsaejz (45) +hbbpuc (238) -> thrvlt, ziiqv +tbley (31) -> nvfca, nojly, nguafeb +bkkwe (70) +tywzxwb (24) -> lbhlxqa, dklujy, vzxktth +ezqeusd (71) +qwcyozf (115) -> igzvp, vtefqb +xpwxo (80) +layqazp (39) +hwdtvvc (40) +pwnxw (69) +jobwpao (181) -> pqgiox, uloppmh +wrhnq (87) +amsfvm (53) -> nqgbp, bcldmsg +dfxjjzr (190) -> udaitd, sdktm +cnwzxpy (65) +kpvbt (85) +ifbhg (62) +cpeonw (27) +rsizei (20) +gmkvgf (63) -> tykwy, dlobfkw, aynpyne, vaovit +bjiuus (56) +bwpeux (17) +szrkuzi (27) +ygvpk (33701) -> saawhdk, svthizp, abamn +mjtji (35) +rqvvv (50) -> pzbxpou, rxzfdg +pozua (128) -> vljjqbw, hmlbrz +hmjueiq (79) +hdxrbzc (45) +twway (181) -> orclyi, hmdxion +jocmdmv (72) +lacddy (68) +lsxjl (94) +edotax (14) +gmirjhi (62) +iwicpur (10) +uigcn (61) +ynhvfvx (32) +ugavy (91) +jbgxcj (48) +zdglrh (239) -> csrww, haqaohl, gskveo, qoetrb +lmlsog (62) +sazbmjz (65) +ymeoz (24) -> lbxrh, lsxjl +hhqmsd (34) +ykmfoah (245) +lfdefc (30) +qynrx (53) +znely (919) -> qcmnpm, yjutt, yqgesx +cauig (58) +gvamhux (71) +hqqingt (13) +fiynt (72) +tyysd (63) -> cjjynt, lzeud, wyylpt, pewxc, ibevwow, fvmeeas, uksnrfx +igkrktn (37) +pzbxpou (87) +dllzp (59) +iblvki (11) +vaovit (44) +tcpduh (212) +btpvxq (56) -> urktg, ifnkl, hbbpuc, casmwo, ylqvuk, dblmcye, zvpboy +xxnpoe (67) +sboms (24) +whvvemg (83) -> tafss, vnfigul +ljjyy (64) +qvdid (70) +koxnez (71) -> bolpsk, pefzsea +elgtk (40) +wesoooi (87) -> pmadd, welidg +tiikt (92) +eadvs (797) -> ofnewz, neywe, qklqozd, ykmfoah +sreke (34) +clqqyi (51) +kuufl (1074) -> aonfn, cgrima, lhfuku +qswoy (7) -> bklfmch, xpwxo, eoustfr +rakfg (91) -> fiynt, opdtk, qkhvu +zvgsa (59) +gskveo (15) +clbbi (27) +ilcsp (844) -> pafiy, phbtrm, nwupf +blnwcb (17) +udaitd (23) +aewmad (73) +tvdsktm (64) +zavcu (25) +gglxj (47) +jmrlaxf (48) +sppxnti (48) +zhdioii (243) +olepfo (98) +ezsnmw (14) +hsmjm (25) +xmuxsr (44) -> bjiuus, qqjly +kmvcmg (17) +zuoeh (7782) -> hbaxtai, pmefov, zfteizz +sqxrad (80) -> marord, jbgxcj, xsmyok +vrbcn (34) +ibevwow (308) -> cvnabd, pbckxv, xrunic, ezsnmw +rqilp (25) -> quwfos, vekxdqh +ojfzokk (99) +bjwvw (209) +sygjhzp (36) -> hsxhyf, knqxdq +pjvnmqn (43) -> azoutv, jwhcmc +qqjly (56) +iezyfwf (20) +wrlkfij (55) +wuvhyc (40) +aqgtml (51) -> wywxu, tiikt, uwnwp +fhjysp (164) -> czvyrzi, nbmnwsq +rmlru (71) +bdiiv (15) +tlxekcp (42) +lbozpy (80) +uksnrfx (224) -> bkkwe, sbfprua +gmuwpyi (90) +zsqzm (64) +evhhfo (5) +xdyrvy (189) -> wyois, cwkdlil +gbxxpd (82) -> rynmge, hngao, vlqyxe, jhyjqxq +nzhqepw (60) +zfteizz (59) -> ytvjxq, vhoasjq, fwwub, xglsp, cubqfzc, nfucnzx +ulragq (39) +jgrsa (269) -> ukfsn, kptjhtd +uisnk (2228) -> tbley, eqkot, tlmfw, gnjit +chyhykz (59) +zjveu (437) -> qhyfphs, bfwnv +syliku (78) +syzcti (32) +nnmayb (85) +zdqmuey (209) -> ibkfqok, lhmgw +myopc (16) +cifdyio (74) +nguafeb (42) +dbczwnr (15) +vxede (10) +ouhuptm (52) +sdyox (93) +slahk (43) +skbrota (217) -> toeyz, gjcibb +hbaxtai (851) -> zynpp, ylbaxtu, rfwaq +hvdfq (112) -> imohij, pwetqid +zgfqdv (15) +dpqxfp (209) +arskvgv (88) +bqywl (157) -> ooufod, clqqyi +ymataqq (22) +krwgy (109) -> dllzp, xqpfvwx +ohsyhln (53) +ofqbu (24) +ccpnopa (59) +bfkbp (156) +bolpsk (86) +tckyc (456) -> dzfclsm, sqxrad, qkrpzl, ppcsoo, rqvvv +qbftkij (204) -> rtcfcyn, vlmihf +bpcnzi (82) +rhacrz (27) +wzbqh (306) -> xratfed, fjcobs, enlctw, pklcmix +qqnmzb (1723) -> mzyqoc, soirl, dhtii, ahbcl +tuvehcz (17) +yzufk (30) +xsmyok (48) +tgiou (19) +izvtqsa (84) +ooufod (51) +rfwaq (80) -> nmuxe, ttofoep +lpoejf (30) +oykwsk (76) +wdipy (92) +jbnns (93) +qcxiehu (312) -> eeune, gbldz, ztmmr +vsslzfp (91) +uimoc (30) -> crhojk, ejkumeu, lovaf, fhjysp, uxbrs, qbftkij +phtghp (3945) -> rpjozji, swnafht, swugafb, guyrnpn, evbtz, hyhbu +svthizp (1149) -> saddwx, olhnx, uisnk, iuapj, btpvxq, iovxjv +xvwvc (23) +ovpzt (139) -> dfywz, emtjcx +uatlbrq (17) +hmpisyb (41) -> igdtz, lnmhw, ttpmzgm, dkxzsaq +pehflc (56) +iedfk (49) -> ydqqgrw, bdiiv +nomeb (112) -> mmfuve, lxudoaz +ffuqr (90) +gsgwqk (204) -> ddraicf, dgyulo +igqle (222) +jhcwkl (41) +yfusbw (76) +lpsafeq (51) +lklqxg (83) +lofayaa (22) +itqwz (113) -> rhacrz, keusrg +xbidr (74) -> pozua, gisiv, skpux, tcmdaji, gorpw, yfegso, waakcx +pnouux (9) +ryazls (221) -> zhpfgzv, rvpxob +bxwng (53) +xwkyrer (8691) -> srnnjbb, qcxiehu, gqhnstx, ghdbwu +nbmnwsq (52) +cxfsoh (53) +gdylf (74) -> jlcie, hewatw, sdpsl +vksyy (96) -> wfpzhfz, phsmt, zuwaw +qekxzsx (87) +qzglav (42) -> ubxvdq, aqvtgi +xsoqzbe (1068) -> llgbz, itqwz, yxzlpnj +lndczw (19) +perzy (46) +oigsk (38) +uytsra (106) -> hkgxpgh, gzxddd +zszzkl (72) -> ifyja, cdqdm, rwmdbn, exwzzr, leyikdx +wfvjnxf (93) +pklcmix (6) +cvpuwrb (82) +ileugiu (225) +defbun (57) +fbzvm (72) -> vgexqw, cejtpyf +aduikk (133) -> kmfel, paopwt, hdjzg, qckzqv +shlfz (3932) -> swcvn, obwkzhc, pcumn +yhjhgu (57) +vgiqvsi (53) +iajts (451) -> izzzyqd, fegaac, jagdwg, mblvpm +kxwbdvm (1104) -> mzajj, ubuge, ddguar, znzbkh +rynmge (25) -> ecwjaw, zdqsmv, aodoc, pxfrz +bqxnoid (31) -> aqgtml, qprenhy, upuybrd, sgrhs, flptbw, mxwbp, boszym +kqqsq (37) +xrunic (14) +vqnyvr (57) +lvdrrk (48) +bamxvq (86) -> zywvdda, ygnkwn, taxrkif +xkzvo (33) +vhoasjq (226) -> uogva, tuvehcz +hkgxpgh (46) +zocwx (35) +qhyfphs (6) +coselm (44) +ypbrxyq (206) -> siqcu, kqicqf +ffgzg (151) +ujuunj (64) +iuchai (53) +ykvss (37) +ovszp (64) +helyfoo (65) +pryhgj (81) +fxhqq (29) +eeshl (30) +qzftgbx (44) +ppcsoo (26) -> gwqgewp, lsgbe +xinfpy (53) +ddraicf (9) +xidtz (126) -> azuoza, coselm +ipsst (23) +wzvzgg (60) +fqqyipa (200) -> eeshl, cxqeyt, qkhqrq +jpyvpw (20) +xhzyzer (82) -> pawvr, dckbvlg +boszym (129) -> rqrhrnz, beewze, evqibrc +kabqu (38) +sdpsl (99) +bekguie (31) +klovr (30) -> kihqh, wafjqj +zklbfdg (47) +ccter (84) +wzqanwj (240) -> zavcu, hsmjm +uxbrs (94) -> qekxzsx, odqns +dzxpqj (22) +csrww (15) +wwxak (108) -> vbmqj, ugavy +etfbuu (22) +miwst (40) +iiugq (15) +cuprzhk (40) +waakcx (238) +faijmsh (35) -> rwakmo, nwikfyc +cvlod (76) +sjgvkg (1566) -> cldaag, bjwvw, dpqxfp, dgdtt, ujbzq +ixxww (61) +mipqe (91) +xitcp (88) +lxudoaz (51) +ibkfqok (19) +ulchkal (55) +qubli (60) +tsamaj (1171) -> axgndac, vbuvkx, uqeag, qyurm, lzypz +mmpnppi (60) +prlvn (63) +ddwursx (245) -> sdwrx, jtfylv +aljgr (62) +glkjrrs (93) +vwftcva (46) +ylbaxtu (144) -> frcrd, shjxje +jqpdpr (14) +yzhvrx (90) -> viqvtzw, twway, zwzzce, hqjinj, mejwrm, yyursb, gfigt +iqoxkhd (91) +locrtxl (2681) -> xsoqzbe, oxoocfp, ndkcn, vmeubf +fbmajm (58) +rylaxjf (90) -> ojfzokk, iksaub +wyois (46) +ecwjaw (91) +alhlvth (36) -> zirysk, orpjw, zdxscz +jlofqwz (13) +sdktm (23) +bjvuicy (217) -> xjyyfe, rahgf, qqllir +hepkop (7311) -> xkfkucf, xbidr, yvgkdi +gqbwc (25) -> ytxcti, qubli, cpmebw, wzvzgg +yojcz (201) -> rkjuz, rmlru +obwkzhc (86) -> vksnq, tijwlva, szcozjr, krwgy, pnhpv, ydiicdl, kskts +cdqdm (2502) -> wnfqsa, jbqmy, hvdfq +gjcibb (23) +igdtz (83) +phsmt (112) -> jqpdpr, bmnsmqz +hdjzg (77) +jukxlr (29) +oajdx (61) +ktayld (179) -> skfnp, xwjmsjr +dkxzsaq (83) +utewfcr (50) +jljjai (14) -> fhycptc, olepfo, armfpvt +gnughzp (5) +oyienb (16) +kqicqf (15) +ggvwlp (80) +vlbivgc (13370) -> xcxqa, aeatvub, pwmrau, rqisvrh, hepkop, ogmoqb +kczlit (64) +mblvpm (124) -> fbmajm, ofwbsgp +wehdeq (6) +fegaac (206) -> ffsehyc, sapwhr +qpsirr (15) +gisiv (80) -> hmjueiq, unqui +xjkquk (87) +rsdub (61) +gzxddd (46) +oxsewk (51) +ahfdt (234) +wafjqj (80) +mhjeza (93) +bljkg (12) -> yivjj, cxcyrd, lorxjw +fkapr (39) -> wwofru, weyfsg, khtooum, ohsyhln +dtfdn (71) +zxgrq (25) +rlfqf (63) +hvisx (68) +laopkn (40) +zvszwl (50) +gorpw (55) -> jnrnwos, rsdub, uaffk +skmbdhz (54) -> scqtkga, xdojlm +ecaiau (424) -> rakfg, ddwursx, nsbzfgy +bfwnv (6) +uhvtpfy (47) +zafggcz (17) +qkrpzl (170) -> kjonvut, clbbi +bvmgrs (75) +iicpkf (16) -> vhkydm, htecpc +rbuwrpw (17) +funnv (5679) -> cdlzi, fpfpv, bqxnoid +flkkr (74) +brzucfh (39) +lfavcfd (72) +dmvcduz (38) +izdhn (1183) -> uytsra, xxmtvr, bljkg +hrnrjrt (9135) -> kuufl, khwbzl, tocvooe +eiatt (291) -> gfhummb, jsmde +czvyrzi (52) +ypkhqlq (39) +egxzjn (81) +qzzlmw (319) -> szrkuzi, cpeonw +xepgx (64) +iftyxdd (79) -> xmaqelf, htqps +rskara (87) +uytsdd (292) -> hyehtm, zdissfg +mqodhde (36) +ylqvuk (48) -> shdgsk, fcdcdh, kiylza, arskvgv +gisrnfs (23) +vntsex (77) +rwmdbn (2136) -> xmuxsr, bfkbp, ibjdru, ttvfha, zhohes +fhhgts (38) +opdtk (72) +beewze (66) +leyikdx (1995) -> ewswf, gaashgh, cwnvk +kcbwrrr (631) -> wzbqh, sysdxvb, huzokb, ifuvyo, ghakp, rqqlzs +jwhcmc (72) +mqcflzv (76) +ofwbsgp (58) +hiyswbt (889) -> ileugiu, suuhqpd, yffhk, htstksc +armfpvt (98) +zsknxq (51) +pewxc (246) -> rmexd, wkmtw +lhmgw (19) +qwmqci (38) +hioofm (319) +cujimpt (137) -> ovszp, zsqzm +htstksc (169) -> wsixz, egszxz, gzjut, rutqzk +quwfos (85) +tcjqw (81) +orbcuzi (89) +sybpg (49) -> sdyox, dwrwuoq +qyhvc (16) +sadnqcp (62) +zihpcn (232) -> jukxlr, louebj +zxygs (208) -> njvkdrp, hqqingt +gyoqtcg (77) +emwblax (49) +hewatw (99) +qxkvfid (53) +kglsx (74) +yhfpq (56) -> cxyfam, mjumixz +zivlnu (23) +xsyzhcf (89) +howlyws (206) -> gwyljq, xhhwwso +uycop (59) +yhxlzc (91) +isqvoex (30) +bklfmch (80) +tvrxaw (106) -> qdqtw, qpsirr, dbczwnr +lkreb (72) +kxyfb (90) +jnrnwos (61) +mxbrva (72) +qkhqrq (30) +gfhummb (40) +zwzzce (221) -> ahqfu, gjedup, evhhfo, rpvwtq +rrvbwb (34) -> wcmyn, haclvfu +enlctw (6) +yeaic (61) +otipr (480) -> gdrxgji, fonrd, wqoae +qxkhq (143) -> ixqrl, jsrrt +wbqeo (22) +iugsida (64) +azuoza (44) +yxemuyq (19) +fyouz (18) +bnlbs (38) +hilafgl (59) -> hmpisyb, ktayld, yapaib, bmdgthp, qzzlmw +shdgsk (88) +rnqgy (34) +kmwxj (92) +hmmjjct (9) +mefmo (46) +lwvfsu (53) +fixwkec (84) +haclvfu (61) +werkz (29) +iovxjv (1204) -> uhwnr, ypbrxyq, dfxjjzr, pxkypf, nobfn, tkdvenx, sdfvrod +dmglcj (17) +qprenhy (221) -> cxfsoh, mrmbyj +qmwmbsk (804) -> tmoui, amtayi, wgqpt, xaycmtu, kztkif +zywvdda (52) +ntkpthi (6) +jkkqxfr (1135) -> nomeb, fbzvm, gklehu +muptknj (66) +uwnwp (92) +ggwtf (213) -> vkaay, kxdehcg +afywb (87) +xglsp (94) -> ljhlxc, htpblzv +elovaun (38) +qhubjd (59) +exwzzr (1542) -> bchixdc, fphmu, hcxwql +xhhwwso (43) +uevxbyn (170) -> ucaee, yuikqm +pqgiox (50) +edjlm (33) +ypdumo (48) +ehhbjt (26) +cxyfam (98) +bhqlq (82) +abamn (8) -> tsamaj, qojhhod, kcbwrrr, ttfyrk, qqnmzb, tyysd, sjgvkg +sjdanf (49) -> ldbkyg, brtomr, qwfvm +wcjnjpf (57) +xzvln (9) +citaywz (64) +aqtog (66) +khdbe (9) +vksnq (85) -> vqddcl, ezqeusd +fkwbo (91) +jefjzvl (73) +azoutv (72) +aqvtgi (90) +vlyof (97) +gwyljq (43) +xmedt (39) +rsstvn (75) -> bpcnzi, cvpuwrb +vekxdqh (85) +toeyz (23) +pvyvx (99) +pwmrau (9594) -> roogi, ajcbzv, pwnqyt +qahzrif (63) +gzjut (14) +mzyqoc (194) -> yxgwsj, fwabsk +tkdvenx (44) -> sppxnti, lncmhi, jmrlaxf, qmati +vtefqb (68) +yekmflj (64) +pdbykx (14) +fpgyyu (67) +qjbbyb (26) +izzzyqd (186) -> djvfa, qrrvi, junfev +lsire (61685) -> locrtxl, shlfz, ycpcv +vbuvkx (204) -> tlxekcp, pxdkes +ahqfu (5) +cjxyp (81) +aeatvub (10983) -> hghjsk, vksyy, otipr +jhnujj (14) +cxpwfir (63) -> mhpzrw, txwzysl +gcydgf (22) +zlbnkdc (92) -> lfavcfd, lkreb +lrjbgd (41) +casmwo (246) -> nsbnixe, vntsex +rqqlzs (270) -> lfdefc, isqvoex +xtqthxs (44) +kjonvut (27) +mptovq (19) +dwrwuoq (93) +ziiqv (81) +vnfigul (38) +jpynea (88) +rplcrt (90) +flptbw (159) -> xmgqmv, ciprksz +nojly (42) +jbqmy (86) -> zxhqlfy, ehhbjt +ozhydny (40) +zzflc (92) -> rnyndr, eiatt, fvivo, gdylf +jktlfu (47) +njvkdrp (13) +qyurm (76) -> eauxeyl, nrwmjk, qxkvfid, rjmuly +bjyraf (7) +zhpfgzv (47) +qfcetm (30) -> iqoxkhd, gptyqwd +dhfagjw (67) +qriyeb (89) +ucaee (68) +djvkd (36) +scqtkga (54) +yvgkdi (992) -> pjvnmqn, kgoyufq, zivjpfo, amsfvm +zsukqjo (90) +hfmaqp (94) +gxsxqwt (20) +marord (48) +uloppmh (50) +iktmpdq (34) +wnvrg (39) +cxiturs (95) -> ttoer, jpwtbds, yykkph, yffpvf, ahjlf, yoxetv, okkvefs +fewrzd (24) -> efuysje, olrgu, rtmiw +swnan (85) +xdojlm (54) +dhtxpbb (86) +roogi (100) -> cesnj, wsvfkr, hzhcl +yffhk (143) -> jfcoc, vpltn +ffinat (630) -> avyoy, tywzxwb, zuawuo, vsunxw +txrfl (81) +eoustfr (80) +bxmcg (249) -> epggt, gfjsie +kdeqm (99) -> qjbbyb, ikaol +lfsvtih (97) -> aylxc, bekguie +qkhvu (72) +zzfcq (7259) -> balknnd, iiqzvha, kzzfvt, ecaiau +kebhn (106) -> iktmpdq, sreke, cjbdxts, ehlnex +ljmrml (178) -> fxhqq, ybioco +asozcan (96) +ceeotg (53) +fonrd (12) +fvmeeas (88) -> wdipy, khnjt, kmwxj +cejtpyf (71) +wsvfkr (193) -> liznr, yytpewc +evdwf (31) +wqgssb (37) +uhnqr (247) -> oncexf, jeiqx +xzmdis (24) -> yhjhgu, vqnyvr, taacpu +tafhilv (11) +mhpzrw (96) +cgrima (79) -> xvayjwv, eyxccr, xtqthxs, qzftgbx +nrwmjk (53) +yjutt (47) -> jocmdmv, iaoyb, aecsfp, mxbrva +cxcyrd (62) +fwwub (146) -> defbun, wcjnjpf +sapwhr (17) +ihzsljz (46) +zmkwnv (66) +yytpewc (50) +xdctkbj (83) -> zuoeh, tnqram, funnv, zzfcq, xwkyrer, cxiturs, phtghp +kptjhtd (86) +pcecbrn (66) +sdwrx (31) +dfiyju (49) +gxddhu (133) -> itlwpm, bdnjn +zvpboy (76) -> txrfl, egxzjn, iwouvid, cjxyp +fndyvvn (85) -> khtegw, aocfuj, mipqe, lnknp +ozvtqp (53) +kxizh (74) -> yojcz, uafhv, wnpnfiv, kivyltn, jxaorvd +zwzxy (38) +rkjuz (71) +jagdwg (46) -> ytiljvt, smascq +rutqzk (14) +zymggc (39) +afbzsz (148) -> vzcklke, ggvwlp +ymdmn (99) +twoyl (58) +lqcutyt (74) +nlacdac (38) +otikjx (40) +rxzfdg (87) +huvihu (49) +cfbaj (90) +lqlyf (59) +apxgf (38) +nqicerc (62) +iksaub (99) +avyoy (252) +kzzfvt (94) -> aluqao, oherzyz, dwnokzu +uqeag (162) -> prlvn, xtaoisd +crhojk (40) -> yffeit, yfusbw, oykwsk +oxoocfp (237) -> igqle, eukgf, qzglav, ipysrdj, gsgwqk, kevlq +aylxc (31) +khnjt (92) +ytvjxq (260) +xkxqc (64) +ogmoqb (8) -> uqmgmst, hiyswbt, qmwmbsk, skmuo, tszockk, kxizh, thbwh +nvfca (42) +xaycmtu (67) -> cnwzxpy, helyfoo +kklbcs (74) +wqtuhe (341) -> myookpi, gqikhhw +unqui (79) +vhkydm (99) +zcomxf (40) +hsxhyf (63) +rwakmo (80) +uogva (17) +cesnj (57) -> hrokzl, rtgobsq, kmfsmp, chyhykz +rtcfcyn (32) +qckzqv (77) +oixlcn (37) +iaoyb (72) +idrror (34) +bcldmsg (67) +lbxdtms (281) +adbxp (35) +qsjqlp (74) +mjumixz (98) +rtmiw (97) +jzmacb (29) +umgch (64) +rpjozji (279) -> faijmsh, xzmdis, arelp, guvke, rqilp, eqpuuzs +xvayjwv (44) +vgemekb (53) +odpqjr (263) +hekibe (63) +xmaqelf (36) +ivlus (47) +rkwhbhr (50) +pawvr (12) +crcrimv (57) +ukfsn (86) +nfcbi (117) -> zocwx, mjtji +qwfvm (75) +jfieeor (96) +eolqn (91) +bgehlas (6) +ruozk (10) +gqikhhw (54) +pqjua (14) +jtyurkp (239) +wjbdxln (99) +paopwt (77) +fefuzon (126) -> jenfafh, cauig +ifualyn (93) +npccgnv (50) +nvcafwu (11) +htecpc (99) +uxbhu (175) -> bxwng, ozvtqp +gzfrn (365) -> mprgtb, qkicc +qlwhsix (71) -> bjwny, ghapm +uvkxner (46) +kmfel (77) +ytiljvt (97) +cxqeyt (30) +yyursb (93) -> lqcutyt, uuvtlk +mpijr (88) +rpqbv (23) +oginzo (24) +sydjg (10) +ehlnex (34) +ukqmhyc (25) +gshsx (6) +nafrmeo (76) +ifwmfdm (114) -> jibemf, wtfliw +rmexd (59) +ujbzq (41) -> izvtqsa, ssnhc +scxdo (56) +bvmgt (1203) -> xqncgyu, tsxfibs, zofjia +vkaay (13) +pxdkes (42) +witry (76) +ttpmzgm (83) +pxgkg (69) +vwojto (41) +jcise (35) +tbioyr (85) +wnpnfiv (55) -> tehat, ttbuzrh, jfieeor +ejxib (53) +htpblzv (83) +dgdtt (155) -> qface, yhvndwy +weyfsg (53) +aodoc (91) +vmeubf (759) -> sygjhzp, ilhib, ldgyqh, uewdyd, skmbdhz +pwetqid (13) +pudso (45) +ibjdru (136) -> dzqqgbm, qivxs +rtgobsq (59) +kqiuy (81) -> ffuqr, rplcrt, gmuwpyi, zsukqjo +gfszte (23) -> pxgkg, zehkwy, pwnxw, uqfbnlo +ngxtfhu (25) +fphmu (62) -> jpvxzcn, xvzinl, pvyvx, lxgvhy +yxzlpnj (85) -> iyfyi, jhcwkl +khixdho (46) +pjjmau (353) -> hktzoq, oigsk +ttofoep (88) +fhycptc (98) +nsghrq (105) -> bvmgrs, bsfygp +hmdxion (30) +nsbzfgy (167) -> mplhwo, qvdid +hngao (361) -> olhfbr, qgxgzo +iitbuxz (1186) -> eexmf, emuwzd, zzbad +ywnsmem (246) -> qjuuu, ohuvsf +qjsvs (66) +uuyfecv (9) +uafhv (223) -> azmneyd, mmpnppi +aocfuj (91) +kaghlc (34) +eionkb (1079) -> hxmcaoy, sybpg, jfhqrla +hzhcl (127) -> vgegr, lklqxg +ssnhc (84) +ttfyrk (2158) -> xnxsdq, ffgzg, tvrxaw +nvfqmkw (96) +qrrvi (18) +ajcbzv (55) -> jjhrmi, jljjai, afbzsz +ydiicdl (93) -> iqbdxb, fpgyyu +eyxccr (44) +gdkjoit (56) +urktg (196) -> pxgcbfi, lacddy, hvisx +wuclmu (64) +rosfnb (26) +osjsm (87) +kgoyufq (133) -> holen, gjctf +kihqh (80) +xjyyfe (25) +gyfbgkr (16) -> gyoqtcg, lovox, srzfd +bidhw (89) +wfpzhfz (78) -> zyfwjxs, evdwf +rnyndr (149) -> kklbcs, ygkdmh, cifdyio +xqncgyu (25) -> nzhqepw, satjdgz +hvmlb (141) -> qwxwd, huvihu +txwzysl (96) +suuhqpd (48) -> ccpnopa, lqlyf, fxpoal +djviima (31) -> qyhvc, kjoru, myopc +ddguar (116) -> adbxp, jcise +wptyd (87) +obbpd (24) +anoxh (63) -> hfmaqp, ggfmiv +llgbz (167) +mhxheb (167) -> rkfspx, uatlbrq, cvnrr, bwpeux +yybnbso (89) +lxgvhy (99) +yffpvf (1698) -> pwoyfeh, zklbfdg +ttvfha (156) +tocvooe (99) -> fqqyipa, zihpcn, wzqanwj, wajnseu, bnevesk, wwxak +taxrkif (52) +rvixnmq (376) -> fyouz, nsnqedk +uhwnr (60) -> zjzgs, mpijr +djvfa (18) +rjmuly (53) +pnhpv (227) +sjaax (190) +amtayi (29) -> qsvbb, scxdo, inlrm +vbmyyrh (142) -> uwjowb, naekrk +gomcbqb (203) -> lofayaa, iltoh +oijwjli (37) +wajnseu (20) -> kxyfb, vmboh, zguzlx +hghjsk (348) -> fixwkec, gcowt +dzqqgbm (10) +guvke (19) -> brjgwq, kejtzg +jpvxzcn (99) +mplhwo (70) +dblmcye (325) -> bffnszc, zxgrq, ngxtfhu +ahbcl (178) -> hebhue, edlved, tafhilv, iblvki +liznr (50) +pwoyfeh (47) +jdiczst (37) +ejvipa (38) -> kpayh, uzvsml +oherzyz (53) -> yhxlzc, fkwbo, ziyyc, dlfmj +kivyltn (303) -> vxede, pjazwiy, ruozk, sydjg +szcmb (176) -> bjyraf, bvypab +ofxzyhr (22) +xmzzrgs (266) -> aewmad, jefjzvl +gdrxgji (12) +ziyyc (91) +wgqpt (29) -> evcveie, ccter +yykkph (63) -> gyfbgkr, fghxbc, qswoy, gomcbqb, tubhp, zdqmuey, gxddhu +yoxetv (1724) -> eeziziu, kaghlc +xqpfvwx (59) +fxaglf (49) +shjxje (56) +cdlzi (1615) -> wtqxei, mhxheb, nuxxmd +zytau (43) +ghakp (232) -> sagyrje, fxaglf +lbhlxqa (76) +bchixdc (431) -> khdbe, uuyfecv, pnouux +olhnx (1796) -> vymmkdf, qfcetm, atbiby, tcpduh, ymeoz +bvypab (7) +hregcx (66) +aucjw (62) +bmqhvfv (40) +fpfpv (1564) -> fxlbc, alhlvth, yhfpq +lzypz (220) -> rnqgy, csyiik +ujjoydl (38) +rfcbs (197) -> oajdx, yeaic +cmdizw (31) -> ydzibri, syliku +iiqzvha (1325) -> hnedp, iwicpur +zdqsmv (91) +neywe (59) -> lmlsog, svanha, sadnqcp +teyakvf (89) +inlrm (56) +kpayh (34) +spwqxpy (79) +ofnewz (83) -> pryhgj, tcjqw +knqxdq (63) +jtfylv (31) +jhyjqxq (363) -> jlofqwz, bhfui +kmfsmp (59) +kskts (115) -> gdkjoit, lmkwafp +hktzoq (38) +tajfmq (30) +zdxscz (72) +pywmbis (81) +yhsmjfq (29) +kzkfcn (10) +mieqti (16) +mxwbp (235) -> fggyk, mefmo +thrvlt (81) +wqoae (12) +yivjj (62) +aumrixf (40) -> ifualyn, kgqzrt, mhjeza, wfvjnxf +gfigt (211) -> iiugq, zgfqdv +cepxc (38) +vzxktth (76) +locto (240) -> oginzo, twgjdmg +vopqzha (10) -> kglsx, qsjqlp, flkkr, fbpbs +lxwvf (72) -> ixxww, mxnlv, waqca +zuwaw (84) -> tbaads, xjadrfg +oothjv (71) +tubhp (141) -> uftnfv, vgemekb +wywxu (92) +uwjowb (70) +pwzsq (64) +eexmf (130) +ldgyqh (30) -> mriqcjy, khgvmj +ewswf (307) +tbaads (28) +rxsihsa (91) +dtmbf (50) +tzhwvzt (89) +qivxs (10) +nfucnzx (68) -> nvfqmkw, asozcan +znwmvr (63) -> ymataqq, etfbuu, wbqeo, gcydgf +kejtzg (88) +eukgf (112) -> rdvciwk, ulchkal +skpux (146) -> vwftcva, perzy +uewdyd (152) -> uamqx, gnughzp +dnynny (14) +guyrnpn (413) -> bqywl, cvcblhv, ovpzt, qlwhsix +lnmhw (83) +llkaoeh (68) +ydzibri (78) +gaashgh (307) +vbmqj (91) +uqmgmst (1336) -> kdeqm, znwmvr, iftyxdd +tijwlva (187) -> gxsxqwt, yjrfr +fozagvz (37) +tafss (38) +dckbvlg (12) +oncexf (26) +jkkwtd (142) -> jhwrcb, pbkplz, momda +evqibrc (66) +mrwbv (68) +hrokzl (59) +soirl (206) -> uqjfarv, myqre +ubuge (186) +rtutzu (73) -> crcrimv, fxrijc +pmefov (983) -> gibdxij, whvvemg, lfsvtih, ckmftuc +tnqram (7095) -> kxwbdvm, rhcxf, nihiexp +dzfclsm (186) -> yxemuyq, mptovq +pjazwiy (10) +mnqii (16) +uqjfarv (8) +xnxsdq (76) -> ukqmhyc, teduvv, lmhamlz +lnwcryv (62) +lovaf (94) -> osjsm, wptyd +rhcxf (84) -> jgrsa, egtruqh, kqiuy, aduikk +evcveie (84) +lyhlx (52) +zjzgs (88) +brjgwq (88) +wnfqsa (138) +balknnd (377) -> kebhn, bamxvq, xaogy, fefuzon +ayqbj (64) +zynpp (67) -> qahzrif, rlfqf, hekibe +szglq (194) -> iezyfwf, jmypc, rsizei, jpyvpw +ocppbp (26) +wuknah (36) -> kczlit, nggtuh, umgch, xkxqc +ifnkl (324) -> kabqu, ujjoydl +eqkot (33) -> aljgr, lnwcryv +yjrfr (20) +cvdows (11) +lybaepp (91) +jxaorvd (343) +zkpfzio (145) -> vrbcn, kasaf, hhqmsd, idrror +evbtz (297) -> ifwmfdm, rylaxjf, oylvq, locto +srnnjbb (51) -> zxygs, rkwquj, owxawf, ahfdt +viqvtzw (117) -> gmirjhi, aucjw +nsnqedk (18) +wiapj (55) -> djzjiwd, lsire, vlbivgc, xdctkbj, ygvpk +jhwrcb (90) +zdnypzo (66) +eqpuuzs (149) -> gisrnfs, rpqbv +kevlq (156) -> xkzvo, xxego +fxpoal (59) +dlfmj (91) +pbkplz (90) +qdqtw (15) +qkicc (42) +axgndac (156) -> zdnypzo, sglkjsh +gptyqwd (91) +cwkdlil (46) +tmoui (91) -> ceeotg, ejxib +xxmtvr (154) -> ofxzyhr, dzxpqj +zijzutq (90) -> wuclmu, citaywz, ljjyy +xtaoisd (63) +szcozjr (215) -> bgehlas, pocvrcs +jfhqrla (155) -> miwst, elgtk +nsbnixe (77) +haqaohl (15) +eeune (31) -> ysafyj, vlyof +vgexqw (71) +ghapm (94) +swcvn (1105) -> sjaax, szcmb, klovr +lmhamlz (25) +louebj (29) +fjcobs (6) +holen (27) +qryui (49) +olhfbr (14) +wcmyn (61) +dkmkdfd (173) -> vvkkkpb, ulragq +odqns (87) +xwjmsjr (97) +rqrhrnz (66) +uamqx (5) +rkwquj (92) -> gvamhux, dtfdn +ncmad (23) +lefxyzt (56) +qcmnpm (335) +kgqzrt (93) +ttoer (916) -> howlyws, wuknah, bjvuicy +rahgf (25) +mdqeh (17) +ghdbwu (863) -> ifbhg, nqicerc +thbwh (832) -> rfcbs, hioofm, jspui +gfjsie (90) +mmfuve (51) +vzcklke (80) +bffnszc (25) +saddwx (1569) -> bxmcg, vmpnccn, pjjmau +bmnsmqz (14) +qkawtfu (111) -> ujuunj, iugsida +edlved (11) +pxgcbfi (68) +gekygl (247) -> zafggcz, rbuwrpw +egtruqh (389) -> ocppbp, gwbfat +rvpxob (47) +ympbbx (1243) -> spwqxpy, iedfk, ugcccv, djviima, xgfad +pxkypf (54) -> hblux, nemrt +qqllir (25) +tehat (96) +gibdxij (121) -> ohsvn, wkamonm +itlwpm (57) +rfknc (9) +ekvdv (44) -> kpvbt, nnmayb +gwqgewp (99) +cvnabd (14) +dskuj (165) -> slahk, zytau +yqgesx (175) -> zcomxf, bmqhvfv, hwdtvvc, laopkn +vljjqbw (55) +qmati (48) +afyxhh (87) +ubxvdq (90) +ckegba (32) +sysdxvb (66) -> zmkwnv, pcecbrn, hregcx, muptknj +nihiexp (930) -> vopqzha, uytsdd, uevxbyn +myqre (8) +nwupf (109) -> cuprzhk, ozhydny +tzrqqk (79) +pwvahdb (85) -> yybnbso, tzhwvzt +gcowt (84) +ohsvn (19) +zhohes (46) -> wrlkfij, xlkwyg +ripilxo (299) +vwvowk (1293) -> dgosy, zvgsa +bmlkhaf (53) +kztkif (55) -> mtflvu, oothjv +ycpcv (72) -> izdhn, yzhvrx, eionkb, eadvs, jkkqxfr +zyfwjxs (31) +esphpt (85) -> emwblax, dfiyju, qryui, eydak +jsmde (40) +zguzlx (90) +pcckqq (17) +hxmcaoy (235) +taacpu (57) +ilhib (60) -> pubtxq, lpsafeq +myookpi (54) +olrgu (97) +swnafht (44) -> lbxdtms, jensj, zkpfzio, jobwpao, jxfimbl diff --git a/data/advent2017/input8.txt b/data/advent2017/input8.txt new file mode 100644 index 0000000..b41d8f3 --- /dev/null +++ b/data/advent2017/input8.txt @@ -0,0 +1,1000 @@ +utc dec -736 if p > -7 +tn inc -876 if qlm == 4 +uz dec 294 if l < 10 +a inc -904 if me >= -7 +tn inc 622 if ppl <= 6 +fr dec 17 if ufk > -10 +hkt inc -511 if mdk == 0 +t inc -290 if xxh <= -1 +l dec 727 if ufk < 7 +tn inc -576 if l == -727 +z inc 464 if dea >= -2 +ufk inc 755 if utc >= 735 +utc dec -720 if qlm <= 5 +a dec -277 if ufk <= 755 +xxh dec -640 if u == 0 +hkt inc 875 if m != -6 +ny inc -351 if p >= -4 +l inc 674 if dea > -7 +ufk dec -826 if p == 0 +mdk inc 377 if utc == 1456 +ppl dec 793 if q <= 4 +z dec 114 if mdk > 368 +ny dec -412 if ny >= -353 +utc dec 176 if a != -620 +utc dec -610 if p <= 1 +l inc -541 if xxh <= 635 +l inc 102 if ny < 66 +qlm dec 700 if l >= 43 +dea dec -202 if tn <= 38 +a inc 785 if a <= -629 +ny inc 414 if fr <= -21 +l inc 250 if hw <= -10 +l inc -516 if l > 41 +utc dec 358 if mdk > 373 +p dec -38 if z == 350 +uz dec -71 if a == -627 +t inc -713 if fr > -13 +l inc 242 if tn <= 53 +dea dec 600 if hw <= 8 +hw dec -92 if fr != -19 +hkt dec 67 if l <= -232 +qlm dec 523 if hw == 92 +utc dec -608 if q != -8 +m dec 314 if me < 9 +xxh inc -937 if xxh >= 638 +qlm dec 494 if m <= -313 +fr dec -590 if m <= -306 +utc inc -539 if tn == 46 +hkt dec 831 if p >= 43 +dea inc 510 if a > -627 +p inc 319 if m > -305 +m inc 736 if xxh >= -302 +ppl inc -712 if mdk == 377 +ny inc 21 if p <= 41 +hw inc -569 if hw != 92 +ppl inc 150 if dea < -595 +xxh dec -953 if z != 356 +ppl inc 578 if qlm <= -1714 +uz dec -733 if p >= 35 +xxh inc 100 if xxh >= 660 +hw dec -491 if ppl < -767 +t dec -64 if z < 347 +me dec 802 if dea > -601 +hkt inc 431 if hkt > 359 +utc inc -600 if q != 0 +u inc -223 if tn < 48 +tn inc 443 if uz <= 513 +l inc -349 if ny == 82 +utc inc -499 if xxh <= 661 +a inc 600 if hw >= 578 +z dec -636 if utc > 1099 +tn inc 75 if z == 986 +hkt dec 364 if mdk < 377 +ufk inc 249 if fr == 573 +l inc -429 if uz > 507 +hw dec -621 if ppl == -778 +l inc -620 if z != 980 +l inc 319 if tn == 564 +q dec -478 if ny <= 82 +utc dec -169 if uz < 519 +fr inc 124 if dea >= -607 +m dec -674 if p != 28 +m dec 744 if p != 44 +l dec -620 if hw <= 582 +utc dec -950 if p >= 37 +uz dec -122 if xxh < 660 +l inc -563 if z < 996 +hkt inc -514 if m <= 361 +l dec 525 if mdk == 377 +xxh inc -666 if u != -228 +a inc 934 if a <= -23 +a inc 817 if xxh >= -11 +me inc 450 if tn < 563 +hw inc 475 if xxh < -1 +fr dec 493 if xxh < -8 +uz inc -985 if qlm > -1724 +ppl inc 856 if qlm >= -1720 +hw inc -368 if me > -804 +ny dec -219 if p != 38 +u inc 1000 if ny > 79 +q dec 551 if hkt == 281 +uz dec 317 if dea >= -600 +uz inc -916 if qlm <= -1726 +hkt dec 915 if mdk != 380 +mdk inc 484 if l == -2392 +xxh inc 326 if dea > -607 +u dec -803 if me > -811 +q dec 689 if tn != 565 +hw dec 908 if p == 38 +z inc -173 if ppl > 72 +z dec 371 if tn < 565 +p inc 185 if u > 1571 +a inc 490 if mdk != 864 +tn dec -27 if u == 1580 +qlm inc 77 if m > 345 +p dec 364 if ufk <= 1836 +dea dec 308 if me == -802 +a inc -345 if hw == -218 +ny inc 603 if p <= -138 +fr inc -4 if utc > 2217 +me inc 118 if hkt <= -626 +hw inc -590 if z < 443 +me dec 279 if q <= -756 +me inc -50 if dea == -908 +ppl inc 708 if u <= 1586 +t inc -429 if mdk >= 854 +m dec -372 if uz > -676 +fr dec -840 if ppl == 787 +qlm dec -442 if tn != 584 +u dec 227 if l == -2402 +m inc 279 if z <= 446 +xxh inc -951 if t > -421 +t dec 530 if xxh != 317 +fr inc -621 if mdk <= 869 +a dec 480 if fr < 424 +q inc 988 if l == -2384 +u inc 313 if q < -757 +hw dec 237 if hkt == -634 +mdk dec 945 if t > -969 +me inc 631 if ny >= 679 +ny dec -740 if uz == -670 +t inc -310 if utc > 2213 +p dec -453 if utc >= 2218 +mdk inc -266 if hw == -1045 +a inc -887 if qlm == -1198 +ppl dec 521 if t >= -1270 +dea dec -685 if xxh != 310 +l inc -472 if m < 1013 +ufk inc -920 if l <= -2860 +u dec -503 if me <= -373 +ufk inc 547 if m > 998 +l inc -287 if p <= 309 +qlm dec -173 if q <= -755 +u dec -928 if z > 437 +hw inc 43 if hkt < -626 +utc inc -694 if me == -382 +fr dec -938 if tn > 584 +q inc 9 if mdk == -350 +dea inc 119 if m < 1012 +ny dec 210 if ufk <= 1465 +xxh inc 352 if q > -758 +dea inc 483 if hkt >= -639 +tn inc -652 if t >= -1266 +ufk inc 674 if ny >= 1207 +ppl dec 311 if z >= 442 +qlm inc 655 if m < 1005 +z dec 580 if uz < -661 +utc inc -977 if ppl <= -36 +xxh inc -25 if l == -2864 +me dec 252 if uz > -674 +mdk dec -98 if z <= -129 +p inc -276 if utc < 541 +hw dec 796 if xxh <= 649 +q inc -726 if z != -137 +fr dec 433 if ufk <= 2140 +hw inc -701 if z < -131 +hw dec 587 if mdk <= -244 +ny dec -734 if mdk <= -249 +qlm dec -311 if utc != 546 +ufk dec -405 if q > -1481 +p dec 97 if t != -1275 +t dec 597 if qlm >= -49 +ufk dec 389 if uz < -660 +l inc 765 if a < 504 +fr dec -948 if tn >= 586 +qlm dec 79 if m > 997 +ny inc 764 if p < 225 +a dec 419 if m != 1003 +q dec -860 if q != -1475 +fr inc 426 if hw > -3080 +ufk inc 0 if ppl != -36 +utc inc 939 if p >= 206 +m inc 830 if xxh < 650 +m inc -511 if hw > -3091 +u inc -720 if qlm > -134 +dea inc -147 if a <= 503 +u inc -322 if tn != 591 +ny dec 900 if ny != 2713 +ny inc -737 if me == -634 +fr inc -494 if l != -2097 +mdk inc -363 if ny != 1976 +l inc 991 if hkt > -636 +l dec 179 if dea != 232 +q dec -264 if ny != 1977 +l dec -976 if uz > -667 +tn inc 791 if hkt > -637 +ppl dec 225 if utc < 1495 +uz dec -527 if m > 1317 +a inc -644 if me < -624 +uz inc 160 if q >= -361 +u inc 577 if xxh > 650 +q inc 124 if xxh < 653 +l inc 268 if dea > 222 +hw inc 795 if uz < 10 +uz dec 934 if uz < 26 +tn inc 966 if ufk == 2150 +me dec -71 if p <= 222 +me inc 186 if ppl > -270 +m dec -377 if xxh <= 649 +ny dec 275 if mdk > -248 +qlm dec -574 if fr != 1371 +utc dec 78 if xxh > 638 +l inc 494 if u > 3315 +tn dec -595 if qlm > 435 +tn dec 113 if a <= -140 +fr inc -610 if ufk < 2148 +uz inc -791 if u != 3334 +uz inc 356 if t < -1276 +l dec -463 if utc < 1414 +tn inc -266 if a < -137 +p inc 747 if utc >= 1402 +z inc -671 if hkt == -634 +tn inc -441 if u != 3324 +fr inc 172 if hkt > -638 +tn dec -558 if qlm < 439 +a dec -234 if tn <= 2155 +t inc -325 if l >= 126 +t dec -685 if l > 110 +ufk inc -912 if z < -805 +ufk dec 0 if fr < 941 +fr dec 276 if a == -142 +xxh inc -972 if p < 967 +ufk inc 188 if mdk >= -245 +me inc -255 if t > -583 +qlm inc 451 if uz > -1710 +fr inc -921 if z >= -814 +q inc 272 if uz < -1705 +u dec 216 if p <= 956 +a inc 30 if z > -812 +tn dec -202 if dea == 232 +m inc 792 if ny != 1976 +uz dec -867 if z == -809 +ppl inc -765 if qlm != 894 +hkt inc 301 if xxh < -322 +p dec -839 if dea == 232 +utc dec -920 if m > 1694 +a inc -206 if mdk == -252 +ny dec -545 if ppl <= -1029 +me dec -860 if q >= 39 +ufk inc 644 if tn <= 2359 +hw dec 959 if t == -584 +qlm dec 667 if xxh != -321 +ufk inc 598 if a > -323 +ppl dec -514 if hw <= -4039 +uz dec 708 if p == 1801 +hw inc -902 if hkt != -333 +qlm dec 249 if tn != 2366 +mdk inc -570 if z > -812 +fr inc -47 if tn > 2350 +me inc -62 if hw != -4037 +qlm dec 796 if dea > 239 +q dec -201 if ppl == -521 +z inc 265 if ufk != 2481 +hw dec 597 if q >= 239 +ny dec 417 if uz > -1540 +hkt dec -866 if m <= 1704 +m inc 103 if m == 1699 +ufk inc -733 if qlm <= -28 +mdk dec -416 if z > -546 +ufk dec 477 if z < -543 +l dec 224 if m < 1799 +q inc 646 if u < 3327 +hkt dec -501 if qlm != -29 +ppl inc 321 if p > 1797 +a dec 678 if ufk == 1268 +u inc -878 if fr > -302 +t dec 523 if uz != -1552 +mdk dec -490 if fr != -304 +p dec -603 if ufk >= 1264 +tn inc -234 if qlm > -33 +mdk dec -51 if q <= 881 +a inc 672 if me < 244 +z dec 473 if m != 1797 +mdk dec -727 if utc == 2331 +ppl inc -59 if me == 235 +a dec -937 if uz <= -1547 +uz dec -352 if m >= 1798 +fr inc 693 if utc < 2333 +t inc 493 if hkt != 526 +hw inc 86 if hkt >= 533 +t dec 49 if ny != 2512 +utc inc 273 if me != 235 +xxh inc -871 if dea == 232 +z dec -707 if dea != 234 +mdk dec 362 if ny > 2528 +tn inc -825 if t <= -658 +uz dec 655 if xxh < -1195 +dea dec 231 if me < 242 +mdk dec -260 if xxh != -1200 +ppl dec -842 if mdk != 321 +l inc -957 if qlm == -23 +m dec 393 if ny > 2515 +ufk inc -648 if me < 243 +dea inc -251 if fr < 399 +a inc 772 if mdk < 323 +hkt inc 997 if fr > 383 +l dec 13 if dea == -240 +hkt dec -935 if tn >= 1291 +uz dec 992 if u < 3324 +hw dec -970 if t <= -655 +m inc 132 if mdk == 321 +hw inc 908 if hkt > 2464 +me inc -975 if l != 119 +ny dec -76 if dea >= -251 +ppl dec -844 if u >= 3322 +qlm dec 286 if ny >= 2597 +xxh dec 903 if uz != -1843 +u dec 992 if hkt <= 2471 +tn dec -663 if me > -735 +ny dec -598 if ppl >= 583 +m inc 84 if mdk != 318 +ufk inc -260 if t <= -668 +u dec -443 if fr >= 388 +l dec -116 if hw <= -2670 +m inc 816 if dea < -240 +t inc 319 if mdk != 317 +me inc -681 if z < -301 +m inc 451 if uz != -1845 +t inc 472 if mdk <= 330 +qlm inc -125 if z == -310 +ufk inc -419 if p > 2401 +l dec -7 if xxh <= -2096 +m dec 325 if fr < 380 +mdk inc -391 if hkt <= 2465 +xxh inc 491 if z != -315 +p inc -832 if utc > 2324 +t dec 304 if a > 2056 +xxh dec 107 if dea < -243 +l inc 220 if hw < -2681 +p dec -316 if p > 1565 +mdk inc 333 if utc == 2332 +ppl dec 961 if a >= 2055 +fr inc 230 if z <= -310 +hkt dec -715 if fr >= 615 +l inc -466 if p <= 1888 +qlm inc 185 if xxh >= -1725 +u inc -710 if t == -168 +z inc 15 if ppl < -371 +utc inc 422 if hw < -2683 +fr dec 688 if t > -181 +mdk dec 606 if a < 2064 +me dec 323 if z <= -289 +ppl dec 150 if uz > -1844 +t inc 617 if q > 879 +hw inc -212 if qlm != -255 +a inc 338 if m <= 2901 +utc dec 545 if l < -228 +tn dec 407 if z > -303 +mdk dec 784 if ppl >= -378 +q inc -352 if z == -295 +uz inc -644 if ppl <= -372 +fr dec 209 if dea < -242 +tn dec -605 if p >= 1879 +hkt dec 77 if mdk != -1470 +hw dec -280 if hw < -2676 +ufk dec 375 if qlm >= -248 +p inc -958 if xxh <= -1710 +a inc 653 if z != -295 +utc inc 493 if qlm == -255 +xxh dec -649 if q > 530 +z inc -993 if me != -1749 +t inc 119 if mdk <= -1451 +ufk dec 883 if utc <= 2825 +m inc -545 if qlm == -255 +tn inc 626 if dea != -253 +tn dec -111 if p > 923 +tn inc -719 if u <= 2780 +u inc 976 if u != 2767 +z inc -495 if ppl != -368 +z dec 481 if dea != -246 +ppl dec 539 if ppl >= -381 +uz dec 213 if uz >= -2504 +a inc -9 if tn < 1509 +ny dec 719 if u < 3757 +uz inc 718 if hkt <= 3103 +ny dec 378 if u >= 3748 +me dec 163 if xxh >= -1076 +t dec -569 if hkt > 3105 +fr inc -280 if a <= 2407 +l dec -908 if q != 527 +a inc -13 if me < -1912 +dea dec 584 if mdk <= -1464 +hw inc -988 if l >= 692 +tn dec 847 if mdk < -1451 +hw inc 568 if utc > 2822 +t dec 133 if tn < 659 +z inc 271 if q <= 539 +mdk inc -33 if q <= 545 +l inc 185 if dea >= -259 +xxh inc 36 if xxh != -1064 +a dec 70 if xxh >= -1042 +z inc 956 if p > 931 +utc inc -778 if dea != -244 +dea inc -868 if z > -1985 +t dec -872 if u >= 3750 +ppl dec 420 if u < 3747 +dea inc 372 if xxh >= -1043 +hkt dec 32 if u != 3759 +t inc 23 if uz == -1985 +ny dec 106 if ufk == -683 +dea dec -794 if t == 1441 +hkt dec -233 if t < 1435 +q dec -186 if ufk == -683 +u dec 328 if a >= 2331 +xxh inc -179 if z <= -1991 +utc inc -614 if qlm > -254 +fr dec 136 if m != 2349 +uz inc -942 if uz >= -2000 +me inc 391 if m >= 2340 +l dec -448 if utc > 2054 +me dec -64 if fr > -696 +utc dec -621 if qlm > -256 +z dec -622 if dea == 132 +a dec -228 if ny == 1992 +qlm inc 957 if a <= 2563 +t dec 178 if hkt == 3304 +me dec -583 if uz >= -2940 +xxh dec 22 if ny >= 1988 +ufk dec 294 if fr <= -690 +l dec 666 if a != 2559 +tn dec 135 if qlm >= 704 +hkt inc 524 if q == 722 +uz inc 448 if dea > 118 +q inc 299 if hkt >= 3832 +u dec 502 if p <= 931 +qlm dec -530 if l > 863 +m dec -677 if m > 2344 +uz inc -254 if qlm < 1236 +p inc 164 if tn != 663 +ny inc -208 if me >= -874 +hw inc 688 if ny >= 1775 +q dec -90 if ny < 1787 +qlm inc 602 if l <= 874 +xxh inc 442 if uz == -2739 +mdk inc 235 if xxh == -793 +a dec -225 if u > 2911 +m dec -706 if hkt <= 3831 +a dec 229 if ufk <= -977 +ppl dec 256 if xxh == -788 +t inc 1000 if p < 1087 +hw inc -970 if a <= 2564 +hw dec 398 if ny >= 1779 +ppl inc 984 if ufk != -968 +utc inc -979 if ufk != -967 +hw dec -383 if utc > 1678 +p dec 283 if xxh == -793 +hw inc -434 if ny <= 1786 +u dec -226 if l == 868 +l dec 943 if tn > 675 +xxh inc -64 if p >= 807 +ppl inc 577 if fr == -694 +dea inc 629 if ppl > 636 +u dec 113 if ufk != -984 +a inc 482 if dea < 760 +dea dec -232 if xxh == -857 +ny inc -952 if ufk < -967 +hkt inc 159 if p < 811 +z inc 530 if mdk == -1258 +m dec -745 if dea <= 988 +m inc -554 if mdk >= -1258 +fr inc -798 if xxh >= -864 +q dec -139 if utc > 1690 +m dec 962 if p < 808 +a inc -409 if u <= 2809 +u dec -30 if ppl > 643 +uz dec 502 if u < 2834 +l dec -653 if qlm == 1834 +qlm inc 732 if me <= -869 +tn dec 200 if fr >= -1495 +ny inc -26 if a <= 2632 +hkt inc -601 if ppl < 656 +t inc -277 if l <= 1521 +a inc -86 if xxh < -847 +hkt dec -42 if qlm >= 2566 +dea dec 218 if p >= 807 +ufk dec 870 if q > 815 +z inc 141 if z == -1463 +l dec 873 if mdk > -1263 +u dec 897 if ppl <= 653 +dea inc -239 if p < 809 +xxh inc 525 if uz >= -2746 +dea inc 827 if mdk > -1266 +dea dec -988 if ppl != 636 +ny dec 330 if m < 3923 +q inc -413 if hw > -2554 +hw inc 983 if mdk < -1250 +mdk dec 932 if hw >= -1573 +fr inc -984 if u >= 1934 +xxh dec -344 if qlm > 2566 +p dec 189 if tn != 464 +hw inc -986 if ny < 473 +m dec 233 if z > -1323 +mdk inc -803 if a >= 2542 +u dec -858 if dea > 2570 +me dec 215 if dea >= 2590 +q inc 945 if dea >= 2589 +z inc 55 if ny >= 471 +xxh dec -63 if a <= 2544 +fr dec -864 if ufk != -969 +me dec -330 if me <= -861 +ufk inc -96 if dea <= 2586 +fr inc 348 if uz >= -2739 +qlm inc -249 if q <= 805 +qlm dec -752 if uz < -2736 +hkt dec -389 if q < 818 +dea inc -169 if ppl == 646 +xxh inc -689 if z <= -1268 +tn inc 911 if m <= 3697 +ppl inc -390 if a != 2551 +a inc 87 if ufk != -1074 +z inc 413 if ppl == 262 +p inc 476 if mdk < -2052 +p dec -570 if z != -1257 +uz inc 266 if hkt <= 3654 +ppl inc -29 if ny <= 474 +ny inc -154 if ppl <= 264 +ufk inc -614 if uz < -2741 +dea dec -627 if xxh == -269 +me inc 553 if p < 1670 +q inc -413 if a > 2636 +q dec 754 if utc == 1688 +p dec 857 if m == 3688 +dea dec 883 if ufk >= -1074 +uz inc -485 if l == 647 +dea dec -979 if me <= 15 +hkt dec 738 if l > 642 +xxh inc 298 if tn < 1372 +uz dec 235 if l != 651 +m dec -170 if tn > 1379 +hkt inc 902 if a > 2619 +hkt inc 354 if hw < -1573 +qlm dec 512 if uz != -3462 +u inc -676 if t != 984 +a inc 635 if z == -1267 +ppl inc -756 if q <= 60 +t inc 662 if mdk == -2061 +qlm dec -900 if p > 807 +z dec 877 if hkt == 4176 +a dec -841 if uz > -3466 +dea inc 141 if u != 2115 +q inc 917 if dea != 3270 +ppl inc -582 if tn >= 1375 +dea dec -309 if xxh < -271 +utc inc -353 if hw <= -1578 +mdk dec 643 if q != 979 +hw inc -595 if fr != -1254 +xxh inc 736 if ny != 325 +hkt inc -692 if z == -2144 +p dec 500 if hw < -2170 +uz dec -168 if ppl >= -1083 +u dec 419 if hw > -2181 +fr inc -653 if u != 1704 +m inc -677 if qlm < 3716 +qlm dec -341 if u >= 1704 +me dec -926 if utc >= 1329 +qlm dec -462 if hw != -2174 +fr dec 604 if hw != -2173 +p dec -826 if uz >= -3291 +hkt inc -855 if ny <= 315 +utc dec -647 if dea > 3269 +xxh inc 483 if z < -2143 +l dec 93 if utc >= 1979 +dea inc -680 if fr != -1264 +me inc -293 if ufk != -1063 +uz dec 279 if t == 1636 +xxh inc -145 if u <= 1705 +q inc 269 if a > 4097 +ufk dec 734 if l >= 552 +z dec -270 if utc > 1977 +tn inc -154 if t <= 1645 +mdk inc 455 if uz < -3283 +dea inc 350 if utc < 1992 +hw dec -300 if ppl <= -1085 +ufk inc 337 if u >= 1699 +ppl inc -634 if l != 558 +t dec -583 if xxh == 805 +t dec 384 if dea >= 3620 +p dec -873 if m == 3011 +ufk inc -710 if uz < -3287 +hw inc -808 if hkt <= 3490 +hw dec -464 if u > 1702 +m dec -102 if mdk > -2256 +fr dec 579 if t > 1829 +dea dec -839 if qlm < 4519 +ufk dec -741 if l <= 545 +me inc -520 if z <= -1865 +mdk dec 824 if hkt < 3493 +qlm inc -703 if q <= 1243 +t dec 284 if qlm < 4517 +fr dec -527 if ufk == -2183 +me dec -995 if xxh == 805 +utc inc 498 if hw < -2525 +hw dec -350 if ufk <= -2174 +dea inc 143 if mdk == -3073 +utc dec 812 if l < 552 +ufk dec 679 if hkt <= 3490 +a inc -464 if ny < 317 +ufk inc 116 if hkt > 3483 +hw inc 77 if mdk < -3063 +hkt dec 851 if ny < 329 +uz dec -37 if uz != -3287 +hkt dec 45 if xxh == 805 +uz dec -682 if fr <= -1850 +dea inc 695 if hkt > 2582 +p dec 857 if hkt <= 2592 +fr inc 114 if dea < 5309 +q dec -714 if p < 1158 +utc dec 896 if ufk != -2752 +uz dec -937 if ufk < -2741 +p inc -807 if tn <= 1232 +ufk inc 788 if fr >= -1730 +ufk dec 519 if l > 558 +ufk dec 142 if tn < 1227 +ppl dec -561 if ufk > -2103 +dea dec 463 if fr >= -1728 +m inc 139 if tn != 1218 +fr dec -606 if q >= 1951 +qlm inc 934 if fr >= -1122 +a dec -910 if xxh < 815 +hw dec -564 if a <= 5015 +u dec -648 if hw > -1532 +hkt dec 601 if hkt <= 2588 +q dec -480 if hkt < 1997 +uz dec 596 if hkt >= 1983 +p dec -971 if u > 2347 +z dec 790 if m == 3252 +fr inc 281 if hw <= -1517 +uz dec 636 if hw == -1516 +l dec -582 if ny > 315 +ny inc 202 if dea < 5306 +mdk inc -251 if ppl > -1147 +me dec 826 if p == 1317 +qlm dec -11 if p == 1317 +z inc -166 if a >= 5011 +ny inc 455 if l >= 1127 +utc dec -156 if qlm < 4525 +q dec -147 if l <= 1129 +ufk inc 36 if ny < 978 +ppl dec -871 if uz < -2907 +fr inc 776 if t >= 1548 +qlm inc -510 if u != 2352 +z inc 373 if dea >= 5294 +uz dec -975 if fr <= -59 +fr dec -670 if z < -2459 +utc dec 322 if q != 2428 +l dec 3 if ppl != -282 +uz dec 728 if ny > 971 +ny dec -396 if p > 1308 +a inc -502 if mdk <= -3067 +ny dec -492 if uz <= -2666 +ppl inc -720 if t >= 1554 +uz inc -323 if hw != -1533 +ppl inc 805 if m >= 3252 +p inc 310 if qlm != 4520 +m dec 743 if dea >= 5299 +ppl inc 847 if t <= 1546 +p dec 89 if u != 2352 +a inc 472 if z < -2455 +me dec 301 if utc > 914 +ppl inc 740 if q < 2434 +ufk inc -633 if l > 1138 +ppl inc -51 if hw > -1529 +u dec -714 if fr >= -56 +z dec 510 if me >= 0 +l inc 664 if mdk != -3073 +qlm dec -742 if l < 1142 +ny dec -473 if tn == 1225 +fr inc -805 if ufk > -2093 +xxh dec -151 if fr > -74 +hw inc -734 if hw <= -1528 +p dec 976 if uz >= -2990 +mdk inc 523 if m == 2509 +u dec -176 if utc < 923 +me inc 766 if hkt != 1987 +ppl dec -392 if mdk != -2557 +l inc -756 if u > 2527 +fr inc -990 if xxh > 955 +l inc 901 if ufk > -2100 +xxh dec -856 if ppl >= 137 +hkt dec -989 if t == 1561 +p dec 846 if p > 339 +hkt inc -429 if dea != 5302 +u dec 534 if hw <= -1517 +uz dec 178 if xxh > 1803 +z dec 655 if m <= 2516 +xxh inc -340 if ny < 2334 +u inc -545 if dea != 5295 +p inc -996 if uz > -3172 +dea dec -140 if hkt != 1984 +q inc -764 if a <= 4985 +z inc 263 if uz == -3167 +l dec -929 if a <= 4985 +p inc -214 if uz >= -3170 +uz inc 393 if hw >= -1533 +tn inc -624 if me == -5 +me inc -474 if ufk != -2106 +ppl dec 475 if l <= 2214 +qlm inc 417 if u != 1449 +p inc -490 if qlm > 5257 +a inc 526 if u <= 1452 +ny inc -347 if u <= 1454 +p dec 397 if uz < -2765 +t dec 548 if u <= 1448 +ufk dec 514 if ufk > -2102 +l dec 744 if uz != -2782 +fr dec 810 if ppl == -333 +ppl dec -338 if qlm > 5258 +qlm dec 272 if q > 1665 +m dec 521 if ufk >= -2614 +uz dec 558 if me < -477 +p inc -632 if m >= 1987 +dea inc -237 if fr != -1864 +mdk dec 3 if utc > 917 +l inc -406 if dea >= 5213 +dea inc -268 if z == -2849 +utc inc 675 if q > 1664 +me dec -905 if p < -3230 +ufk inc -799 if u != 1439 +xxh inc 718 if hkt != 1987 +tn inc 156 if qlm >= 4984 +p inc -680 if fr == -1866 +ppl inc 423 if hkt >= 1980 +p inc -759 if ufk != -3405 +me inc 496 if qlm <= 4995 +m dec 111 if mdk != -2545 +u dec 351 if z < -2843 +uz dec -405 if xxh != 1804 +ny dec -634 if utc == 1592 +qlm inc 294 if l == 1463 +xxh inc -994 if a <= 5511 +a inc 460 if uz == -2927 +t inc -313 if u != 1093 +l inc 254 if hkt > 1978 +dea dec -290 if ppl <= 429 +ny inc 190 if z <= -2844 +ppl inc -865 if dea == 5220 +z dec 372 if utc <= 1595 +l dec -563 if u < 1104 +z inc -283 if xxh < 821 +q inc 967 if utc == 1595 +q dec -621 if ppl > 433 +l dec -221 if tn > 757 +l dec -935 if a >= 5962 +l inc -62 if l != 3225 +hkt dec -654 if t > 1240 +dea inc 87 if p == -4673 +l dec -166 if u <= 1098 +dea dec 183 if hw != -1529 +q dec 70 if p == -4667 +a dec -673 if ny < 2188 +q dec 295 if mdk != -2563 +m dec -26 if a == 6644 +qlm inc 378 if xxh != 816 +a dec 174 if l <= 3320 +fr inc 117 if dea >= 5131 +hkt dec -732 if hkt >= 2634 +ufk inc -838 if mdk != -2547 +ny inc -964 if a >= 6461 +hw dec -264 if a == 6470 +z dec -834 if ufk >= -4251 +l inc -658 if m > 1897 +xxh inc 400 if fr >= -1753 +hw dec 380 if hw <= -1265 +t inc -608 if utc < 1597 +ppl dec 352 if a > 6467 +l dec -355 if utc > 1591 +l dec 846 if dea <= 5128 +ppl dec 756 if fr < -1746 +utc dec 259 if p == -4673 +tn dec 160 if hw < -1257 +t inc -625 if t != 640 +xxh dec 804 if dea > 5130 +ny dec 227 if z <= -2665 +ppl dec 306 if uz != -2922 +q dec -671 if hw < -1262 +tn dec 149 if ufk == -4248 +p dec -583 if mdk == -2553 +hw inc 312 if uz <= -2919 +hkt inc 111 if tn >= 456 +q dec -23 if uz > -2918 +hw inc -291 if l > 3008 +me inc -744 if utc > 1327 +uz dec 188 if utc >= 1336 +hw dec -575 if z < -2663 +ppl dec 977 if ny != 988 +l dec -84 if dea < 5135 +p inc 905 if uz == -3115 +m inc 636 if m == 1903 +hkt dec 95 if p < -3178 +u inc 249 if utc > 1331 +uz dec -196 if qlm == 5662 +hkt inc -621 if fr > -1750 +z inc -859 if l < 3093 +l inc -789 if ppl > -1957 +me inc 916 if tn >= 457 +uz dec -115 if xxh != 406 +z dec -353 if z <= -2669 +hw inc -965 if ppl != -1960 +t inc 333 if qlm == 5662 +t dec 860 if z == -2310 +p dec -841 if l > 3104 +qlm inc 225 if t == 341 +utc inc -937 if p <= -3185 +qlm inc -191 if xxh < 424 +m dec 607 if q != 2354 +uz inc 807 if p >= -3178 +fr dec -431 if uz == -2804 +ppl dec -312 if t <= 341 +a dec -764 if mdk >= -2557 +utc dec 505 if a >= 7228 +ufk dec -148 if tn != 449 +utc dec -371 if utc != -100 +dea dec -11 if utc < 272 +ufk inc 329 if utc != 261 +utc dec -484 if z <= -2312 +m dec 784 if ppl == -1651 +xxh dec 669 if m <= 1147 +xxh inc -798 if me == 178 +p dec -832 if ppl == -1651 +ufk inc 266 if fr > -1318 +a inc -993 if fr >= -1319 +xxh inc 25 if ppl != -1652 +u inc -353 if hw == -1631 +p inc -338 if q >= 2340 +p dec 517 if utc >= 741 +ppl dec -221 if dea > 5137 +hw dec 949 if mdk < -2544 +tn inc 201 if ufk != -3781 +mdk inc 855 if t > 334 +m dec 604 if q <= 2353 +me inc 268 if tn <= 644 +tn inc -372 if m > 540 +l dec 275 if qlm >= 5687 +mdk dec -13 if p == -3199 +z dec -725 if tn > 286 +dea inc -843 if dea == 5142 +hw inc -603 if a >= 6234 +ppl inc 850 if tn <= 279 +l inc -601 if uz == -2804 +m inc 10 if z >= -2319 +fr inc -412 if xxh != -351 +me dec 726 if tn >= 277 +ny dec -719 if me < -544 +hw dec 413 if q > 2349 +a dec -229 if hkt == 2651 +t inc 620 if t != 347 +uz inc -216 if t <= 963 +fr inc 614 if me != -549 +xxh inc 536 if z < -2309 +q inc 974 if me < -548 +q inc -131 if ny == 1711 +tn dec 110 if tn > 274 +l inc 47 if p == -3208 +xxh inc -872 if dea >= 4295 +tn inc -667 if tn <= 169 +q dec 562 if mdk >= -1700 +a inc -16 if xxh != -685 +hw dec 649 if xxh == -695 +ufk inc 239 if l != 2268 +t dec 935 if ppl <= -576 +m dec 1000 if fr > -1120 +hkt inc -167 if xxh == -695 +ny inc 926 if uz > -3027 +m inc -729 if xxh > -693 +m inc -677 if a > 6221 +p dec -412 if qlm >= 5691 +m dec -678 if ufk < -3526 +ppl inc 206 if z < -2308 +m inc -961 if m != -445 +t inc -989 if mdk > -1701 +ppl dec 43 if q <= 1654 +xxh inc -619 if ny == 2637 +ppl dec 168 if xxh < -1312 +t inc 191 if xxh > -1320 +me inc 387 if hw >= -3826 +p inc 517 if q <= 1648 +q dec 577 if ppl > -589 +u dec -841 if fr <= -1115 +dea dec -791 if p <= -2793 +hkt inc 216 if tn != -500 +uz dec -333 if hkt >= 2490 +dea inc 46 if a > 6217 +mdk inc -168 if fr > -1117 +t inc -606 if fr > -1122 +me inc 662 if hkt != 2491 +uz dec 384 if p > -2806 +uz inc -848 if xxh < -1308 +ny inc 617 if tn < -497 +fr dec -359 if utc != 750 +m dec -911 if ufk <= -3530 +ppl dec -190 if mdk != -1858 +u dec -400 if t > -1388 +me inc -381 if u == 2235 +hw inc -548 if m == 466 +qlm inc -940 if mdk <= -1860 +dea dec 180 if z <= -2316 +hw inc 17 if tn != -504 +fr dec -769 if me > -277 +ppl inc -630 if hkt == 2482 +hw inc 825 if xxh == -1314 +utc dec -38 if hw < -3529 +q dec 851 if uz <= -3918 +me dec -417 if me > -274 +q inc 505 if ny < 3248 +ny dec 299 if fr > 9 +utc dec 996 if z == -2317 +z inc 157 if ppl == -395 +mdk inc -11 if mdk == -1866 +t dec -222 if ny <= 2964 +q dec 1000 if u <= 2244 +tn dec -704 if ppl >= -399 +l inc 666 if utc > -212 +q inc 890 if dea >= 4951 +tn inc 255 if xxh > -1324 +me dec -317 if p == -2796 +utc dec 651 if m >= 460 +dea dec -945 if q > 110 +ny inc -755 if z > -2169 +a inc 1 if utc < -858 +uz dec 840 if utc >= -861 +l dec 131 if ufk != -3542 +hkt inc -442 if u > 2236 +mdk dec -156 if hw == -3531 +ufk dec 380 if uz != -4756 +xxh dec 198 if p == -2796 +fr inc -946 if z != -2165 +q dec -736 if dea < 5898 +qlm inc -284 if fr == -934 +z dec 895 if t < -1152 +me dec -370 if l != 2806 +a dec -949 if dea >= 5906 +l inc -913 if uz <= -4758 +uz inc 15 if t > -1158 +m inc 535 if xxh > -1516 +me inc -896 if u > 2228 +m inc -821 if fr == -934 +me dec 754 if m <= 189 +xxh inc 685 if p >= -2802 +utc inc 149 if uz == -4744 +ufk dec -486 if hw <= -3535 +tn dec 617 if u != 2228 +fr inc -971 if ny < 2191 +l dec 933 if z < -3053 +q dec 269 if qlm > 4467 +me inc 449 if l < 968 +utc inc -359 if l <= 965 +tn inc -465 if p <= -2798 +xxh dec -811 if t <= -1149 +fr dec -106 if m <= 182 +uz inc 603 if p < -2794 +uz inc 310 if z <= -3064 +ny inc -764 if hw >= -3538 +mdk dec -843 if ufk < -3416 +a inc 49 if tn != -158 +dea inc 129 if ufk >= -3433 +ny dec 515 if ny < 1438 +q inc -603 if ufk < -3419 +tn dec 470 if hkt < 2496 +m inc -669 if utc <= -1067 +dea inc 401 if ny >= 912 +p inc 129 if tn >= -631 +p dec -708 if hw != -3540 +dea inc 932 if mdk == -1024 +tn dec -244 if ufk == -3426 +ny dec 632 if utc >= -1075 +ny dec -958 if z > -3063 +me dec -67 if hkt == 2490 +fr inc 431 if mdk > -1038 +ny dec -435 if z < -3052 +ny inc 997 if ny != 1686 +dea inc 397 if hw < -3537 +hw dec 232 if xxh == -16 +q inc 826 if p > -1960 +q inc -807 if z < -3045 +uz dec -645 if a < 6227 +me inc -725 if qlm < 4477 +xxh dec -440 if z == -3055 +mdk inc 647 if m <= -489 +t dec -497 if dea != 6827 +hkt dec -874 if hkt == 2490 diff --git a/data/advent2017/input9.txt b/data/advent2017/input9.txt new file mode 100644 index 0000000..a29e6c6 --- /dev/null +++ b/data/advent2017/input9.txt @@ -0,0 +1 @@ +{{{{{{{<>},<},<,>},{{,!!ouu}i>},!i!!!>!!!{>}},{{{{!!!>!!"!!o">}},{{{{{},!>},<>}}},{}},},!!o!!!!ee!!!!io!!!>!>!>},<'>},{{{{,},>},{<"a!>!>,'>,{{{},,}}}}},},},},<,!>,!>a,>},{{{<>}},{{},},,}}}}},{{!o{a"i!u{}!>,<{!!!>,!a>,{}},{{},,},e>},{}}}},{{{{{}}},{}},{{{{},>},{}},{{{<i'!"a!!!>!>>}},{{{},<}{e}},<>},{},!!!!!!!>!!!>},<>}},{<"e!>},<,o!!"!>e!>}"!>,<}a>}},{{}}},{{<,!!{ai{,ou!>},,,<>},{{{<'o!!!>u,!!!>!>},,<>}},{{{{<>}},{{{"!!o"!!!!!>aioo,>},!!!>,{i!!!>},},{<{!>},<}!>,!!i}!!{!!!>>}}},{{{{},},{<},,<'}u,!e}!>},">}}},{{{<>}},{{}}}}}}},{{{},{{},<}!eu}"},!a,a>}},{{{{,},<"">},{}}},<,{>}},{{{}},{!>},},<{>}},{{},{{<,,i!!!!u!!'!'{"ei{">},{}}},{{{,<}},,!!e}">}},{{!eu"!{!ua{>}}}}},{{{{},{}}},{{!},,<<>},{{{{},{,}},{{{},{{u,a{!!!>,>}}}}}},{{<}!>u!>},},<>}}},{},{{{}}}},{{{{},{{{<{"o!!o!><'!!!>>},{{},<'!!,'},!>,!>,>},{},u!!!>!>,}}}},{{{{},{<<',!oi!>},,!>},}},{{}}}}}},{{{},{{{{}},{{},{},!!!>"}}},{{{!>},!>},!">,!!ee>},{{<{!!!>'e!!,,<'!{>}}},{{<}u,!,!!!>!>},!"i{!!!>,>}},{{<"{!!!>ioua!!!>u!ouu!>a!!u>}}},{{}},{{{{},{},{{!!!!!!!>,<"!!!>ea},<'!!!>ue!'>}}},{{{{,},},}},{{{{{},{},,!>},<"oa<>}}},{{,}}},{<",o!!!>e,!>,},},<",!!!i>,{}},{,{>}},{},!'o>}},{},{{{<'>},{<>}}}},{{{{{},<>},{<{!oo"!>},<<"e!>,"{o!}!!!>},>}},{,<,"e!!i{ii!!!!a}u>,!>,<'o{!>!>,,<,>},{{<'!!!>!i!!!>"!>},,'!>,},<}>}}},{},<"}!>},,,<>},{{{},<'u!>},<>},'a!!!>!o!!}">},{{>}}}},{{<},,},<>,!!a{>},{{{{<>}},{}},{,<"<<}},{{{},{}}}}},{{{<{}a!u!>},},{!!'>},!!!!!>oo''<>},{{},,},<'>},{{!!!>!>},{>}}}},{},{{{{{},{,oio!}!>,a!!'u!>},<'!!>}},{,!!!>},<}!>!!!>!!!!<{!!io!>!!!>},},{{!!!>>}}},{,},!!"'"{!!,>},{{<,"!!a!>},,},},>},<{!!ou'!!!,a>}},{{},{}},{{{},o{u"!!!!!!!!!!>}},{>}}}}},{{{},},{{},{,!>,<>,{{,>,{!!!>!>!!!>!>},}},<}!!e>}}}}},{},{{},{{},{}}},{{<}!>},,!!!>a!!"!!'>},{<{'!>},i!>,'!>},<'!!>,<>},{},,{,>}}}}},{{{{{{<""!!!>!>,<'!o!!!>>},{}}},{<'!"o!!!>}!>},<>,{<'>}},{{<,a!i"!}i!!!>"a"!!!!{u!!,i>},{},},<{io!>e!>,,<>,{{}}}}},{{!!a,eeia,>},{<>}}},{{{<>}},{{},<}>},{}},{{<},<{!>!ia!>},<{o!>}!!!>},<>}}},{{{'o"a}euu!!!>ua>},{{<"!>},<{!>a!>},,},<>},{<}!!e!a!!>}}},{{},,,,,,<,,<"!!!>,},}!u!>},,}},{{<>,{}},{{{<}i!'",!>!,!!e!u>}},{}},{>,{,<"'!'e!!!>!>},},!!<{>,{,'!>},<'!!!!a{{!!!>!>e}a}!>},,<>}}}}},{{{!>,},{!,!>},u''<>}}}},{{{{{e"a>}}},{!!}!>,<'o!!!>,}""o{u!!!>>}},{{{},<{!!e,o!>!ou>},{{{}},{}},{{<"'!'{>},},}},{{{,<'a,!eo,!!>},<""!>,},,},{{!!!>ii!>},,,{}}},{{},{{,},},},{uo"!!!>,}e!>u>}}}},{{{{<}!!}!>}'!!<{!a!>,}}}},{{{<{"},<"!ii"'}!!!>!!},<<>,<,!!!!!!!!!>"{!!"eu,!!!>,,},{}},{},{{},{{{u},,}">},<""e}<,!>!o!!!>}!!o>},{<{>}}},{{{{{}},{{{<,o!>},!>,a}ee>},{{<{,!!,!>},a>},<'!!u{i>}},},<}},{{},},<"{o<>},{},,<>}},{<}oio>,{{'!>},},{,a!>!>},,<}>}}}},{{<{,ei!e{'{!{">,{,o!",a}!>,}},{{<",'!>{!"iu!!!>!>},},>,{<"a!!!>!>!>},<}{!,!!!!ou}{>}},u}!!!>>}},{{<"!>,,},a!!a,!>,<">,{!>,!>},},},<'>}}}}}}}},{{{{{},},},<"o!>!>},<'!!!>,},},{{{{!>,},{<"!}!i!!!>},},!>},<{>}}}}},{{{"!!ua!>},<"!!!>!!!>{'ie{'}>},,!!!!!>},!!u"{'o>},{{!>},,,{o'ui!!!><{>}},{{},{,<{o!!}"!>},<{}e">,{}}}}},{{{!>},},{{{{,<>}}},{}}},{{<}!>,<'!>,,!>a>},{!>,<",<},{!>,,<{!!"eo>}},{{},{{o!io!>},'},<'i,!>iea!!!!!>"!!!'>}},{{{{,<}!!"!>,<}},{},<,'!>,}},{{,}!!'!>},},<{>},{>}},{{{{'!!"i!!!>!"o!!!>!!!>ii'>}}},{},,!!!!!>!>,,<{}}}},{{{a}">}},{{a!>!>,<{!!!!i!!!>,,{>},{},<'}}!>,}}}},{{{{{{},{},<'{!!>}},{!!{!>o!!e!!"'!!!>},<"o!!<>}},{{>,,!>,<}!!<{!io}>},<'"!>,!!!>!>},,>},{{aa!!!>eau,'>,}}}},{},{},{{{,{}},{{<,{},<>},{}},{{{}},!>!!"'!!u!a!!,a>}},{{},{oo"!!!>,{>,'>},{!!!>!!'{''!>{i{!>},<>}},{{{,<"!!'i"ui>},{}}},{{{{<'<{},},<{a!!!>>}},!!{!!o>},{{},!!!!e!>}!!!>!!!!!>'">},<>},{{<'{!!}a">}}}}},{{{{{<,<"!>},},,}},{<,!!!>},},,<>,<,!>},,},{}},{{},,<>},{{{{{ua,!}'<,>},},o"!>},<">},{{{},{}}}},{{},{{<>},},},}}},{},{{{{!'>},{<'!!!>!!!>},"ioa!!!>}!!!>'>}},{}}}}}},{{<,!o'e{!!""!e',a!>!!!>},<>},{{},{,<<{o!!u>}}},{{{}},{{<{>},,},o!>a,>},{o!>e'!!!>},,{{}}}}}},{{},{{{<,!!"}!>},,<>},{{}},{,{},,,<,<}!!!!!>e"{!!<,'!>!>!!!>"!ee{!>},<>}}},{{{,},<>}}},{{{{,},<,e!!!>}'!!'uei>},{<"{i>}},},<"!>,eu!<{a>}}},{{{{<{"!oi>,{}},{{<}!>},<"au>,{,<}},{}}},{{{i!!!!}'e!!!>"},{<!!!>>,<>}},{},},!o!>,<>,,<}!>},!!!>!!!>!>},<>}},{}},{{{{{},{}}},{{',ua'!!a{{>},{{>}},{{<}!>aai!!'"}!!!},{{{},<{!!e!>},,,<>},<>}}}},{{{},e!!{'"oi!>>}}},{{{!!i,o!>},>},{{},{,<"!!!>}!>},}}}}},{}},{{}}},{{{o!e,!!>,{{},{}}},{{},<}!>},oeee>}},{{{i"e{!>},}},{}},{{{},{u'!!!o}a!>,<>}},{{{{<,oo!!!>o<"ao!!!>,<'!}!u!!,,{>}},{{},<},>},},},},,!>{>},{{{{<}"""e!>ei"!"}!!e'!!>}},{},<{<}}ieoai!",!>,},{{{},<'}!}u{,!}{e!!>,{<,}}!>!>!,i!>},}},{o,ua!!!>,},<"!!!!a!}a!!!>},<{!!!>!>,<>}}}}}}},{!>},},o}!!!>,<{!!<}u>,!!}}!>!>},}},{{!>,},},<{!!!!!>'o!>,<>},{{{<,'>},{}},!!},!!!>'>}}}},{{{{{{>,{!},,,<>}},{{},a,!!}!"i{!!!>,<>}},{{,}!!!!>}}},{{{{{},{,}!!!>,,}},{{e!>!>i!!}!>,<>},{,<,!!ou!!}},{{}}},{{<}u'!!!>},<,!!!e>}},{}},{{,},<}u""!!!>io!!!>},},{{>,{}}},{{}},{{{o,!!e''i},>}},{a!>,,<>,<,!,}>},{o'!>e>,{}}}},{{{{}}},{{{,{}}},{{{!>>}},{<'o}'!>,,,{a!!i'>}},{{},{{{<,!>},},,,}},{{u!!!>o!>ei,!}!!!!!!!>!!!>!>,<>},<'o!}'>}},{{{,<<>}},{{},},},,},!!!>ae!>,<>},u!>,<<'{!>!!"}!>,<<>}},{{{},<,!o!!u!!!}'i!!>,},{{{},{}},{}},{}},{{{}},{{<"u!e!!,!,!>},},,a!>},<"!>,>},u!>},!>,<}!!i!>,}},{{{{{{{},<}}},!,>}}}},{{{},<>,{{!!!>!!a",!>},}}},{"!>a!!,!>},<>}},{<"!!!>},<,!u!!!{!>},<,<,o'!>,<"!"{!>,<>,!e"!!!!!>!!!!}"<'o!>},<"!>},<}u>},{{{{<,!>,!}}},{{}}}},{{{}},{,}!>},<,i{!>},>,{{},{i!>,!>!!i!{!>,},>}}}}}}}}},{{{<>}},{{<>},{,,,<>}}},{{},<}!!!>!>>,,!!>},{!>},!>!!!>},!e!!!>!>!>o!!"!a>,{,>,{<'>}}}}},{{{!!,e!!>}}},{{},{{},<{ia!!}e"!>},,}},{,!>},u!'!!i!!!"!<>,!!ua}{}>}}},{{{{{{{},<>},{!!!>!!a!>,<>},{{{<,,ua!>,<<"!i!{"!>},,{<>}},{<}}!!!>!>o!!!>!!a!!{i}},<,},!!!>}!!'!!!!!>,}}},{},{{{,<>}}}},{{!!!>,,},,!>}>,},<<,e!!u!!{<>},{{,,<{!>},!'!>},<'{,">,{},<<,ue!!,},}}},{{{"!!e!>,,<{!>,<>},},<'a"!!!,!>},},<'"uo{e!!{!!!>i"!>!{!>},<,i{>}},{{{}},{{{!>,<>,!!!>!>,!>},<>}},{}},{{},},i,<>}}}},{{<,oa!>o"!>},},{<'!>},,{<,u>}},{{,,!<'>},{{}}}},{{<>}},{{{},{{},<!!!!!!!>},},!!'>},},{}},{{<"!i!!ii!!!>,<,!!!>'{,'u<>}},{{<},<>},{<,!e!>!!!>i!>,,},!}!>!>},}}}},{{{{<<>}},{{!!u!!!!},!>},',!>},},,>}},{{{{<}{a!>},},},<,"ia!'!!,e'i>}},{{},{},<{!>,},!>,<">}}},{,<{"!>!>,>}},{{{{}},{},{{{{!!"a!>,<>,{}}},{},}}}},{{,{>}},{{{{{<}"!!!>!>u!!!>}}i!>,<}'a!{{>},<,!>!>!},},},{{{{<>}}},{,,{}},{{a!,ei!!!>!>"!>>}}}},{!>},!>}}""},<>,{!>},},{}},{{},!>},},,{,!>},<>}}},{{},!!!>'}eu!>,!!!>!!!>!!!>"}!e>}},{{{{!>,},{{,<{!{i!>}!}a",oo!>,,<>,{<,!e'>}},},},a!!!!'<'!!!>,<>}},{{},}},{{,},,},},<"i!!e!>},},}}},{{{{}"!!!>},,<"!>},{{},<>,{},<{"!}!!oo!!!>'!>,,<'>}}}},{{{},!>},},},<{!>,},,,<<>},{{}}}}}},{{{{},<,<"!>,}>},,{'!>},,>},{{,<}i!{>}}},{{{{{},{}}},{{{>,,!!!u!>>}}},{}},{{},{},{}}},{{{{{,},}},{{}},{}},{{},{{},{{{}},{{<},<,'!!a!>},'!!!>>,',!>,!!'!>},<>},{{{'!!!>!>},ue!e"!!!>},<"o>},{oe}{'!!<>}},{<>}},{{},<'!>},u>}},{<>}},{{{{},{{{<,a!>e!!!>!!!>}o!>},,<>}},{{<}!!!!!!!>o<>}}}}}},{{{},{<{!!!>'!!u!!!>'>,{{'!!!!e!"i>}}}},{{{,,<>}}},{{{{{{}!>},},o''"u>},{{{!!a!>,<'{!>,,<>}},<},ii!,!!e>}},{}},{{},<{i}!>},!"}},{{{{}},{<,!>i!!i,a!>},<"!>u!aoe>,{<,}}},!>,<'!ua!o!>,}},{{{!>},!!oie"!i>,{!!!>'{{>}},{{{{!!o!>i!!!>},<,}}},{},{{},},>}},{{{<'!!!!!>o!!!!!>!>,},>,{<}!!!!!!u!!!>},,>}},{<>,{'>}}},{{{ee}i!a!!!>!!!>},<}!!,!!!>!>!!i!>,}},{{{{},{}}},{{{{e{uo{u>,!!!>,<{!>}!u>},'>},<,!!u!>,,>}}},{{}}},{}}},{{<,{{>},{{<,!>},iu{}!>,!!!>!!!>{!{a,>,{{!aa>},},o!!'!,>}},{{},<"'ai!!!>'ia>}},{{{},{},<"!!!'!>!!!!}!>},!!!>,,<>}},},<}'!>,!!,>}},{{{"}>},{,<}}ieo!!o!>,!!!>>}},{<"!>!e!!!>!>},,,!<>,{<>}},{},,!<}{'>,}}},{{{{,,},{{,},o!!<>,{}}}}},{{<}'!!!!'!>}},{<,u!!{!!!!!>"!!e>,},<}"}!!{o!!!>o!ie!!!>>}}}},{{},i!>e!,,},<,>,},},{{<}ei!>,!}u!>},},,},<>},{},i!>},u}u>}},{}},{{{{{{<"io!>},,<"}!"!!!>}}>},{<>}},{}},{{{{!>},,,o!{>},{!u}},{{,}}},{},e'!!!!'!a!>},<}i>,{{},{<,<},},!!a"e>}}},{{},{,<>,<'ai!">}}}},{{a}}!"!!e!!o,e!>,,<{},{!!>}}},{,,<},{{{},<''!!!>!!{!!!>},},<'!!!!!>},<>},{}},{{uea>},{}}}}},{{}},{{{{{{}},{{},{<}!!!>,}},{{{u!{io!>,{{>},{{<}!ea!>>}}},{,}!!!!!>!!!},!>,<,!!{'!!!o''<>}}}},{{{{{},{{}}},{}}}},{{{}},{},{<'u!!!>!!!!!>},e}{io>,{}}},{{{{}},{}},{{},{{{{},{{}}}}},{{{},{{}},{<{!!!"!!!>!ea!!!<>,{}}}}}}}}},{{{{{,!>!"}!!>}},!!!!!!!"!"i,!>,<>},{i!!!>{e!>a'i{!!!>},{}},{}}},{{},{{{},,{}},{,<,'aa{!!!>},!>},},{{},e>}}},{<{!!!>!>!!>}},{{,<"{oo{!!!>,!>},>,{a'!!!!}!>,ii!!"!>>}},{{{<'oo"}!!!>},{e!!"!>,},},},{!!}uu!>},}},{{{}},<{},u},!>,<,{<,{>}},{{{{{}},<}o!{<}eoe!>'{a!>,},<>},{{{<{!>,!}!!!!}>,{,},},o!!'!>,}},<"!>!>e!>},<"">},{,!!a'},},<{"!!!>!!>,!!{>},{{{}},,'!>,!!!>},,}},{}},{{{{<"'"},'}!>},<"!,!!!>!>,!>,}},{}},{{},{!>},ie!>,},<>}}}}}},{{{{{au>,{!>{"!>,},<{{a'a"{,o!!!>!!<>}},{},{}},{{<>}}}},{{{!!!>!!!>>,>},{{{<"ei!!!>,u>},{<<,ia!>},"">}}},{{{{,},},{{{},<>},!!!>i,!!!>o"ao!>,}}},{<'!!o">}},{{{<>},a>},{{,,,<}>,,,<>}}},{<'},,,,<<<"!!<>,{!!'!>{!>},<'i!!!>>}}}},{{{{<'e}u"}a!!!>!!!>,},<}!!!>>},{<}e!!!!}a{i>}},},{{<,!>!i!!!>},,{{{}!!"!>},!!!>!!!>"!!!!>}}}},{{<}!!>},{},}}},{{{,!!!>!!!>,<}!!>},},},},!}"o,>}}},{},{{{{},,<,eeu!>,<,"u'"!>},<">},{{{,,},,,<>}},{}},{{{{{}},{{oo!>o!!!!!!!>{!!u"'">}}},{},}}}},{{{<>,<'a,}!!!!!<'!!!>},,{!!"!>!>},},{{},{},},},},,"!!<{!!o>}}},{{e}{!{!>,,<{u}e!>e!ua>},{{<"}'!>,{,!>}}{!!!!!>,}}}},{{{},{{},{<'!!!>}!>},},,,,!!>}}},{{{},!>,<,}},{{{<>}},{,"'!><{>},{<,!!,!!!!!>"!!!>!>},<"!!!>!>>,{,},<,!>},}!!"!>,},<<u'>}}},{{{<}{!>,<<"!!!>!!{!>,<>},{{},{<"!>},<{e}>}},{<"a!>},},<'{!!!!!>i!>,>,{,{,!!!>!!a!>},},<>}}}}}}}} From eca428fe71e42ee43c5f9ff83a0dbee38ca11849 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Fri, 8 Dec 2017 22:08:54 -0800 Subject: [PATCH 24/55] Add files via upload --- ipynb/Advent 2017.ipynb | 538 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 512 insertions(+), 26 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 8609645..73dfeb9 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -19,17 +19,19 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ "# Python 3.x Utility Functions\n", "\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "\n", "import re\n", "import numpy as np\n", "import math\n", "import random\n", - "import urllib.request\n", "\n", "from collections import Counter, defaultdict, namedtuple, deque, abc, OrderedDict\n", "from functools import lru_cache\n", @@ -40,6 +42,8 @@ "identity = lambda x: x\n", "letters = 'abcdefghijklmnopqrstuvwxyz'\n", "\n", + "cache = lru_cache(None)\n", + "\n", "cat = ''.join\n", "\n", "Ø = frozenset() # Empty set\n", @@ -161,6 +165,11 @@ "def mapt(fn, *args): \n", " \"Do a map, and make the results into a tuple.\"\n", " return tuple(map(fn, *args))\n", + "\n", + "def most_common(seq):\n", + " \"The item that appears most frequently in sequence.\"\n", + " [(item, count)] = Counter(seq).most_common(1)\n", + " return item\n", " \n", "################ Math Functions\n", " \n", @@ -188,6 +197,13 @@ " result *= n\n", " return result\n", "\n", + "import operator as op\n", + "\n", + "operations = {'>': op.gt, '>=': op.ge, '==': op.eq,\n", + " '<': op.lt, '<=': op.le, '!=': op.ne,\n", + " '+': op.add, '-': op.sub, '*': op.mul, \n", + " '/': op.truediv, '**': op.pow}\n", + "\n", "################ 2-D points implemented using (x, y) tuples\n", "\n", "def X(point): x, y = point; return x\n", @@ -264,7 +280,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -359,7 +377,9 @@ { "cell_type": "code", "execution_count": 4, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -388,7 +408,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -450,7 +472,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -477,7 +501,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -543,7 +569,9 @@ { "cell_type": "code", "execution_count": 10, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -598,7 +626,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -618,7 +648,9 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -663,7 +695,9 @@ { "cell_type": "code", "execution_count": 14, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -690,7 +724,9 @@ { "cell_type": "code", "execution_count": 15, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -719,7 +755,9 @@ { "cell_type": "code", "execution_count": 16, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -750,7 +788,9 @@ { "cell_type": "code", "execution_count": 17, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -775,7 +815,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It took me less than five minutes, and my preparation with `Input` and `canon` helped, but I was still too slow to score any points--the top 20 took less than two minutes each." + "That was easy, but the leaders were three times faster than me." ] }, { @@ -790,7 +830,9 @@ { "cell_type": "code", "execution_count": 18, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -821,7 +863,9 @@ { "cell_type": "code", "execution_count": 19, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -860,7 +904,9 @@ { "cell_type": "code", "execution_count": 20, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -914,7 +960,9 @@ { "cell_type": "code", "execution_count": 21, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -955,7 +1003,9 @@ { "cell_type": "code", "execution_count": 22, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "banks = vector('4\t10\t4\t1\t8\t4\t9\t14\t5\t1\t14\t15\t0\t15\t3\t5')\n", @@ -983,7 +1033,9 @@ { "cell_type": "code", "execution_count": 23, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1003,7 +1055,9 @@ { "cell_type": "code", "execution_count": 24, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1030,7 +1084,9 @@ { "cell_type": "code", "execution_count": 25, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1057,7 +1113,9 @@ { "cell_type": "code", "execution_count": 26, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1086,7 +1144,9 @@ { "cell_type": "code", "execution_count": 27, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1102,6 +1162,432 @@ "source": [ "realloc2(banks)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 7](https://adventofcode.com/2017/day/7): Memory Reallocation " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First I'll read the data into two dicts as follows: the input line:\n", + "\n", + " tcmdaji (40) -> wjbdxln, amtqhf\n", + " \n", + "creates:\n", + "\n", + " weight['tcmdaji'] = 40\n", + " above['tcmdaji'] = ['wjbdxln', 'amtqhf']" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def towers(lines):\n", + " \"Return (weight, above) dicts.\"\n", + " weight = {}\n", + " above = {}\n", + " for line in lines:\n", + " name, w, *rest = re.findall(r'\\w+', line)\n", + " weight[name] = int(w)\n", + " above[name] = rest\n", + " return weight, above\n", + "\n", + "weight, above = towers(Input(7))\n", + "\n", + "programs = set(above)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the root progam is the one that is not above anything:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'wiapj'}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "programs - set(flatten(above.values()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two:**\n", + "\n", + "A program is *wrong* if it is the bottom of a tower that is a different weight from all its sibling towers:" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def wrong(p): return tower_weight(p) not in map(tower_weight, siblings(p))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we define `tower_weight`, `siblings`, and the `below` dict:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def tower_weight(p): return weight[p] + sum(map(tower_weight, above[p]))\n", + "\n", + "def siblings(p): \n", + " \"The other programs at the same level as this one.\"\n", + " return [] if p not in below else [s for s in above[below[p]] if s != p]\n", + "\n", + "below = {a: b for b in programs for a in above[b]}" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'eionkb', 'lsire', 'wiapj', 'ycpcv'}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set(filter(wrong, programs))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So these four programs are wrong. Which one should we correct? The one that is wrong, and has no wrong program above it:" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'eionkb'" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def wrongest(programs):\n", + " return first(p for p in programs\n", + " if wrong(p) \n", + " and not any(wrong(p2) for p2 in above[p]))\n", + "\n", + "wrongest(programs) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now what should we correct it to? To the weight that makes it the same weight as sibling towers:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1072" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def correct(p):\n", + " \"Return the weight that would make p's tower's weight the same as its sibling towers.\"\n", + " delta = tower_weight(first(siblings(p))) - tower_weight(p) \n", + " return weight[p] + delta\n", + "\n", + "correct(wrongest(programs))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 8](https://adventofcode.com/2017/day/8): Memory Reallocation \n", + "\n", + "This one looks easy: a simple interpreter for straight-line code where each instruction has 7 tokens. It is nice that my `array` function parses the whole program." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "6828" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "program = array(Input(8))\n", + "\n", + "def run8(program):\n", + " \"Run the program and return final value of registers.\"\n", + " registers = defaultdict(int)\n", + " for (r, inc, delta, _if, r2, cmp, amount) in program:\n", + " if operations[cmp](registers[r2], amount):\n", + " registers[r] += delta * (+1 if inc == 'inc' else -1)\n", + " return registers\n", + "\n", + "max(run8(program).values())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two:**\n", + "\n", + "Here I modify the interpreter to keep track of the highest value of any register at any time." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "7234" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run82(program):\n", + " registers = defaultdict(int)\n", + " highest = 0\n", + " for r, inc, delta, _if, r2, cmp, amount in program:\n", + " if operations[cmp](registers[r2], amount):\n", + " registers[r] += delta * (+1 if inc == 'inc' else -1)\n", + " highest = max(highest, registers[r])\n", + " return highest\n", + "\n", + "run82(program)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 9](https://adventofcode.com/2017/day/9): Stream Processing\n", + "\n", + "For this problem I could have a complex finite-state machine that handles all the characters `'{}'`, but I think it is easier to clean up the garbage first:" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'{{{{{{{},},{{},}},{{{{}},{{{{{}}},{}},},{{{{},{,{{{}}}}},},{{{}},{{}}}}},{{,{}},{{},},{}}}},{{{{{}}},{}},{{{{},},{}},{{{}},{{{},},{}},{}},{{}}},{{,},{{{}},{{{{}},{{{},},{}}},{{{{},},{}}},{{{}},{{}}}}}}},{{{},{{}},{{{{},{}}},}},{{{}},{}},{{},{{},{}}},{{{}},{{}}}}},{{{{},{}}},{{},{{{{},{}},{{{},{{}}}}}},{{}}},{},{{{}}}},{{{{},{{{},{{},{}}}},{{{{},{}},{{}}}}}},{{{},{{{{}},{{},{}}},{{{,},{{}}},{{}},{{}}},{{}},{{{{},{},{{}}},{{{{}},{{{{{},{}}},{{}}},{,{}},{}},{}},{},{{{},{}}}},{{{{{},},{}},{,},{{}}},{,},{{{},},{{}}}},{{,},{{{{}},{}},{}},{{{},{}}}}},{{{},},{{},{{}}}},{},{{{{{},{}},{},{{}}},{,},{{},}},{{},{}},{{{}},{}}}}},{{{},},{{},{,{{,{}},}}}}},{},{{},{{},{}}},{{},{,},{,{}}}}},{{{{{{},{}}},{,{}},{{},{,{{}}}}},{{},{}}},{{{}},{{},{}},{{}}},{{{},{{},{}}},{{,}},{{,{}},{{{}},{}},{,{,{}}}}},{{{},{}}}},{{{{{}}},{}},{{{},{{{}},{}},{{},}},{{{},},{{,{}}},{{},{{},{}}}},{{{{}}}},{{{,},{}},{},{{},{{{},},{}}},{{{{{}},{{{},{{},}},}},{{},{}},{,{{},{}}}},{{,{}},{{,{}},}},{{,{}}}}}}}},{{{{{},},{{{{},{}}}}},{{{},},{{,{}},{{},{,{}}}}},{{{},{{{{}}},{}}},{{},{},{,}},{{},{{},}},{{{{}},{}},{{},{}},{{{{}}},{}}}},{{{}},{{},{}}}},{{{{{{},{}},{}},{{,},},{{,}}}},{},{},{{{,{}},{{},{}},{{{}},}},{{},{,},{}},{{{},{}}},{{{{}},},{{},},{{}}}}},{{{{{}},{,},{}},{{},{{{{{},},{{{},{}}}},{{},{{},}}},{},{{{{},{}},{}}}}}},{{},{{},{}}},{{{}},{{},},{,{{}}}}}},{{},{{{},{{}},{,{,}}},{{{}}},{{{{},{}},}}},{{{{,{}},{{,{}},{}}},{{{,{,}},{,}},{}},{{{{{},{}}},{{},{}},{{},{{{},}}}},{{{}}},{{{},{{},{}}}}},{}},{{}}},{{{,{{},{}}},{{},}},{{{}},{}},{{{},{}},{{{{}},{{},},{{{{}},{},{{{,{}},{}}}}}}},{,}},{{},{{{},{}},}}}},{{{{{{,{}},{{}},{{}}},{{{{{},{}},{{},{}},{{}}},{{}},{}},{{},},{,{}}},{{}},{{{}},{,},{,{}}}},{{{{}}},{{{,{}}},{{{}},{,}},{{},{{{}},{{},}},{{{}},{{},}},{{{,},{{{},{}},{}},{}},{{{}},{{},}},{{{{{{{},}}}},{{{,{{}}},{}},{,},{{{{}}},{{}}}},{{{}},{,{{},{}}}}}}}}},{{{}},{{},{}}},{{,},{,{,{}}}}},{{{}}},{{},{{}},{,}}},{{{{{{{},},{},{{{,{}},{}},}}},{},{{{}}}},{{,},{{,{}}},{{{},},}},{{{}},{{{,}},{}},{{}}}},{{},{,{}},{{},{{}}}},{{}},{{{},{{},},{}},{{}},{{},{}}}},{{{{}},{{},}},{{{{}},{{},{}}},{}},{{{{}},{},{{{{,{}}},{}}}},{{,{}},{{{{{},},{{{{}}},{,{}},{{}}}},{,},{}},{{}}},{{},}},{{{{},{{,{}},}},{{}},{{},}}},{{{},{{,{}}}},{{{},},},{{}}}}}},{{{{},},{{}}},{{{{{},{}}},{{,}}},{}},{{},{},{}}},{{{{{}},{{}},{}},{{},{{},{{{}},{{,},{{{},{}},{}},{{},}},{}},{{{{},{{{}},{{}}}}}},{{{},{,{{}}}},{{{,}}},{{{{{{},},{{{}},}},{}},{{}},{{{{}},{,{}}},}},{{{,}},{{{{}}},{},{{},}},{{{,{}},{,{}}},{{{}},{{{{},{}}},{{{{,},},}}},{{}}},{}}},{{},{{,{{},}},{{},}},{{{},{}},}},{{{},{}},{,{}},{,}}},{{{{},{{,{}}}}},{{}},{,}}}},{{,},{{},{}},{}},{{{{{{},{}},{}},{{{{},{}},{{}}},{,{{},{}}},{{},{,}}}},{{},{}}},{,},{{{},{}},{{},{}}}}},{{}},{{{{{{}},{{},{}},{{{},{{}}},{}}}},{{{{{},{{}}},{}}}},{{{}},{},{,{}}},{{{{}},{}},{{},{{{{},{{}}}}},{{{},{{}},{,{}}}}}}}}},{{{{{}},},{},{}},{}}},{{},{{{,{}},{,},{{}}},{}},{{,{}},{{{},},{}},{{{}},}},{{{{{}},},{{{,{}},},{,},{{{}},}},{}},{{{{}},{}},{{}}}}}},{{{{{,{}},{},{}},{{}}}},{{{,},{{{},{}}},{{{{},{{{},}}},{}},{{{},},{{,}}},{,{}}}},{{{{},{}},},{{,{{}}}},{{},{}}},{{{},}}},{},{{{{},},{{{}},{}},{{{{{}},{{}}},{}}}},{{{,},{{},{}}},{{},{{}}}},{{{},{{},{}}},{{{},}},{{{}},{},{,{}}},{{{},{{},{}},{,{}}}}}}}}\\n'" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text1 = Input(9).read() # Read text\n", + "text2 = re.sub(r'!.', '', text1) # Delete canceled characters\n", + "text3 = re.sub(r'<.*?>', '', text2) # Delete garbage\n", + "text3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now I can deal with nested braces (which can't be handled with regular expressions):" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "9662" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def total_score(text):\n", + " \"Total of group scores; each group scores one more than the group it is nested in.\"\n", + " total = 0\n", + " outer = [0] # Stack of scores of groups nested outside current group\n", + " for c in text:\n", + " if c == '{':\n", + " score = outer[-1] + 1\n", + " total += score\n", + " outer.append(score)\n", + " elif c == '}':\n", + " outer.pop()\n", + " return total\n", + "\n", + "total_score(text3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two:**\n", + "\n", + "At first I thought that the amount of garbage is just the difference in lengths of `text2` and `text3`:" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5989" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(text2) - len(text3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But that turned out to be wrong; that counts all of `'<...>'`, whereas I'm not suppossed to count the opening and closing angle brackets, just the `'...'` in the middle. So that would be:" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4903" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text4 = re.sub(r'<.*?>', '<>', text2) # Delete inner garbage\n", + "\n", + "len(text2) - len(text4)" + ] } ], "metadata": { @@ -1120,7 +1606,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.3" + "version": "3.6.0" } }, "nbformat": 4, From 70452f56db0dc8d72f802f6e0d419e0586d82377 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Tue, 12 Dec 2017 14:34:54 -0500 Subject: [PATCH 25/55] Add input data through input12.txt --- data/advent2017/input11.txt | 1 + data/advent2017/input12.txt | 2000 +++++++++++++++++++++++++++++++++++ 2 files changed, 2001 insertions(+) create mode 100644 data/advent2017/input11.txt create mode 100644 data/advent2017/input12.txt diff --git a/data/advent2017/input11.txt b/data/advent2017/input11.txt new file mode 100644 index 0000000..1614b28 --- /dev/null +++ b/data/advent2017/input11.txt @@ -0,0 +1 @@ +n,nw,nw,nw,sw,sw,sw,ne,s,s,nw,s,s,ne,se,s,s,nw,s,se,se,se,se,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,sw,se,ne,sw,n,s,ne,ne,sw,n,ne,sw,nw,n,n,ne,ne,ne,ne,n,se,n,n,n,n,n,n,n,n,n,n,nw,n,n,sw,nw,n,nw,s,nw,n,n,s,nw,ne,n,se,nw,nw,nw,nw,se,s,s,s,s,s,sw,nw,n,nw,nw,se,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,se,nw,nw,nw,nw,nw,s,nw,sw,nw,nw,sw,sw,sw,n,s,nw,sw,sw,nw,nw,nw,s,n,n,sw,sw,nw,nw,sw,sw,sw,n,nw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,sw,nw,ne,sw,s,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,s,s,sw,sw,s,s,s,se,nw,sw,s,s,se,sw,nw,s,se,s,sw,sw,sw,s,sw,s,s,s,s,s,s,s,s,s,sw,s,s,ne,s,s,ne,s,nw,sw,s,s,s,nw,s,se,s,ne,s,s,s,s,s,s,s,s,s,s,s,s,n,s,s,ne,nw,s,s,s,se,se,s,s,nw,se,s,se,s,s,s,s,sw,sw,s,s,s,se,n,se,s,ne,se,s,se,nw,s,ne,se,se,se,se,se,s,s,se,ne,s,nw,se,s,se,sw,se,se,se,se,se,s,s,n,ne,se,s,se,n,nw,s,se,se,s,s,s,se,se,se,s,sw,se,se,se,sw,se,se,s,se,se,se,se,se,se,ne,se,se,ne,s,se,n,se,se,se,se,se,ne,se,n,se,ne,se,ne,se,ne,ne,nw,se,ne,s,ne,n,se,sw,se,se,nw,se,ne,se,se,s,ne,n,se,se,se,s,ne,se,se,ne,se,se,se,ne,ne,sw,ne,se,s,ne,nw,nw,ne,n,ne,se,nw,s,ne,se,ne,ne,se,ne,n,ne,ne,ne,ne,ne,se,ne,sw,ne,sw,ne,ne,ne,ne,se,ne,ne,n,ne,ne,ne,se,n,se,ne,se,nw,se,ne,ne,ne,ne,ne,se,s,nw,ne,ne,ne,ne,ne,ne,ne,se,ne,n,ne,ne,ne,se,ne,s,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,n,sw,nw,se,ne,ne,sw,ne,nw,ne,ne,ne,n,s,ne,ne,ne,n,ne,ne,ne,se,n,ne,se,se,s,ne,ne,nw,ne,ne,sw,ne,se,n,ne,ne,s,n,ne,ne,ne,n,ne,ne,n,nw,ne,ne,ne,n,ne,n,s,ne,se,s,ne,ne,ne,ne,ne,nw,s,ne,sw,n,ne,n,ne,ne,nw,se,n,ne,ne,ne,n,n,ne,n,ne,ne,ne,n,nw,ne,n,ne,n,ne,n,ne,ne,ne,nw,n,s,ne,ne,sw,n,ne,n,ne,s,sw,ne,ne,ne,ne,ne,ne,n,n,ne,ne,n,s,n,ne,nw,ne,n,ne,n,s,ne,ne,ne,n,n,s,se,nw,n,ne,n,ne,n,n,n,s,n,s,n,n,ne,n,n,n,n,ne,n,n,n,n,sw,n,n,n,n,n,n,sw,nw,sw,n,n,n,n,n,n,ne,n,s,nw,n,nw,n,ne,n,n,n,n,s,n,n,n,n,n,n,n,n,n,sw,s,n,ne,n,n,n,n,s,sw,n,ne,n,n,n,n,n,n,n,se,s,n,n,sw,n,se,n,n,n,n,n,n,n,s,s,sw,n,n,n,n,n,n,sw,nw,n,n,sw,s,nw,sw,se,n,n,n,n,s,n,nw,nw,nw,n,sw,nw,n,sw,s,sw,nw,n,n,n,ne,n,nw,nw,n,n,n,n,s,nw,se,n,n,se,n,nw,nw,n,n,n,s,n,s,nw,n,nw,nw,nw,nw,nw,sw,nw,ne,n,nw,n,n,n,nw,se,sw,n,n,s,ne,n,nw,nw,nw,nw,n,n,nw,se,n,n,n,se,n,nw,n,sw,se,nw,n,n,nw,nw,n,nw,n,nw,nw,n,n,nw,n,n,nw,n,n,n,n,n,n,n,n,nw,nw,nw,nw,sw,n,n,nw,nw,n,se,s,n,nw,n,nw,nw,n,n,nw,n,n,n,nw,nw,nw,n,nw,se,nw,n,n,nw,n,n,n,n,n,nw,n,se,s,ne,n,nw,ne,nw,nw,nw,n,nw,nw,n,se,n,nw,se,s,n,ne,n,nw,se,s,n,n,ne,n,nw,se,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,n,nw,nw,n,nw,n,nw,nw,nw,n,ne,nw,nw,nw,n,nw,nw,sw,n,nw,sw,nw,nw,n,nw,nw,nw,n,n,nw,nw,s,nw,sw,nw,se,nw,nw,nw,nw,s,nw,n,nw,nw,n,nw,nw,nw,nw,n,ne,nw,nw,nw,nw,nw,nw,sw,nw,s,sw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,nw,sw,nw,nw,nw,nw,nw,nw,s,nw,s,nw,nw,nw,nw,ne,nw,s,nw,nw,nw,nw,nw,sw,nw,nw,s,nw,sw,se,sw,nw,nw,s,n,nw,nw,nw,s,nw,nw,nw,nw,se,nw,ne,nw,nw,n,nw,nw,nw,sw,sw,n,nw,nw,sw,nw,sw,nw,nw,nw,n,nw,nw,sw,nw,s,sw,se,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,ne,sw,nw,nw,n,nw,sw,sw,se,nw,nw,nw,n,nw,nw,nw,nw,s,se,ne,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,sw,n,se,s,s,nw,n,sw,s,s,sw,sw,s,nw,nw,sw,sw,nw,sw,nw,nw,nw,n,sw,sw,s,nw,ne,ne,sw,n,se,nw,sw,sw,nw,sw,nw,ne,nw,nw,sw,nw,nw,n,nw,se,sw,nw,nw,se,sw,sw,se,sw,nw,se,nw,nw,nw,nw,nw,nw,sw,nw,sw,sw,sw,n,sw,sw,nw,nw,sw,sw,nw,sw,nw,nw,nw,nw,ne,se,nw,nw,sw,nw,sw,nw,sw,nw,nw,nw,sw,nw,sw,se,sw,nw,sw,n,ne,sw,sw,sw,sw,se,nw,se,sw,sw,nw,sw,sw,nw,sw,nw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,nw,sw,sw,nw,nw,sw,se,sw,nw,sw,sw,sw,nw,s,ne,n,s,n,sw,sw,sw,sw,se,sw,nw,nw,se,nw,sw,nw,se,sw,sw,nw,sw,ne,sw,s,n,se,se,sw,s,s,sw,sw,nw,s,se,sw,sw,sw,sw,s,nw,n,nw,sw,sw,sw,nw,sw,sw,s,n,sw,nw,nw,nw,se,sw,sw,nw,se,sw,sw,sw,sw,sw,nw,n,sw,nw,ne,sw,se,sw,nw,n,sw,se,sw,sw,se,nw,s,sw,sw,nw,nw,sw,ne,n,se,sw,se,sw,nw,sw,sw,sw,sw,sw,nw,se,sw,sw,ne,sw,sw,se,ne,sw,sw,n,sw,nw,sw,n,sw,sw,ne,sw,sw,nw,sw,sw,sw,sw,sw,sw,nw,s,sw,sw,sw,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,se,sw,sw,n,sw,s,sw,sw,n,se,sw,sw,ne,n,se,sw,sw,sw,sw,sw,sw,nw,sw,s,sw,se,nw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,se,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,n,sw,s,s,sw,se,sw,ne,sw,s,sw,sw,sw,sw,ne,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,s,se,se,s,sw,sw,nw,sw,s,sw,sw,nw,s,se,nw,sw,sw,sw,s,sw,sw,sw,s,sw,ne,sw,sw,se,sw,sw,sw,sw,s,sw,n,sw,sw,nw,s,s,s,sw,se,sw,sw,sw,sw,sw,s,sw,nw,se,se,nw,sw,sw,n,ne,sw,s,sw,se,s,sw,sw,sw,sw,sw,sw,se,se,s,sw,sw,sw,sw,s,sw,s,nw,sw,sw,s,sw,s,sw,sw,s,s,sw,sw,s,ne,sw,sw,sw,s,s,s,sw,nw,nw,s,sw,sw,ne,s,sw,sw,sw,s,se,s,s,sw,sw,sw,se,sw,sw,nw,sw,s,sw,sw,n,sw,sw,sw,sw,s,s,s,s,s,ne,se,sw,s,n,sw,se,se,s,sw,sw,s,s,s,s,sw,s,s,s,s,sw,sw,s,s,s,sw,s,sw,n,s,nw,nw,sw,sw,sw,sw,s,se,sw,sw,s,sw,s,s,sw,s,sw,sw,sw,sw,s,se,se,n,ne,ne,s,sw,sw,sw,s,sw,nw,nw,n,nw,s,sw,sw,ne,s,sw,sw,n,s,s,s,s,se,s,sw,se,sw,s,sw,s,nw,se,sw,s,sw,sw,sw,s,n,sw,ne,se,s,s,n,s,s,s,sw,s,sw,sw,sw,s,nw,ne,n,s,s,sw,ne,s,sw,s,s,sw,sw,sw,s,s,nw,s,nw,s,s,sw,ne,s,s,s,ne,s,sw,s,se,s,s,s,s,s,s,s,s,s,ne,sw,n,s,s,s,s,s,ne,s,sw,s,s,n,s,s,s,s,s,s,s,s,s,s,s,s,sw,n,s,se,ne,s,s,s,s,sw,s,nw,s,s,s,s,s,s,s,se,s,sw,s,sw,n,s,sw,s,sw,sw,s,sw,s,ne,sw,s,se,s,sw,s,s,sw,ne,nw,s,s,sw,sw,s,s,s,se,s,s,s,n,sw,sw,ne,ne,sw,nw,s,s,sw,s,s,sw,s,s,s,s,nw,sw,s,s,s,s,sw,s,s,s,sw,s,s,s,sw,s,s,s,s,s,s,s,s,s,s,s,s,sw,s,s,se,s,s,n,s,ne,s,s,se,s,s,s,s,s,s,s,ne,s,s,s,s,n,s,s,s,n,s,n,s,sw,s,n,sw,nw,s,s,ne,s,s,s,s,s,s,n,s,nw,s,sw,s,s,s,s,s,s,s,n,s,s,s,s,s,se,s,s,s,s,s,n,s,s,ne,s,s,s,s,n,s,ne,s,s,s,nw,se,ne,se,se,s,ne,nw,s,s,n,s,s,s,s,n,s,s,s,s,se,s,sw,se,ne,s,s,s,n,n,s,se,se,ne,s,s,s,s,s,se,s,s,s,s,nw,s,se,s,s,s,s,s,s,se,s,s,s,sw,n,s,sw,s,s,s,se,s,s,s,s,s,s,s,s,s,s,nw,s,s,ne,s,s,sw,s,ne,s,s,ne,s,sw,n,s,nw,s,se,se,s,s,s,sw,nw,s,s,s,s,s,ne,s,se,s,s,s,s,s,s,s,s,se,n,s,sw,s,s,ne,se,s,s,se,se,se,s,se,nw,s,s,s,se,nw,sw,s,s,s,ne,s,s,se,s,ne,s,s,s,nw,n,se,s,s,se,s,s,se,se,s,s,s,s,nw,s,s,s,nw,s,s,n,se,nw,s,s,sw,se,s,n,n,s,sw,s,s,nw,s,n,nw,nw,s,se,s,s,se,s,s,ne,s,s,s,sw,sw,s,se,s,s,se,se,s,nw,s,se,s,s,nw,s,n,se,ne,sw,se,s,s,s,s,ne,se,n,se,s,se,s,s,nw,s,se,s,ne,s,s,se,s,se,n,sw,sw,s,nw,s,se,s,se,nw,se,s,se,s,sw,n,s,se,se,s,s,ne,s,n,s,se,se,ne,s,s,s,s,se,se,se,se,sw,s,se,sw,s,s,s,s,se,se,s,nw,s,se,se,s,ne,s,se,s,s,s,s,s,s,se,se,s,se,se,se,se,se,ne,nw,s,n,ne,s,se,s,s,s,nw,se,se,nw,s,se,nw,s,se,se,s,s,se,se,se,sw,se,s,se,ne,sw,s,se,s,s,s,s,s,s,s,nw,n,ne,se,sw,s,se,s,se,s,se,n,se,s,se,se,se,se,se,s,se,ne,se,s,se,n,s,s,ne,s,s,se,s,s,s,s,sw,se,s,se,sw,sw,s,sw,nw,se,nw,se,s,s,ne,se,s,s,s,s,s,se,s,se,se,nw,se,nw,s,sw,s,n,sw,se,se,s,se,nw,se,sw,s,se,se,nw,s,s,s,s,sw,nw,n,se,s,sw,se,se,s,se,ne,s,s,se,s,se,s,ne,se,s,se,se,se,se,se,s,se,se,se,s,se,s,se,s,s,s,s,s,se,nw,se,nw,se,se,s,se,se,se,s,sw,se,se,se,se,sw,se,se,se,s,n,s,sw,se,n,se,s,se,se,se,s,nw,s,se,se,nw,se,se,se,s,se,se,se,se,se,nw,sw,se,s,s,sw,se,se,nw,s,se,s,s,se,ne,se,nw,se,s,se,se,s,se,se,se,se,sw,n,se,ne,se,se,s,se,se,s,se,s,se,se,s,se,s,se,n,s,se,s,s,s,se,se,se,se,se,n,se,se,se,se,ne,s,sw,se,se,se,n,se,se,se,s,se,se,se,se,n,ne,se,se,se,se,se,se,se,se,se,se,s,sw,se,se,se,se,se,se,se,se,s,se,se,se,se,se,s,se,se,se,se,se,se,se,se,se,nw,s,se,s,se,se,se,se,se,s,s,ne,se,se,se,ne,se,se,se,se,se,se,s,se,se,se,se,se,se,se,se,se,s,se,se,se,s,s,s,s,se,ne,sw,se,se,se,se,se,s,ne,se,se,se,se,s,sw,se,se,sw,se,s,sw,se,nw,se,se,s,se,se,nw,s,s,se,s,se,se,se,nw,se,ne,se,se,n,se,se,se,se,n,ne,se,se,sw,se,sw,se,se,se,se,se,se,se,n,nw,se,s,sw,n,ne,se,se,se,se,n,sw,se,se,se,se,se,n,se,nw,se,nw,sw,se,n,se,ne,se,se,se,se,se,se,sw,n,se,se,nw,se,se,s,se,se,se,se,ne,se,se,s,se,se,se,se,se,nw,n,se,se,se,s,se,se,nw,ne,nw,se,se,se,se,se,se,se,se,se,se,se,se,s,ne,ne,se,se,nw,se,se,se,se,se,se,nw,se,sw,se,sw,se,se,nw,se,se,se,se,ne,se,se,se,se,se,nw,nw,se,se,se,se,se,se,se,se,se,se,nw,se,se,se,se,se,se,nw,se,se,se,se,se,se,nw,se,se,se,se,se,se,se,se,se,se,s,se,se,se,ne,s,sw,s,se,ne,se,ne,se,se,se,se,ne,se,se,nw,se,se,se,se,se,se,se,se,n,s,se,nw,se,se,n,nw,sw,s,se,se,se,sw,se,se,ne,se,s,nw,se,se,n,se,se,sw,ne,se,se,se,ne,se,se,se,se,se,nw,se,se,s,se,ne,se,se,se,nw,sw,se,n,se,ne,s,ne,nw,n,ne,se,ne,se,ne,se,se,ne,se,sw,se,se,n,s,se,nw,ne,se,se,ne,se,ne,se,se,nw,se,se,s,ne,ne,se,se,se,se,se,se,se,se,se,ne,se,se,ne,se,se,se,nw,nw,se,se,se,n,se,se,s,ne,se,se,se,s,se,ne,se,ne,se,se,se,se,ne,se,n,se,se,se,ne,n,se,se,s,se,se,nw,se,se,sw,se,se,ne,se,se,se,se,se,se,s,ne,sw,ne,se,se,se,se,nw,se,se,ne,se,s,se,se,se,ne,ne,nw,se,se,se,s,sw,se,ne,sw,se,n,ne,se,sw,se,ne,se,se,ne,se,s,se,ne,se,se,se,ne,sw,ne,se,se,se,ne,ne,ne,ne,se,se,se,se,se,se,sw,se,ne,se,sw,ne,se,se,se,se,se,se,ne,se,sw,se,ne,n,ne,se,se,se,ne,se,se,se,ne,se,n,ne,nw,se,se,ne,ne,ne,ne,nw,se,ne,se,nw,se,se,se,ne,se,se,se,se,ne,ne,ne,nw,se,se,sw,se,ne,se,nw,n,s,s,se,ne,ne,sw,ne,se,ne,ne,ne,sw,se,se,se,nw,nw,ne,se,se,s,se,ne,sw,se,se,se,se,ne,se,ne,se,ne,se,se,se,se,ne,se,ne,se,se,ne,ne,se,n,sw,se,sw,se,sw,ne,ne,se,nw,se,sw,ne,se,nw,ne,se,ne,se,se,se,se,se,ne,ne,ne,ne,se,ne,nw,se,sw,se,nw,ne,se,se,ne,se,se,ne,se,se,se,nw,ne,ne,se,ne,se,sw,se,se,nw,ne,ne,ne,n,n,nw,nw,se,ne,ne,se,n,ne,se,ne,se,n,se,se,se,ne,ne,se,se,nw,se,se,se,se,se,ne,ne,se,n,se,ne,se,ne,nw,se,se,se,n,ne,ne,se,se,se,se,se,ne,n,ne,ne,ne,n,se,se,se,se,se,ne,ne,se,ne,se,ne,nw,se,se,ne,ne,ne,ne,ne,se,se,ne,se,ne,ne,ne,ne,sw,ne,se,ne,se,nw,ne,ne,se,ne,ne,se,se,ne,se,sw,ne,ne,se,ne,se,s,ne,ne,se,ne,ne,sw,se,se,s,nw,se,n,s,s,ne,se,se,ne,se,se,ne,s,se,se,se,nw,ne,se,ne,se,ne,ne,se,se,se,se,ne,sw,ne,se,s,ne,ne,ne,ne,n,se,sw,s,se,ne,se,se,ne,ne,se,se,nw,ne,ne,ne,sw,se,ne,ne,ne,ne,se,se,se,se,ne,se,se,se,se,sw,s,se,ne,ne,ne,ne,ne,se,ne,ne,ne,se,ne,ne,sw,nw,nw,n,ne,se,se,s,se,s,n,ne,se,se,se,ne,se,ne,sw,nw,nw,ne,ne,se,ne,ne,ne,ne,ne,se,ne,n,ne,se,se,se,se,se,ne,ne,se,se,ne,n,n,ne,se,ne,se,nw,se,ne,se,ne,ne,se,ne,se,ne,se,se,nw,se,nw,ne,ne,ne,ne,s,s,ne,ne,se,ne,se,ne,ne,n,sw,ne,ne,s,nw,ne,ne,se,ne,nw,ne,se,s,se,ne,sw,ne,sw,se,ne,n,nw,ne,nw,ne,se,n,se,ne,se,ne,ne,se,ne,se,ne,n,se,se,ne,ne,sw,se,ne,ne,ne,ne,ne,ne,nw,ne,se,se,se,ne,se,ne,s,se,se,ne,sw,se,s,ne,n,ne,se,ne,se,se,ne,ne,ne,nw,sw,se,ne,se,ne,ne,se,n,s,ne,n,ne,ne,se,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,s,nw,ne,ne,ne,ne,n,ne,ne,ne,se,ne,ne,sw,ne,ne,se,se,se,ne,ne,nw,ne,ne,ne,se,n,se,sw,ne,se,se,ne,nw,n,se,ne,s,ne,n,ne,ne,se,ne,ne,se,ne,ne,ne,n,ne,n,sw,sw,ne,n,se,ne,se,n,s,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,nw,ne,nw,se,ne,sw,ne,ne,ne,ne,n,ne,n,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,n,se,ne,ne,ne,sw,ne,ne,se,ne,ne,se,n,ne,ne,s,se,nw,ne,ne,ne,s,se,sw,ne,ne,ne,ne,n,s,se,se,ne,ne,ne,ne,ne,ne,s,sw,sw,ne,ne,ne,ne,ne,sw,ne,n,ne,ne,sw,ne,n,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,se,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,se,sw,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,nw,ne,ne,ne,n,ne,nw,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,n,sw,s,nw,nw,sw,s,nw,ne,ne,sw,ne,ne,se,ne,ne,ne,s,ne,sw,nw,ne,ne,s,ne,ne,ne,ne,se,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,se,ne,sw,se,ne,ne,nw,ne,ne,s,ne,ne,ne,nw,ne,nw,ne,ne,n,ne,ne,ne,ne,s,ne,ne,ne,se,n,ne,ne,ne,ne,s,se,ne,nw,ne,se,n,nw,ne,ne,ne,ne,ne,ne,n,ne,se,ne,ne,n,ne,ne,ne,ne,s,ne,ne,ne,n,n,ne,n,ne,ne,ne,ne,ne,n,nw,ne,ne,ne,se,ne,ne,ne,s,se,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,sw,ne,ne,ne,nw,nw,ne,ne,nw,ne,ne,ne,n,ne,ne,ne,n,ne,ne,ne,ne,se,se,n,ne,ne,ne,n,ne,ne,ne,s,se,ne,ne,ne,n,ne,ne,ne,nw,ne,ne,ne,nw,ne,ne,ne,ne,ne,se,ne,ne,ne,n,ne,ne,nw,ne,ne,ne,n,ne,nw,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,ne,se,ne,se,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,n,n,se,ne,n,ne,ne,n,ne,ne,ne,nw,ne,ne,ne,n,ne,s,ne,n,n,ne,ne,ne,ne,n,ne,sw,ne,ne,ne,nw,ne,ne,ne,se,s,nw,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,n,nw,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,n,ne,ne,ne,ne,nw,n,ne,ne,ne,n,n,n,se,ne,sw,ne,nw,ne,ne,ne,n,ne,ne,ne,ne,sw,n,ne,ne,se,ne,nw,s,ne,ne,ne,s,n,ne,ne,ne,ne,se,ne,ne,sw,ne,ne,n,ne,ne,ne,ne,ne,n,n,nw,n,ne,ne,n,s,sw,n,ne,ne,ne,n,n,ne,ne,ne,sw,ne,ne,ne,nw,ne,ne,n,ne,ne,n,se,ne,ne,n,se,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,n,ne,ne,nw,s,n,n,n,ne,n,n,ne,n,ne,n,ne,ne,ne,nw,s,ne,ne,ne,ne,ne,se,nw,ne,ne,s,se,n,n,ne,ne,ne,ne,n,ne,ne,ne,n,n,ne,ne,ne,nw,ne,ne,ne,n,ne,n,ne,sw,ne,ne,n,ne,ne,ne,n,n,n,n,n,sw,ne,nw,n,se,s,ne,ne,ne,s,ne,sw,n,ne,se,ne,ne,ne,ne,ne,se,n,n,ne,ne,n,n,n,ne,ne,n,n,ne,s,ne,ne,se,ne,se,n,sw,ne,ne,ne,s,ne,ne,sw,nw,ne,se,n,ne,n,ne,n,n,ne,n,s,ne,n,s,ne,ne,ne,n,n,ne,n,sw,sw,ne,n,ne,ne,sw,n,n,n,ne,ne,se,ne,ne,n,ne,ne,ne,sw,ne,nw,sw,ne,s,ne,ne,ne,s,ne,sw,ne,n,ne,n,n,ne,nw,ne,s,n,n,ne,nw,ne,n,ne,ne,ne,ne,ne,se,nw,ne,sw,ne,ne,ne,sw,n,n,ne,ne,ne,ne,ne,nw,ne,ne,nw,ne,sw,ne,ne,sw,ne,ne,ne,n,ne,se,ne,n,n,se,n,s,n,n,ne,ne,ne,ne,ne,ne,ne,n,n,ne,ne,se,ne,ne,n,ne,nw,ne,n,se,nw,ne,ne,n,ne,n,nw,ne,ne,n,ne,n,n,ne,n,n,n,ne,ne,ne,ne,ne,n,n,nw,ne,ne,ne,nw,ne,ne,ne,ne,n,sw,ne,ne,n,n,ne,n,se,n,ne,n,n,nw,ne,ne,n,sw,ne,ne,ne,sw,ne,ne,n,s,n,nw,ne,s,ne,n,n,n,ne,s,ne,s,ne,sw,ne,se,ne,n,ne,n,n,n,ne,n,ne,n,ne,ne,ne,se,ne,ne,n,n,n,ne,n,n,ne,ne,ne,ne,sw,ne,ne,n,n,ne,n,n,n,ne,ne,ne,nw,sw,sw,n,ne,ne,n,ne,n,ne,sw,ne,n,n,se,n,n,ne,ne,sw,n,n,n,s,ne,n,ne,sw,ne,n,ne,ne,ne,ne,ne,ne,ne,n,n,n,se,ne,nw,n,ne,n,ne,sw,nw,n,se,ne,ne,n,n,s,n,n,n,ne,sw,ne,ne,se,n,n,ne,n,ne,n,ne,ne,ne,n,nw,n,n,n,nw,n,n,n,n,nw,ne,n,s,sw,ne,n,n,ne,n,nw,n,ne,s,sw,n,n,se,n,n,n,se,n,se,ne,se,n,n,n,n,s,ne,n,n,n,ne,ne,nw,n,n,sw,ne,n,n,n,n,ne,n,n,n,ne,ne,ne,n,ne,sw,ne,n,n,ne,n,n,n,ne,s,nw,n,ne,nw,n,n,ne,s,n,ne,ne,ne,ne,ne,n,ne,n,n,nw,ne,n,n,ne,n,n,n,se,sw,n,ne,s,n,n,ne,s,ne,n,n,sw,n,n,n,n,se,n,n,n,ne,n,n,se,ne,ne,sw,n,ne,n,n,ne,n,ne,n,s,s,n,s,n,n,n,n,ne,n,n,sw,nw,n,n,sw,ne,n,s,n,n,n,n,nw,n,n,ne,ne,ne,sw,ne,nw,n,ne,n,ne,n,n,n,nw,ne,nw,n,ne,sw,n,sw,s,ne,n,n,n,ne,n,s,n,n,n,n,ne,n,n,ne,se,se,n,ne,n,n,ne,n,ne,ne,ne,s,n,n,ne,ne,n,n,sw,ne,n,n,n,n,n,ne,ne,n,n,ne,n,n,n,n,ne,n,ne,n,n,ne,nw,n,sw,sw,nw,n,se,sw,ne,n,ne,n,ne,ne,s,n,ne,s,ne,s,ne,n,n,n,n,ne,n,ne,nw,n,n,n,n,n,ne,n,ne,ne,nw,sw,s,se,n,n,s,n,n,n,n,ne,n,ne,n,n,sw,ne,ne,n,n,n,ne,ne,n,n,n,n,nw,n,ne,s,n,ne,ne,n,sw,se,n,ne,ne,ne,s,ne,n,n,ne,n,nw,nw,ne,n,n,nw,n,n,ne,s,n,nw,n,n,n,nw,n,n,sw,n,n,n,s,n,n,n,n,ne,se,n,n,n,ne,nw,n,n,n,ne,n,ne,n,n,n,n,n,n,n,n,n,n,ne,n,n,ne,ne,n,n,s,n,s,n,n,n,nw,ne,n,n,ne,n,n,ne,n,n,n,ne,n,n,n,n,n,n,n,ne,n,nw,n,ne,n,ne,n,n,n,n,sw,ne,ne,ne,n,s,ne,ne,n,ne,n,n,n,n,n,n,n,n,s,n,ne,s,n,n,ne,ne,ne,ne,nw,s,n,n,n,ne,sw,n,n,s,n,n,n,n,ne,n,n,s,ne,n,n,n,se,nw,ne,ne,ne,n,ne,n,ne,n,n,n,se,n,s,n,ne,se,n,ne,n,ne,n,n,ne,n,nw,ne,n,ne,nw,n,n,s,sw,se,n,n,n,ne,nw,n,n,n,n,se,n,ne,ne,n,nw,n,n,nw,n,ne,n,n,n,ne,sw,n,n,se,n,n,sw,ne,nw,n,n,n,n,n,n,ne,n,n,n,n,ne,ne,ne,s,n,n,ne,sw,n,n,n,se,n,ne,sw,sw,sw,n,n,n,sw,n,ne,n,sw,n,ne,n,se,ne,n,n,n,n,n,n,n,n,s,n,n,sw,ne,n,n,n,se,se,n,n,n,s,n,n,n,sw,n,n,n,nw,sw,n,n,n,nw,n,ne,ne,n,se,n,n,n,n,se,ne,sw,n,n,sw,n,sw,n,s,ne,n,n,s,se,n,n,se,n,n,n,ne,sw,n,nw,n,ne,n,n,n,n,se,n,s,n,n,n,se,n,n,n,nw,n,n,n,n,n,n,nw,n,n,n,n,sw,s,s,n,n,n,se,ne,n,n,ne,ne,ne,n,n,n,n,n,sw,n,ne,n,n,n,n,n,se,n,n,n,nw,se,n,nw,n,ne,n,n,n,s,n,n,n,n,n,n,n,n,n,n,ne,n,ne,n,n,n,ne,n,n,n,s,n,n,n,n,n,n,n,n,n,n,n,n,n,ne,s,n,n,n,ne,n,n,n,sw,n,ne,s,n,n,n,n,sw,n,n,n,n,n,se,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,se,sw,n,n,ne,se,s,se,s,s,s,s,s,sw,sw,sw,nw,nw,sw,nw,se,ne,nw,nw,sw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,se,n,ne,n,n,sw,ne,n,n,n,sw,n,ne,s,n,ne,ne,ne,ne,n,ne,n,n,se,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,sw,ne,ne,se,ne,ne,ne,ne,ne,se,ne,se,se,se,ne,ne,ne,se,ne,se,ne,se,ne,se,se,n,se,se,n,se,se,nw,se,se,se,se,se,s,se,se,se,s,se,se,se,se,s,s,nw,s,se,s,se,se,s,s,se,sw,s,se,nw,s,s,ne,n,sw,se,s,se,s,se,s,s,s,s,s,ne,s,s,sw,s,s,s,s,s,s,n,s,s,s,sw,s,s,s,sw,sw,nw,sw,s,sw,n,s,s,s,s,sw,sw,s,n,s,sw,ne,sw,sw,s,s,sw,s,s,s,s,s,ne,nw,sw,sw,s,s,sw,sw,sw,sw,sw,sw,n,sw,s,sw,sw,sw,s,se,n,sw,s,s,n,sw,sw,sw,sw,sw,sw,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,nw,sw,sw,sw,sw,se,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,ne,s,sw,nw,nw,sw,sw,sw,nw,n,sw,sw,nw,nw,se,sw,sw,sw,nw,sw,sw,sw,sw,n,sw,nw,nw,sw,ne,sw,nw,sw,nw,sw,sw,nw,s,nw,n,nw,nw,nw,nw,nw,nw,sw,s,n,se,nw,nw,nw,nw,ne,nw,n,nw,nw,sw,n,ne,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,s,nw,nw,sw,n,se,sw,sw,ne,nw,nw,nw,nw,ne,nw,nw,nw,sw,nw,ne,nw,nw,nw,ne,nw,ne,n,n,nw,ne,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,n,nw,s,se,nw,nw,nw,nw,n,n,sw,n,nw,nw,nw,nw,n,nw,n,sw,nw,nw,n,nw,se,nw,nw,n,n,n,n,nw,n,sw,n,n,nw,sw,sw,nw,nw,s,nw,nw,nw,sw,n,n,nw,nw,n,n,n,s,nw,se,n,n,n,nw,nw,nw,n,n,n,n,nw,n,ne,n,n,sw,se,n,nw,s,s,n,se,n,s,n,ne,nw,n,n,n,ne,n,n,nw,nw,ne,n,nw,nw,se,n,n,nw,n,n,n,n,n,ne,n,n,n,n,se,n,n,n,n,ne,n,sw,n,n,n,n,n,ne,n,se,n,n,n,nw,n,ne,n,n,ne,n,nw,n,s,n,n,ne,n,n,n,n,ne,s,n,n,se,n,n,se,n,n,sw,ne,s,n,nw,s,n,ne,nw,n,n,ne,n,n,n,se,n,n,n,n,s,se,n,n,ne,s,se,ne,n,ne,ne,n,ne,ne,ne,ne,ne,se,ne,n,n,ne,ne,ne,ne,n,sw,n,n,sw,ne,ne,ne,nw,nw,ne,ne,se,sw,n,n,ne,n,n,ne,n,n,ne,n,n,ne,n,ne,n,nw,ne,se,ne,sw,se,s,n,n,ne,ne,n,ne,nw,n,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,se,sw,ne,se,ne,ne,n,ne,ne,ne,s,ne,ne,ne,ne,ne,n,se,ne,n,ne,ne,sw,se,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,s,ne,ne,sw,nw,n,ne,ne,ne,n,s,n,se,ne,ne,sw,se,ne,ne,ne,s,ne,se,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,sw,ne,ne,ne,sw,ne,se,ne,ne,ne,nw,ne,ne,se,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,se,se,ne,ne,ne,sw,ne,n,ne,ne,ne,ne,s,nw,ne,ne,ne,ne,ne,ne,ne,se,ne,se,ne,ne,ne,se,se,ne,ne,sw,ne,ne,s,se,ne,n,ne,s,s,ne,s,nw,se,ne,ne,sw,ne,ne,se,ne,ne,ne,ne,se,ne,ne,sw,se,ne,ne,ne,n,sw,ne,ne,se,se,se,se,s,nw,se,ne,se,nw,se,ne,ne,se,ne,ne,ne,ne,sw,ne,ne,n,ne,se,sw,ne,ne,se,se,se,nw,ne,ne,ne,ne,se,se,sw,ne,se,se,se,ne,se,nw,ne,ne,ne,ne,nw,ne,se,se,ne,se,se,se,n,ne,ne,se,n,se,ne,se,se,se,se,se,se,ne,s,se,ne,se,se,ne,sw,ne,se,n,ne,se,ne,se,se,ne,se,ne,ne,se,nw,se,se,se,ne,se,ne,se,se,se,ne,se,se,ne,se,se,sw,se,se,ne,se,se,se,se,se,se,se,nw,s,ne,ne,ne,se,sw,se,se,ne,se,n,se,se,se,se,se,se,s,se,se,se,se,ne,s,se,se,ne,se,se,se,sw,se,se,n,ne,ne,se,ne,n,se,se,ne,s,se,se,nw,se,n,se,ne,se,se,ne,sw,se,se,se,nw,se,se,ne,ne,se,nw,se,se,se,se,se,se,se,se,se,se,se,se,se,n,sw,se,se,se,n,se,se,se,sw,se,sw,se,s,nw,se,se,se,se,sw,se,se,se,se,se,se,se,ne,se,se,se,se,nw,n,sw,se,ne,se,se,se,sw,se,se,se,sw,n,se,se,sw,se,se,s,se,se,se,s,se,se,ne,s,se,se,se,se,s,se,s,se,se,s,se,ne,se,se,se,se,se,ne,se,se,se,ne,s,se,s,ne,n,nw,se,sw,se,se,s,se,se,s,se,s,nw,s,s,s,ne,s,se,se,se,n,s,s,se,se,se,ne,sw,se,se,se,se,se,s,s,s,se,se,ne,se,ne,se,nw,se,se,se,ne,s,se,se,se,nw,se,se,s,se,s,s,s,nw,ne,se,s,se,s,sw,nw,se,s,ne,se,n,se,s,se,ne,se,s,s,se,s,se,s,s,ne,se,se,se,se,s,ne,se,s,se,s,s,s,s,se,se,se,s,s,s,se,se,sw,s,se,se,s,se,se,s,sw,sw,s,s,nw,s,s,ne,s,ne,s,s,n,se,s,s,sw,s,n,n,s,s,ne,se,s,s,s,ne,s,s,se,s,sw,se,n,se,s,ne,n,s,s,se,s,sw,s,nw,se,n,n,s,s,s,s,n,s,s,sw,s,se,s,se,s,se,se,s,s,sw,s,se,s,ne,s,s,s,s,s,sw,nw,s,s,nw,s,s,s,se,s,se,s,n,se,s,s,se,s,ne,s,n,s,s,s,s,se,s,n,s,s,s,s,s,s,s,s,s,nw,s,se,nw,se,sw,se,se,s,se,s,s,s,s,s,ne,nw,n,s,s,s,n,s,s,nw,s,s,s,s,s,s,s,n,se,ne,s,se,s,s,se,s,s,ne,s,s,s,s,s,s,sw,nw,se,se,s,s,s,s,sw,s,s,s,nw,se,s,se,sw,s,s,s,nw,sw,s,ne,s,s,s,nw,s,s,s,s,s,s,s,s,s,s,s,s,s,ne,s,s,s,s,ne,s,n,se,s,s,s,s,s,n,s,nw,s,s,s,sw,s,s,s,s,s,sw,s,s,s,sw,s,s,s,ne,sw,s,s,ne,s,ne,s,s,s,s,s,s,s,s,nw,ne,nw,s,se,s,s,sw,s,n,s,sw,s,sw,s,se,sw,sw,sw,s,s,s,nw,sw,s,s,s,ne,s,se,s,sw,sw,s,sw,s,sw,s,s,s,s,s,s,sw,se,s,s,sw,sw,s,s,s,s,sw,s,s,se,nw,sw,s,nw,s,s,s,sw,se,s,s,sw,sw,n,sw,s,sw,s,s,sw,s,s,s,sw,se,s,s,s,s,se,s,s,s,s,s,s,s,s,s,s,ne,s,s,s,s,s,nw,sw,s,s,sw,sw,s,nw,s,s,s,sw,se,nw,ne,s,n,s,se,s,s,s,s,nw,s,s,s,ne,s,sw,s,s,ne,sw,s,ne,sw,nw,sw,s,s,s,s,s,sw,s,sw,sw,nw,s,n,s,sw,s,s,sw,s,n,sw,sw,s,s,s,s,s,nw,nw,s,sw,s,nw,sw,nw,s,s,sw,sw,sw,nw,s,nw,n,sw,sw,sw,sw,n,sw,s,sw,sw,sw,s,sw,sw,sw,s,s,ne,ne,sw,sw,s,se,s,s,nw,s,n,s,s,s,n,s,s,s,s,se,ne,se,nw,ne,sw,sw,s,n,n,s,s,s,ne,s,sw,sw,sw,sw,s,sw,s,sw,sw,s,sw,sw,nw,s,sw,sw,s,nw,sw,s,n,s,s,s,se,sw,s,s,s,s,s,s,sw,sw,sw,sw,nw,sw,sw,ne,nw,nw,n,s,sw,sw,sw,ne,s,s,sw,s,s,sw,sw,se,sw,sw,sw,n,n,s,sw,se,s,sw,ne,sw,se,s,sw,sw,s,s,s,sw,s,sw,s,sw,s,s,s,s,sw,sw,s,sw,s,sw,sw,sw,s,s,sw,s,s,sw,s,sw,ne,s,sw,s,sw,sw,s,s,sw,sw,n,n,s,sw,s,sw,s,s,sw,sw,s,s,sw,sw,sw,sw,sw,n,s,sw,sw,sw,sw,s,sw,se,sw,s,s,n,s,s,sw,sw,ne,sw,se,sw,sw,s,s,sw,sw,s,sw,s,sw,sw,nw,sw,s,nw,n,sw,n,se,sw,sw,sw,se,ne,sw,sw,sw,sw,n,sw,sw,sw,sw,n,sw,sw,sw,s,sw,se,sw,nw,sw,sw,se,sw,sw,sw,s,sw,sw,sw,sw,ne,se,sw,s,sw,s,s,nw,sw,n,se,s,s,sw,sw,s,s,sw,sw,sw,nw,sw,sw,sw,s,n,se,sw,sw,sw,sw,n,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,s,sw,sw,sw,sw,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,n,sw,n,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,n,sw,sw,sw,sw,sw,sw,sw,sw,se,s,sw,ne,sw,ne,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,n,nw,s,sw,sw,sw,sw,sw,n,n,sw,sw,sw,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,s,sw,sw,ne,sw,nw,sw,sw,sw,sw,sw,s,s,sw,nw,sw,sw,sw,se,sw,s,sw,s,se,sw,sw,s,sw,ne,sw,sw,sw,sw,nw,sw,n,sw,sw,s,nw,nw,nw,sw,se,nw,ne,sw,sw,sw,n,sw,se,sw,sw,sw,sw,sw,sw,se,nw,sw,nw,nw,sw,sw,n,sw,sw,s,nw,sw,sw,sw,nw,sw,s,sw,s,sw,sw,sw,se,sw,sw,se,se,sw,sw,nw,sw,nw,sw,sw,sw,nw,n,ne,sw,nw,ne,sw,ne,sw,nw,ne,sw,sw,ne,nw,sw,nw,ne,sw,sw,sw,sw,s,sw,n,nw,nw,nw,nw,nw,nw,s,s,sw,nw,sw,sw,sw,nw,sw,nw,sw,nw,sw,nw,sw,sw,nw,nw,nw,sw,nw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,se,sw,sw,sw,n,s,ne,sw,nw,nw,sw,sw,ne,sw,sw,nw,nw,sw,nw,nw,sw,se,sw,s,sw,n,sw,sw,nw,ne,sw,sw,se,nw,sw,sw,nw,nw,sw,sw,nw,nw,sw,sw,nw,ne,sw,sw,ne,sw,sw,nw,ne,nw,sw,sw,nw,sw,s,ne,nw,nw,n,sw,nw,nw,sw,nw,sw,sw,ne,sw,sw,sw,sw,se,sw,nw,sw,sw,nw,nw,sw,sw,nw,n,sw,n,nw,nw,nw,nw,s,se,nw,sw,nw,sw,sw,nw,sw,nw,sw,n,nw,sw,nw,sw,sw,sw,sw,nw,n,sw,sw,sw,nw,sw,sw,s,nw,nw,nw,nw,sw,nw,sw,sw,nw,sw,nw,sw,nw,nw,nw,sw,sw,s,ne,sw,nw,sw,nw,n,nw,sw,nw,nw,nw,nw,nw,ne,n,sw,nw,se,sw,sw,nw,sw,nw,sw,sw,sw,sw,sw,nw,n,s,ne,ne,sw,sw,sw,nw,nw,sw,se,sw,nw,ne,nw,sw,s,nw,nw,sw,ne,nw,se,ne,sw,s,sw,nw,nw,s,nw,sw,sw,sw,sw,nw,nw,nw,nw,sw,sw,s,sw,nw,sw,ne,nw,sw,se,sw,nw,ne,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,sw,se,nw,ne,nw,nw,n,sw,sw,sw,se,sw,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,ne,ne,nw,ne,sw,sw,nw,n,se,sw,nw,nw,sw,sw,nw,nw,nw,sw,nw,nw,se,n,sw,sw,sw,sw,s,nw,sw,nw,n,sw,sw,sw,sw,n,sw,nw,se,nw,s,sw,nw,nw,nw,nw,s,nw,sw,sw,nw,sw,n,s,nw,s,nw,sw,s,nw,sw,s,n,nw,sw,nw,nw,nw,nw,s,sw,nw,nw,nw,sw,sw,ne,se,sw,sw,nw,nw,nw,nw,sw,sw,sw,nw,sw,n,nw,nw,nw,nw,sw,nw,nw,s,nw,nw,sw,sw,nw,nw,sw,nw,nw,nw,nw,nw,nw,se,nw,nw,s,nw,nw,s,nw,n,nw,nw,nw,n,n,nw,nw,nw,nw,nw,nw,nw,n,ne,nw,nw,nw,sw,nw,se,sw,nw,sw,nw,sw,n,nw,nw,sw,nw,nw,s,nw,nw,sw,sw,nw,nw,nw,nw,nw,s,sw,nw,se,nw,nw,nw,ne,se,nw,s,nw,sw,nw,sw,ne,nw,nw,sw,nw,sw,n,nw,nw,nw,s,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,s,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,se,sw,se,nw,nw,se,se,nw,n,nw,nw,se,nw,nw,n,nw,s,nw,nw,nw,sw,nw,nw,nw,nw,sw,nw,nw,nw,ne,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,s,s,nw,nw,nw,nw,nw,nw,nw,nw,s,nw,ne,nw,nw,nw,se,nw,nw,ne,nw,nw,se,nw,se,nw,n,n,nw,ne,sw,nw,nw,nw,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,nw,nw diff --git a/data/advent2017/input12.txt b/data/advent2017/input12.txt new file mode 100644 index 0000000..990a764 --- /dev/null +++ b/data/advent2017/input12.txt @@ -0,0 +1,2000 @@ +0 <-> 659, 737 +1 <-> 1, 1433 +2 <-> 982, 1869 +3 <-> 306, 380, 1462, 1827 +4 <-> 1076 +5 <-> 794, 1451 +6 <-> 146, 1055 +7 <-> 834, 1557 +8 <-> 1333 +9 <-> 849, 906, 1863 +10 <-> 362, 505 +11 <-> 33, 938, 1896 +12 <-> 490, 913 +13 <-> 189, 690 +14 <-> 796 +15 <-> 56, 280, 1288, 1721 +16 <-> 16 +17 <-> 904 +18 <-> 150, 1394, 1458 +19 <-> 1773 +20 <-> 70 +21 <-> 993 +22 <-> 22 +23 <-> 285, 1004 +24 <-> 209, 727 +25 <-> 614, 1590 +26 <-> 113 +27 <-> 1321, 1341 +28 <-> 351, 730, 1037 +29 <-> 29, 1828 +30 <-> 1378, 1983 +31 <-> 705, 1035 +32 <-> 1042, 1519 +33 <-> 11, 886 +34 <-> 360, 1101, 1531, 1877 +35 <-> 971, 1652 +36 <-> 188 +37 <-> 1935 +38 <-> 38 +39 <-> 39, 1472 +40 <-> 84, 1110 +41 <-> 483, 895, 1035, 1864, 1919 +42 <-> 624, 813, 1484, 1517 +43 <-> 492 +44 <-> 947, 1572 +45 <-> 45, 1589, 1748, 1836 +46 <-> 1821 +47 <-> 123, 206, 239 +48 <-> 146 +49 <-> 235, 871 +50 <-> 172, 1672 +51 <-> 504 +52 <-> 585, 678, 878 +53 <-> 484, 543, 1282 +54 <-> 374, 723 +55 <-> 1956 +56 <-> 15 +57 <-> 583, 1159, 1596 +58 <-> 313, 580, 1101 +59 <-> 1529, 1788 +60 <-> 60 +61 <-> 1033, 1857 +62 <-> 874 +63 <-> 63, 1007, 1316, 1673 +64 <-> 1140 +65 <-> 1136 +66 <-> 1337, 1546 +67 <-> 67, 1468 +68 <-> 298, 951 +69 <-> 906 +70 <-> 20, 1977 +71 <-> 1956 +72 <-> 146, 1465 +73 <-> 911 +74 <-> 1345 +75 <-> 711 +76 <-> 732, 789, 1499, 1637 +77 <-> 1897 +78 <-> 78, 379 +79 <-> 96, 462, 847 +80 <-> 886, 907 +81 <-> 1564 +82 <-> 1362, 1680 +83 <-> 225, 916 +84 <-> 40, 1460 +85 <-> 330 +86 <-> 1370 +87 <-> 87, 640 +88 <-> 806, 1411 +89 <-> 1732 +90 <-> 603 +91 <-> 547, 904 +92 <-> 1106 +93 <-> 782 +94 <-> 401, 1039, 1148, 1356 +95 <-> 95, 344, 1092 +96 <-> 79 +97 <-> 1555, 1649 +98 <-> 133 +99 <-> 866 +100 <-> 116, 1183, 1450 +101 <-> 964 +102 <-> 521, 843 +103 <-> 1002 +104 <-> 675, 1752, 1760 +105 <-> 447 +106 <-> 625 +107 <-> 200, 923, 1573 +108 <-> 108, 1535 +109 <-> 1938, 1984 +110 <-> 992 +111 <-> 410, 436, 1789, 1985 +112 <-> 730, 1742 +113 <-> 26, 774, 1620 +114 <-> 891 +115 <-> 556, 980, 1502 +116 <-> 100, 405, 438 +117 <-> 1220, 1747 +118 <-> 417 +119 <-> 1671 +120 <-> 225 +121 <-> 215, 1414 +122 <-> 1421 +123 <-> 47, 488, 1390 +124 <-> 1750 +125 <-> 1020, 1456, 1645, 1811 +126 <-> 945, 988, 1558 +127 <-> 1562 +128 <-> 246, 419, 878, 1057 +129 <-> 198, 214, 526 +130 <-> 1572 +131 <-> 624 +132 <-> 1086 +133 <-> 98, 430, 1950 +134 <-> 1179 +135 <-> 1603 +136 <-> 136 +137 <-> 137, 248 +138 <-> 604 +139 <-> 1080, 1744, 1829 +140 <-> 786, 890, 1336 +141 <-> 819, 835 +142 <-> 142, 1657 +143 <-> 590, 670 +144 <-> 622 +145 <-> 182, 930, 1164, 1741 +146 <-> 6, 48, 72, 152 +147 <-> 1880 +148 <-> 1486 +149 <-> 1595 +150 <-> 18, 653 +151 <-> 1834 +152 <-> 146, 289, 1949 +153 <-> 1379 +154 <-> 694, 1025 +155 <-> 1143, 1469 +156 <-> 437, 1492, 1616 +157 <-> 1044 +158 <-> 410, 1391 +159 <-> 1327 +160 <-> 387, 892, 963, 1287 +161 <-> 964, 1017 +162 <-> 786, 1098, 1351, 1445, 1508 +163 <-> 415 +164 <-> 255, 790, 1410 +165 <-> 252, 425, 1186, 1662, 1838 +166 <-> 791, 1012 +167 <-> 167, 836, 1922 +168 <-> 1586, 1998 +169 <-> 679, 914 +170 <-> 1975 +171 <-> 672 +172 <-> 50 +173 <-> 614 +174 <-> 723 +175 <-> 246, 747 +176 <-> 400, 1338 +177 <-> 573, 1617, 1724 +178 <-> 473, 1572 +179 <-> 183 +180 <-> 200, 1380 +181 <-> 1394, 1657 +182 <-> 145, 1825 +183 <-> 179, 399, 955, 1236, 1295, 1840 +184 <-> 712 +185 <-> 185 +186 <-> 551, 1627 +187 <-> 1195 +188 <-> 36, 440, 1277, 1362 +189 <-> 13 +190 <-> 1111 +191 <-> 985, 1372 +192 <-> 496, 1137, 1283 +193 <-> 827, 1053 +194 <-> 610 +195 <-> 1231, 1497 +196 <-> 1960 +197 <-> 584, 1359 +198 <-> 129, 651, 714, 1663 +199 <-> 1047, 1805 +200 <-> 107, 180, 658, 1397 +201 <-> 1590 +202 <-> 1268, 1768 +203 <-> 1683 +204 <-> 567, 1848 +205 <-> 276 +206 <-> 47, 461, 1794 +207 <-> 207 +208 <-> 1248 +209 <-> 24, 1589 +210 <-> 1063, 1504 +211 <-> 907, 1815 +212 <-> 1948 +213 <-> 388 +214 <-> 129, 561, 793, 1569 +215 <-> 121, 252 +216 <-> 216, 1728 +217 <-> 761 +218 <-> 631, 816 +219 <-> 459, 807, 1008 +220 <-> 1231, 1447 +221 <-> 713, 1541 +222 <-> 856, 924, 1924 +223 <-> 1103 +224 <-> 1426, 1761 +225 <-> 83, 120, 242, 784 +226 <-> 311, 560 +227 <-> 587, 667, 984, 1091 +228 <-> 1852 +229 <-> 229, 1198, 1204 +230 <-> 1505, 1944 +231 <-> 1158, 1594, 1925 +232 <-> 232, 345, 1417 +233 <-> 828, 1677 +234 <-> 982 +235 <-> 49, 1012, 1254, 1956 +236 <-> 489, 893, 1545 +237 <-> 988, 1450 +238 <-> 1719, 1791 +239 <-> 47, 736, 1027 +240 <-> 1167, 1457 +241 <-> 270 +242 <-> 225, 814, 1873 +243 <-> 243, 282, 914 +244 <-> 302, 328, 559 +245 <-> 1753 +246 <-> 128, 175 +247 <-> 1230, 1660, 1824 +248 <-> 137, 537, 1423 +249 <-> 1209, 1391, 1749 +250 <-> 298 +251 <-> 799 +252 <-> 165, 215 +253 <-> 1437, 1741 +254 <-> 1356 +255 <-> 164 +256 <-> 310 +257 <-> 1267, 1821 +258 <-> 1177, 1876 +259 <-> 1257, 1432 +260 <-> 311, 1115 +261 <-> 1504 +262 <-> 1268 +263 <-> 565, 1023 +264 <-> 408, 1806 +265 <-> 1009, 1144 +266 <-> 599, 616 +267 <-> 1182 +268 <-> 1026, 1456, 1470, 1854 +269 <-> 269, 686 +270 <-> 241, 1445 +271 <-> 1232 +272 <-> 487, 863, 1286 +273 <-> 1614, 1748 +274 <-> 1332 +275 <-> 1010, 1334 +276 <-> 205, 478, 888, 1049 +277 <-> 277, 1330 +278 <-> 734, 1561 +279 <-> 535, 1190, 1913 +280 <-> 15 +281 <-> 1206 +282 <-> 243, 475, 1571 +283 <-> 283, 1936 +284 <-> 324, 702, 844, 1601 +285 <-> 23 +286 <-> 286, 1080, 1127 +287 <-> 295 +288 <-> 805 +289 <-> 152, 656, 691, 993 +290 <-> 595, 616, 1199 +291 <-> 1028, 1218, 1844 +292 <-> 1447 +293 <-> 378, 1771 +294 <-> 811, 1790 +295 <-> 287, 367, 693 +296 <-> 861, 1948, 1950 +297 <-> 1631 +298 <-> 68, 250, 641, 745 +299 <-> 299, 898, 1152, 1574 +300 <-> 353 +301 <-> 990, 1340, 1960 +302 <-> 244 +303 <-> 1645 +304 <-> 445, 448, 557, 1611 +305 <-> 1350, 1442 +306 <-> 3, 445 +307 <-> 567 +308 <-> 1799 +309 <-> 864 +310 <-> 256, 853, 1911 +311 <-> 226, 260, 970 +312 <-> 1308 +313 <-> 58 +314 <-> 1795 +315 <-> 1225, 1627, 1903 +316 <-> 1065, 1991 +317 <-> 317 +318 <-> 546, 1415 +319 <-> 1883 +320 <-> 417, 1040 +321 <-> 1927 +322 <-> 686 +323 <-> 1018, 1619 +324 <-> 284 +325 <-> 1114 +326 <-> 474, 872 +327 <-> 439 +328 <-> 244 +329 <-> 329 +330 <-> 85, 1868 +331 <-> 331, 680, 1224, 1243, 1291 +332 <-> 1748 +333 <-> 1673 +334 <-> 676, 1306 +335 <-> 809 +336 <-> 797, 1559, 1858 +337 <-> 978, 1874 +338 <-> 538, 1077 +339 <-> 432, 1033 +340 <-> 340 +341 <-> 1267, 1683 +342 <-> 587, 726 +343 <-> 1560, 1705 +344 <-> 95 +345 <-> 232, 1032 +346 <-> 581, 1992 +347 <-> 530 +348 <-> 667, 1479 +349 <-> 1620 +350 <-> 861, 998, 1069 +351 <-> 28 +352 <-> 352 +353 <-> 300, 1513 +354 <-> 1109, 1747 +355 <-> 950, 965, 1394, 1616 +356 <-> 1136 +357 <-> 1443, 1698 +358 <-> 973, 1814 +359 <-> 1662 +360 <-> 34, 921 +361 <-> 1418 +362 <-> 10, 668, 1656 +363 <-> 450, 766 +364 <-> 615, 1941 +365 <-> 1071 +366 <-> 749, 1375 +367 <-> 295, 1708, 1925 +368 <-> 383, 928 +369 <-> 369 +370 <-> 651, 1048 +371 <-> 665, 1460, 1686 +372 <-> 390, 958, 1682 +373 <-> 1559 +374 <-> 54, 1395, 1847 +375 <-> 799, 1061, 1383, 1773 +376 <-> 376 +377 <-> 1463 +378 <-> 293, 872, 917 +379 <-> 78, 449 +380 <-> 3, 1117 +381 <-> 1995 +382 <-> 846, 896, 1506, 1918 +383 <-> 368, 477 +384 <-> 1009, 1788 +385 <-> 1926 +386 <-> 1602 +387 <-> 160, 667 +388 <-> 213, 713 +389 <-> 586 +390 <-> 372, 1140 +391 <-> 863 +392 <-> 590, 1259, 1384 +393 <-> 645 +394 <-> 423, 1537 +395 <-> 782, 1496, 1893 +396 <-> 1497 +397 <-> 397 +398 <-> 847, 1265 +399 <-> 183, 743, 1564 +400 <-> 176 +401 <-> 94 +402 <-> 402 +403 <-> 558 +404 <-> 572 +405 <-> 116 +406 <-> 769, 1563 +407 <-> 1790 +408 <-> 264 +409 <-> 847 +410 <-> 111, 158, 1467, 1880, 1902 +411 <-> 1221 +412 <-> 858, 1088, 1848 +413 <-> 1589 +414 <-> 468, 637 +415 <-> 163, 415 +416 <-> 416, 817 +417 <-> 118, 320, 1671 +418 <-> 1029, 1987 +419 <-> 128, 765 +420 <-> 420, 1180 +421 <-> 1170, 1766 +422 <-> 563, 1400, 1904, 1926 +423 <-> 394 +424 <-> 730 +425 <-> 165, 478, 957 +426 <-> 1505 +427 <-> 1478, 1780 +428 <-> 1658 +429 <-> 650 +430 <-> 133 +431 <-> 469, 1491 +432 <-> 339 +433 <-> 667, 1549 +434 <-> 852 +435 <-> 435 +436 <-> 111 +437 <-> 156 +438 <-> 116, 874 +439 <-> 327, 1387 +440 <-> 188, 540 +441 <-> 441 +442 <-> 692 +443 <-> 1037, 1153 +444 <-> 758, 1064 +445 <-> 304, 306 +446 <-> 1072, 1495, 1890 +447 <-> 105, 1665 +448 <-> 304, 591 +449 <-> 379 +450 <-> 363, 450, 466 +451 <-> 1135 +452 <-> 990, 1344, 1604 +453 <-> 1390, 1755 +454 <-> 1853 +455 <-> 1199, 1735, 1852 +456 <-> 484 +457 <-> 457, 1973 +458 <-> 786 +459 <-> 219 +460 <-> 1655, 1777 +461 <-> 206, 753 +462 <-> 79, 668 +463 <-> 699 +464 <-> 1843 +465 <-> 829, 978, 1820 +466 <-> 450 +467 <-> 770, 1475 +468 <-> 414, 613, 1230 +469 <-> 431, 1470 +470 <-> 1292, 1659 +471 <-> 603 +472 <-> 719, 1398 +473 <-> 178, 1419 +474 <-> 326, 866 +475 <-> 282 +476 <-> 1512, 1669 +477 <-> 383 +478 <-> 276, 425 +479 <-> 1029 +480 <-> 603 +481 <-> 991, 1878 +482 <-> 1726, 1783 +483 <-> 41, 855 +484 <-> 53, 456 +485 <-> 1814 +486 <-> 1470 +487 <-> 272, 1693 +488 <-> 123 +489 <-> 236, 1155, 1793 +490 <-> 12, 1349, 1498 +491 <-> 913 +492 <-> 43, 1121, 1822 +493 <-> 1148 +494 <-> 619, 1528 +495 <-> 1960 +496 <-> 192 +497 <-> 497 +498 <-> 1185 +499 <-> 1933 +500 <-> 1948 +501 <-> 1364, 1433, 1826 +502 <-> 893, 933 +503 <-> 514 +504 <-> 51, 821, 1116 +505 <-> 10, 905 +506 <-> 506 +507 <-> 892 +508 <-> 508 +509 <-> 1078 +510 <-> 1716 +511 <-> 1197, 1900 +512 <-> 568, 1284, 1422 +513 <-> 1604, 1817, 1927 +514 <-> 503, 773, 1725, 1883 +515 <-> 1396 +516 <-> 542 +517 <-> 1299 +518 <-> 1562 +519 <-> 1622 +520 <-> 1254, 1868, 1881 +521 <-> 102, 1765 +522 <-> 1438, 1980 +523 <-> 1779 +524 <-> 1235, 1968 +525 <-> 1267, 1484 +526 <-> 129 +527 <-> 1211 +528 <-> 597, 1017 +529 <-> 529, 609 +530 <-> 347, 1737, 1890 +531 <-> 851, 1320 +532 <-> 709 +533 <-> 819, 1091 +534 <-> 856 +535 <-> 279, 535 +536 <-> 536 +537 <-> 248, 1317, 1763 +538 <-> 338, 1793 +539 <-> 539, 1485 +540 <-> 440, 1216 +541 <-> 541 +542 <-> 516, 1232, 1831 +543 <-> 53, 1234 +544 <-> 639, 1090 +545 <-> 1898 +546 <-> 318, 1208 +547 <-> 91 +548 <-> 569, 750, 1090 +549 <-> 1720 +550 <-> 660 +551 <-> 186 +552 <-> 642, 672, 723 +553 <-> 1927 +554 <-> 717, 1841, 1997 +555 <-> 1938 +556 <-> 115, 1453 +557 <-> 304, 904 +558 <-> 403, 1438 +559 <-> 244, 1046 +560 <-> 226 +561 <-> 214, 793, 1570 +562 <-> 1992 +563 <-> 422 +564 <-> 860 +565 <-> 263, 804 +566 <-> 566 +567 <-> 204, 307 +568 <-> 512, 1084 +569 <-> 548, 985, 1910 +570 <-> 665, 1844 +571 <-> 735 +572 <-> 404, 1026, 1111 +573 <-> 177, 1994 +574 <-> 846 +575 <-> 723, 738, 795, 802, 926, 1215 +576 <-> 1650, 1962, 1996 +577 <-> 1501, 1670 +578 <-> 1504 +579 <-> 1016, 1729 +580 <-> 58 +581 <-> 346, 581 +582 <-> 749 +583 <-> 57, 613, 1219, 1941 +584 <-> 197, 1366 +585 <-> 52, 1518 +586 <-> 389, 1597 +587 <-> 227, 342 +588 <-> 1408 +589 <-> 1229 +590 <-> 143, 392, 1044, 1078 +591 <-> 448, 1289 +592 <-> 592 +593 <-> 711 +594 <-> 770 +595 <-> 290, 1169 +596 <-> 1854 +597 <-> 528, 755, 1241, 1982 +598 <-> 663, 806 +599 <-> 266 +600 <-> 1065, 1694 +601 <-> 746 +602 <-> 827 +603 <-> 90, 471, 480, 1083 +604 <-> 138, 1003 +605 <-> 1703 +606 <-> 1289 +607 <-> 1309 +608 <-> 808, 1100 +609 <-> 529, 1621, 1943 +610 <-> 194, 610 +611 <-> 1337, 1609 +612 <-> 980, 1350 +613 <-> 468, 583 +614 <-> 25, 173, 1623, 1914 +615 <-> 364, 775 +616 <-> 266, 290 +617 <-> 1514 +618 <-> 1031 +619 <-> 494, 1761 +620 <-> 1126, 1150, 1221, 1513, 1712 +621 <-> 1770 +622 <-> 144, 1761 +623 <-> 1367 +624 <-> 42, 131 +625 <-> 106, 914 +626 <-> 1849 +627 <-> 1477 +628 <-> 1379 +629 <-> 969 +630 <-> 1114 +631 <-> 218, 1935, 1979 +632 <-> 1015, 1665, 1816, 1819 +633 <-> 1326, 1628 +634 <-> 1347, 1720 +635 <-> 816 +636 <-> 636 +637 <-> 414, 1566 +638 <-> 1668 +639 <-> 544, 824, 1542 +640 <-> 87 +641 <-> 298, 1196 +642 <-> 552, 1619 +643 <-> 972 +644 <-> 814 +645 <-> 393, 1148, 1205, 1302 +646 <-> 969 +647 <-> 935, 1575 +648 <-> 648, 1424 +649 <-> 1794 +650 <-> 429, 854, 1586, 1711 +651 <-> 198, 370 +652 <-> 996, 1996 +653 <-> 150, 1919 +654 <-> 654 +655 <-> 658 +656 <-> 289 +657 <-> 978, 1954 +658 <-> 200, 655 +659 <-> 0, 825, 1258, 1792 +660 <-> 550, 1232 +661 <-> 661, 1405 +662 <-> 662 +663 <-> 598 +664 <-> 1014 +665 <-> 371, 570, 1247 +666 <-> 989, 1778 +667 <-> 227, 348, 387, 433 +668 <-> 362, 462, 703, 1091 +669 <-> 1184 +670 <-> 143 +671 <-> 671, 901 +672 <-> 171, 552 +673 <-> 1865 +674 <-> 972, 1961 +675 <-> 104, 1581, 1800 +676 <-> 334, 1995 +677 <-> 1836 +678 <-> 52 +679 <-> 169 +680 <-> 331 +681 <-> 823 +682 <-> 921 +683 <-> 1800 +684 <-> 750, 1505 +685 <-> 722, 1338, 1993 +686 <-> 269, 322 +687 <-> 989, 1178 +688 <-> 1338 +689 <-> 1535 +690 <-> 13, 690 +691 <-> 289, 721 +692 <-> 442, 1014 +693 <-> 295 +694 <-> 154, 862 +695 <-> 1552, 1735 +696 <-> 1044 +697 <-> 993, 1793, 1801 +698 <-> 698 +699 <-> 463, 1022, 1399 +700 <-> 897, 1085 +701 <-> 1782, 1987 +702 <-> 284 +703 <-> 668, 1031 +704 <-> 704, 849 +705 <-> 31 +706 <-> 1909 +707 <-> 1276 +708 <-> 1301 +709 <-> 532, 1607 +710 <-> 1094 +711 <-> 75, 593, 1251, 1297 +712 <-> 184, 712 +713 <-> 221, 388, 713 +714 <-> 198 +715 <-> 1607 +716 <-> 1110 +717 <-> 554, 1819 +718 <-> 1755 +719 <-> 472, 1942 +720 <-> 1043, 1984 +721 <-> 691, 1641 +722 <-> 685, 1360, 1679 +723 <-> 54, 174, 552, 575 +724 <-> 1466 +725 <-> 1231 +726 <-> 342, 1023 +727 <-> 24 +728 <-> 1928 +729 <-> 975, 1759 +730 <-> 28, 112, 424, 1324 +731 <-> 731 +732 <-> 76, 1698 +733 <-> 1895 +734 <-> 278 +735 <-> 571, 1440 +736 <-> 239 +737 <-> 0, 1214, 1949 +738 <-> 575, 985 +739 <-> 1467 +740 <-> 740, 1449, 1885 +741 <-> 1243 +742 <-> 845, 1588, 1676, 1956, 1980 +743 <-> 399 +744 <-> 744, 1990 +745 <-> 298, 1966 +746 <-> 601, 1294, 1601 +747 <-> 175, 1106 +748 <-> 1433, 1565, 1795 +749 <-> 366, 582 +750 <-> 548, 684, 1210 +751 <-> 751, 1967 +752 <-> 765, 1297 +753 <-> 461 +754 <-> 754 +755 <-> 597, 1089 +756 <-> 756 +757 <-> 1350, 1936 +758 <-> 444, 1044, 1279 +759 <-> 996, 1310 +760 <-> 1943 +761 <-> 217, 1333 +762 <-> 1671 +763 <-> 1761 +764 <-> 1881 +765 <-> 419, 752 +766 <-> 363, 928, 1100 +767 <-> 1220, 1986 +768 <-> 1337 +769 <-> 406, 1307 +770 <-> 467, 594, 1707 +771 <-> 1624, 1782 +772 <-> 1230 +773 <-> 514, 1266, 1305 +774 <-> 113, 1198 +775 <-> 615, 1753 +776 <-> 1307 +777 <-> 1785 +778 <-> 778, 1776 +779 <-> 992 +780 <-> 1406 +781 <-> 781, 1272 +782 <-> 93, 395, 1207 +783 <-> 1544, 1729 +784 <-> 225, 1168, 1587 +785 <-> 1050 +786 <-> 140, 162, 458, 786, 1060 +787 <-> 1210 +788 <-> 1431 +789 <-> 76 +790 <-> 164, 882 +791 <-> 166, 1688 +792 <-> 792, 946 +793 <-> 214, 561 +794 <-> 5, 1561 +795 <-> 575, 1208, 1875 +796 <-> 14, 1205, 1427 +797 <-> 336, 1006, 1352 +798 <-> 1176, 1754 +799 <-> 251, 375 +800 <-> 840, 1471 +801 <-> 801, 1246, 1897 +802 <-> 575 +803 <-> 1692 +804 <-> 565, 859, 1978 +805 <-> 288, 1447 +806 <-> 88, 598 +807 <-> 219, 1579 +808 <-> 608 +809 <-> 335, 867, 1734, 1843 +810 <-> 1279 +811 <-> 294, 1043, 1560, 1583, 1600 +812 <-> 1487, 1527 +813 <-> 42, 1405 +814 <-> 242, 644, 1175, 1638 +815 <-> 1050, 1177 +816 <-> 218, 635, 1427 +817 <-> 416 +818 <-> 1765, 1999 +819 <-> 141, 533 +820 <-> 1238, 1393 +821 <-> 504, 1755 +822 <-> 1320, 1397 +823 <-> 681, 1120, 1798 +824 <-> 639 +825 <-> 659 +826 <-> 1722, 1834 +827 <-> 193, 602, 968 +828 <-> 233, 1835 +829 <-> 465 +830 <-> 951 +831 <-> 1606 +832 <-> 1619, 1964 +833 <-> 1109 +834 <-> 7, 962, 1869 +835 <-> 141 +836 <-> 167, 875, 1145 +837 <-> 1752 +838 <-> 838, 1146 +839 <-> 1247 +840 <-> 800 +841 <-> 1337 +842 <-> 1438, 1466 +843 <-> 102 +844 <-> 284 +845 <-> 742 +846 <-> 382, 574 +847 <-> 79, 398, 409 +848 <-> 959 +849 <-> 9, 704 +850 <-> 915, 1455, 1911, 1987 +851 <-> 531, 1001 +852 <-> 434, 1172 +853 <-> 310, 1533 +854 <-> 650 +855 <-> 483, 868, 1598 +856 <-> 222, 534, 1133 +857 <-> 857, 1249, 1923 +858 <-> 412, 1540, 1575, 1607 +859 <-> 804, 1655 +860 <-> 564, 1243 +861 <-> 296, 350, 1130, 1521 +862 <-> 694 +863 <-> 272, 391, 1558 +864 <-> 309, 1071, 1227 +865 <-> 1537, 1669, 1825 +866 <-> 99, 474 +867 <-> 809, 867, 1004 +868 <-> 855, 1539 +869 <-> 1550 +870 <-> 1885 +871 <-> 49 +872 <-> 326, 378, 1552 +873 <-> 1307 +874 <-> 62, 438 +875 <-> 836, 1056, 1326 +876 <-> 876 +877 <-> 1933 +878 <-> 52, 128, 1527 +879 <-> 879 +880 <-> 1292, 1561, 1770 +881 <-> 881, 981 +882 <-> 790, 882, 932 +883 <-> 1322, 1963 +884 <-> 1842 +885 <-> 885 +886 <-> 33, 80, 1765, 1959 +887 <-> 1012 +888 <-> 276 +889 <-> 1391 +890 <-> 140 +891 <-> 114, 891 +892 <-> 160, 507 +893 <-> 236, 502, 1602 +894 <-> 1525 +895 <-> 41 +896 <-> 382 +897 <-> 700 +898 <-> 299 +899 <-> 1797 +900 <-> 1736 +901 <-> 671, 944, 1147 +902 <-> 1597, 1940 +903 <-> 1283 +904 <-> 17, 91, 557, 1169, 1764 +905 <-> 505 +906 <-> 9, 69, 942 +907 <-> 80, 211, 1348 +908 <-> 1398 +909 <-> 909 +910 <-> 1683 +911 <-> 73, 911 +912 <-> 1929 +913 <-> 12, 491, 1591 +914 <-> 169, 243, 625, 1867 +915 <-> 850, 1538 +916 <-> 83 +917 <-> 378 +918 <-> 1438 +919 <-> 1951 +920 <-> 1814 +921 <-> 360, 682, 1952 +922 <-> 922 +923 <-> 107, 1161, 1254 +924 <-> 222 +925 <-> 1691 +926 <-> 575 +927 <-> 1165, 1270 +928 <-> 368, 766 +929 <-> 1707, 1914 +930 <-> 145, 1096, 1434, 1791 +931 <-> 931, 1983 +932 <-> 882 +933 <-> 502, 1921 +934 <-> 1297 +935 <-> 647, 1319 +936 <-> 1255 +937 <-> 1210 +938 <-> 11 +939 <-> 1348, 1666 +940 <-> 1408 +941 <-> 1440 +942 <-> 906 +943 <-> 1977 +944 <-> 901 +945 <-> 126 +946 <-> 792 +947 <-> 44, 1400 +948 <-> 948, 1045 +949 <-> 967 +950 <-> 355 +951 <-> 68, 830, 969 +952 <-> 1225, 1757, 1929 +953 <-> 1534, 1726 +954 <-> 1511, 1888 +955 <-> 183, 1418 +956 <-> 1702 +957 <-> 425 +958 <-> 372 +959 <-> 848, 1512 +960 <-> 1868 +961 <-> 1509 +962 <-> 834, 1678 +963 <-> 160 +964 <-> 101, 161 +965 <-> 355 +966 <-> 1740, 1866 +967 <-> 949, 1802 +968 <-> 827, 1534 +969 <-> 629, 646, 951 +970 <-> 311 +971 <-> 35, 1670 +972 <-> 643, 674, 1449 +973 <-> 358 +974 <-> 974 +975 <-> 729, 1955 +976 <-> 1495 +977 <-> 1603, 1889 +978 <-> 337, 465, 657, 1615, 1953 +979 <-> 1801 +980 <-> 115, 612, 1239 +981 <-> 881 +982 <-> 2, 234, 1411, 1511 +983 <-> 1970 +984 <-> 227, 984 +985 <-> 191, 569, 738 +986 <-> 1926 +987 <-> 987 +988 <-> 126, 237, 1894 +989 <-> 666, 687, 1079 +990 <-> 301, 452, 1903 +991 <-> 481, 1435 +992 <-> 110, 779, 1637 +993 <-> 21, 289, 697, 1675 +994 <-> 1151, 1639 +995 <-> 1090, 1798 +996 <-> 652, 759, 1229 +997 <-> 1253, 1380, 1553 +998 <-> 350, 1812 +999 <-> 1128 +1000 <-> 1566 +1001 <-> 851 +1002 <-> 103, 1229 +1003 <-> 604, 1156, 1232, 1420 +1004 <-> 23, 867 +1005 <-> 1085, 1174, 1899 +1006 <-> 797 +1007 <-> 63, 1282 +1008 <-> 219, 1008, 1977 +1009 <-> 265, 384, 1731 +1010 <-> 275, 1438, 1474 +1011 <-> 1289 +1012 <-> 166, 235, 887, 1342, 1471 +1013 <-> 1013, 1886 +1014 <-> 664, 692, 1229 +1015 <-> 632, 1015 +1016 <-> 579 +1017 <-> 161, 528 +1018 <-> 323 +1019 <-> 1684 +1020 <-> 125 +1021 <-> 1036, 1450 +1022 <-> 699, 1600, 1962 +1023 <-> 263, 726 +1024 <-> 1295 +1025 <-> 154, 1025 +1026 <-> 268, 572, 1610 +1027 <-> 239, 1269 +1028 <-> 291, 1275 +1029 <-> 418, 479, 1957 +1030 <-> 1184 +1031 <-> 618, 703 +1032 <-> 345 +1033 <-> 61, 339, 1033 +1034 <-> 1166, 1291 +1035 <-> 31, 41 +1036 <-> 1021, 1228 +1037 <-> 28, 443, 1227 +1038 <-> 1178 +1039 <-> 94, 1578 +1040 <-> 320, 1992 +1041 <-> 1041 +1042 <-> 32, 1486 +1043 <-> 720, 811 +1044 <-> 157, 590, 696, 758, 1433, 1739 +1045 <-> 948 +1046 <-> 559, 1241 +1047 <-> 199, 1962 +1048 <-> 370 +1049 <-> 276, 1885 +1050 <-> 785, 815 +1051 <-> 1051, 1290 +1052 <-> 1165 +1053 <-> 193, 1446, 1488 +1054 <-> 1081 +1055 <-> 6 +1056 <-> 875 +1057 <-> 128, 1137 +1058 <-> 1112, 1173 +1059 <-> 1226, 1538 +1060 <-> 786 +1061 <-> 375, 1639, 1988 +1062 <-> 1748 +1063 <-> 210, 1692 +1064 <-> 444 +1065 <-> 316, 600, 1689 +1066 <-> 1709 +1067 <-> 1067 +1068 <-> 1068 +1069 <-> 350 +1070 <-> 1196 +1071 <-> 365, 864, 1827 +1072 <-> 446, 1142 +1073 <-> 1931 +1074 <-> 1529 +1075 <-> 1075 +1076 <-> 4, 1717, 1879, 1969 +1077 <-> 338 +1078 <-> 509, 590 +1079 <-> 989, 1282 +1080 <-> 139, 286 +1081 <-> 1054, 1992 +1082 <-> 1115, 1451, 1704 +1083 <-> 603, 1271 +1084 <-> 568, 1233 +1085 <-> 700, 1005, 1939 +1086 <-> 132, 1745, 1901 +1087 <-> 1519 +1088 <-> 412 +1089 <-> 755 +1090 <-> 544, 548, 995, 1768 +1091 <-> 227, 533, 668, 1141 +1092 <-> 95 +1093 <-> 1271, 1946 +1094 <-> 710, 1102 +1095 <-> 1546 +1096 <-> 930 +1097 <-> 1288 +1098 <-> 162, 1933 +1099 <-> 1456 +1100 <-> 608, 766 +1101 <-> 34, 58, 1108 +1102 <-> 1094, 1938 +1103 <-> 223, 1117 +1104 <-> 1457, 1605, 1654 +1105 <-> 1105 +1106 <-> 92, 747 +1107 <-> 1699 +1108 <-> 1101, 1201 +1109 <-> 354, 833, 1285, 1874 +1110 <-> 40, 716 +1111 <-> 190, 572, 1440 +1112 <-> 1058, 1193 +1113 <-> 1113 +1114 <-> 325, 630, 1853 +1115 <-> 260, 1082 +1116 <-> 504 +1117 <-> 380, 1103 +1118 <-> 1118 +1119 <-> 1353, 1871 +1120 <-> 823 +1121 <-> 492, 1196 +1122 <-> 1122 +1123 <-> 1725 +1124 <-> 1892 +1125 <-> 1344 +1126 <-> 620 +1127 <-> 286, 1138 +1128 <-> 999, 1268 +1129 <-> 1129 +1130 <-> 861 +1131 <-> 1874 +1132 <-> 1913 +1133 <-> 856 +1134 <-> 1185, 1767 +1135 <-> 451, 1975 +1136 <-> 65, 356, 1487 +1137 <-> 192, 1057 +1138 <-> 1127, 1782 +1139 <-> 1240 +1140 <-> 64, 390, 1385 +1141 <-> 1091 +1142 <-> 1072, 1587 +1143 <-> 155, 1143 +1144 <-> 265 +1145 <-> 836, 1401 +1146 <-> 838 +1147 <-> 901, 1483 +1148 <-> 94, 493, 645, 1167 +1149 <-> 1818 +1150 <-> 620, 1237, 1264 +1151 <-> 994, 1844 +1152 <-> 299, 1167 +1153 <-> 443, 1947 +1154 <-> 1803 +1155 <-> 489, 1163 +1156 <-> 1003, 1635, 1668 +1157 <-> 1340, 1809 +1158 <-> 231 +1159 <-> 57 +1160 <-> 1558 +1161 <-> 923 +1162 <-> 1590 +1163 <-> 1155 +1164 <-> 145, 1164, 1283 +1165 <-> 927, 1052, 1678, 1934 +1166 <-> 1034 +1167 <-> 240, 1148, 1152, 1462 +1168 <-> 784 +1169 <-> 595, 904 +1170 <-> 421 +1171 <-> 1667 +1172 <-> 852, 1195, 1323, 1444 +1173 <-> 1058, 1389 +1174 <-> 1005 +1175 <-> 814 +1176 <-> 798 +1177 <-> 258, 815, 1401 +1178 <-> 687, 1038, 1331 +1179 <-> 134, 1179 +1180 <-> 420 +1181 <-> 1181 +1182 <-> 267, 1677 +1183 <-> 100 +1184 <-> 669, 1030, 1969 +1185 <-> 498, 1134, 1673, 1750 +1186 <-> 165 +1187 <-> 1893 +1188 <-> 1236, 1365 +1189 <-> 1334, 1732 +1190 <-> 279 +1191 <-> 1620 +1192 <-> 1257 +1193 <-> 1112 +1194 <-> 1770 +1195 <-> 187, 1172, 1964 +1196 <-> 641, 1070, 1121, 1729 +1197 <-> 511, 1273, 1607 +1198 <-> 229, 774 +1199 <-> 290, 455, 1860 +1200 <-> 1901 +1201 <-> 1108 +1202 <-> 1378 +1203 <-> 1591 +1204 <-> 229 +1205 <-> 645, 796, 1250 +1206 <-> 281, 1824 +1207 <-> 782 +1208 <-> 546, 795, 1700 +1209 <-> 249 +1210 <-> 750, 787, 937 +1211 <-> 527, 1981 +1212 <-> 1212, 1369 +1213 <-> 1512 +1214 <-> 737 +1215 <-> 575 +1216 <-> 540, 1216 +1217 <-> 1312, 1340 +1218 <-> 291, 1586 +1219 <-> 583, 1554 +1220 <-> 117, 767 +1221 <-> 411, 620, 1221 +1222 <-> 1612, 1710 +1223 <-> 1223, 1374 +1224 <-> 331 +1225 <-> 315, 952, 1263 +1226 <-> 1059, 1928 +1227 <-> 864, 1037, 1823 +1228 <-> 1036, 1613 +1229 <-> 589, 996, 1002, 1014, 1906 +1230 <-> 247, 468, 772, 1821, 1837 +1231 <-> 195, 220, 725 +1232 <-> 271, 542, 660, 1003, 1232, 1606 +1233 <-> 1084, 1366, 1738 +1234 <-> 543, 1408 +1235 <-> 524 +1236 <-> 183, 1188 +1237 <-> 1150 +1238 <-> 820, 1521 +1239 <-> 980 +1240 <-> 1139, 1240 +1241 <-> 597, 1046 +1242 <-> 1646 +1243 <-> 331, 741, 860 +1244 <-> 1522, 1870 +1245 <-> 1245 +1246 <-> 801 +1247 <-> 665, 839 +1248 <-> 208, 1932 +1249 <-> 857 +1250 <-> 1205 +1251 <-> 711 +1252 <-> 1888 +1253 <-> 997, 1593 +1254 <-> 235, 520, 923, 1382 +1255 <-> 936 +1256 <-> 1718 +1257 <-> 259, 1192 +1258 <-> 659, 1917 +1259 <-> 392 +1260 <-> 1260 +1261 <-> 1261, 1376 +1262 <-> 1936 +1263 <-> 1225 +1264 <-> 1150, 1567 +1265 <-> 398 +1266 <-> 773, 1373 +1267 <-> 257, 341, 525 +1268 <-> 202, 262, 1128 +1269 <-> 1027 +1270 <-> 927 +1271 <-> 1083, 1093 +1272 <-> 781 +1273 <-> 1197 +1274 <-> 1760 +1275 <-> 1028, 1827 +1276 <-> 707, 1900 +1277 <-> 188 +1278 <-> 1463 +1279 <-> 758, 810 +1280 <-> 1920 +1281 <-> 1942 +1282 <-> 53, 1007, 1079 +1283 <-> 192, 903, 1164, 1690 +1284 <-> 512, 1584 +1285 <-> 1109, 1285 +1286 <-> 272 +1287 <-> 160 +1288 <-> 15, 1097, 1905 +1289 <-> 591, 606, 1011 +1290 <-> 1051 +1291 <-> 331, 1034 +1292 <-> 470, 880 +1293 <-> 1501, 1899 +1294 <-> 746, 1294 +1295 <-> 183, 1024 +1296 <-> 1580 +1297 <-> 711, 752, 934 +1298 <-> 1298 +1299 <-> 517, 1299 +1300 <-> 1300 +1301 <-> 708, 1301 +1302 <-> 645 +1303 <-> 1355, 1492 +1304 <-> 1361, 1746 +1305 <-> 773 +1306 <-> 334, 1325 +1307 <-> 769, 776, 873, 1333 +1308 <-> 312, 1851, 1966 +1309 <-> 607, 1459, 1496 +1310 <-> 759 +1311 <-> 1381, 1520 +1312 <-> 1217 +1313 <-> 1983 +1314 <-> 1314 +1315 <-> 1315, 1647 +1316 <-> 63 +1317 <-> 537 +1318 <-> 1973 +1319 <-> 935, 1517 +1320 <-> 531, 822 +1321 <-> 27, 1837 +1322 <-> 883, 1664 +1323 <-> 1172 +1324 <-> 730 +1325 <-> 1306 +1326 <-> 633, 875 +1327 <-> 159, 1553 +1328 <-> 1974 +1329 <-> 1939 +1330 <-> 277, 1515 +1331 <-> 1178, 1590 +1332 <-> 274, 1332 +1333 <-> 8, 761, 1307, 1333 +1334 <-> 275, 1189, 1482 +1335 <-> 1478 +1336 <-> 140 +1337 <-> 66, 611, 768, 841 +1338 <-> 176, 685, 688, 1449 +1339 <-> 1339 +1340 <-> 301, 1157, 1217, 1630 +1341 <-> 27 +1342 <-> 1012 +1343 <-> 1408 +1344 <-> 452, 1125, 1622 +1345 <-> 74, 1835 +1346 <-> 1860 +1347 <-> 634, 1428 +1348 <-> 907, 939 +1349 <-> 490, 1349 +1350 <-> 305, 612, 757 +1351 <-> 162 +1352 <-> 797, 1818 +1353 <-> 1119, 1353 +1354 <-> 1436 +1355 <-> 1303 +1356 <-> 94, 254 +1357 <-> 1419, 1664, 1680 +1358 <-> 1358 +1359 <-> 197 +1360 <-> 722, 1909 +1361 <-> 1304 +1362 <-> 82, 188, 1448 +1363 <-> 1752 +1364 <-> 501 +1365 <-> 1188, 1661 +1366 <-> 584, 1233 +1367 <-> 623, 1394, 1781 +1368 <-> 1886 +1369 <-> 1212 +1370 <-> 86, 1370 +1371 <-> 1772 +1372 <-> 191, 1473 +1373 <-> 1266 +1374 <-> 1223, 1981 +1375 <-> 366, 1375 +1376 <-> 1261, 1599 +1377 <-> 1675 +1378 <-> 30, 1202, 1406, 1845 +1379 <-> 153, 628, 1557 +1380 <-> 180, 997 +1381 <-> 1311, 1407, 1666 +1382 <-> 1254 +1383 <-> 375, 1714 +1384 <-> 392 +1385 <-> 1140, 1933 +1386 <-> 1949 +1387 <-> 439, 1387 +1388 <-> 1770 +1389 <-> 1173, 1679 +1390 <-> 123, 453, 1733 +1391 <-> 158, 249, 889, 1945 +1392 <-> 1881 +1393 <-> 820 +1394 <-> 18, 181, 355, 1367 +1395 <-> 374, 1404 +1396 <-> 515, 1860 +1397 <-> 200, 822 +1398 <-> 472, 908, 1622, 1701 +1399 <-> 699 +1400 <-> 422, 947, 1551 +1401 <-> 1145, 1177 +1402 <-> 1764 +1403 <-> 1875 +1404 <-> 1395 +1405 <-> 661, 813 +1406 <-> 780, 1378 +1407 <-> 1381 +1408 <-> 588, 940, 1234, 1343, 1603, 1865 +1409 <-> 1427 +1410 <-> 164 +1411 <-> 88, 982 +1412 <-> 1452 +1413 <-> 1707, 1766 +1414 <-> 121 +1415 <-> 318, 1415, 1612 +1416 <-> 1416 +1417 <-> 232 +1418 <-> 361, 955, 1418, 1737 +1419 <-> 473, 1357 +1420 <-> 1003 +1421 <-> 122, 1973 +1422 <-> 512, 1870 +1423 <-> 248 +1424 <-> 648 +1425 <-> 1425 +1426 <-> 224, 1946 +1427 <-> 796, 816, 1409 +1428 <-> 1347 +1429 <-> 1810, 1862 +1430 <-> 1430 +1431 <-> 788, 1488 +1432 <-> 259, 1432 +1433 <-> 1, 501, 748, 1044 +1434 <-> 930 +1435 <-> 991 +1436 <-> 1354, 1436 +1437 <-> 253 +1438 <-> 522, 558, 842, 918, 1010 +1439 <-> 1649 +1440 <-> 735, 941, 1111 +1441 <-> 1707 +1442 <-> 305, 1930 +1443 <-> 357 +1444 <-> 1172 +1445 <-> 162, 270, 1636 +1446 <-> 1053 +1447 <-> 220, 292, 805 +1448 <-> 1362 +1449 <-> 740, 972, 1338 +1450 <-> 100, 237, 1021 +1451 <-> 5, 1082 +1452 <-> 1412, 1572 +1453 <-> 556 +1454 <-> 1454 +1455 <-> 850 +1456 <-> 125, 268, 1099 +1457 <-> 240, 1104 +1458 <-> 18, 1576 +1459 <-> 1309, 1503 +1460 <-> 84, 371 +1461 <-> 1747, 1879 +1462 <-> 3, 1167, 1807 +1463 <-> 377, 1278, 1499, 1971 +1464 <-> 1908 +1465 <-> 72 +1466 <-> 724, 842 +1467 <-> 410, 739 +1468 <-> 67 +1469 <-> 155, 1652 +1470 <-> 268, 469, 486 +1471 <-> 800, 1012, 1471, 1510 +1472 <-> 39 +1473 <-> 1372 +1474 <-> 1010, 1915 +1475 <-> 467, 1658 +1476 <-> 1476 +1477 <-> 627, 1477 +1478 <-> 427, 1335, 1907 +1479 <-> 348 +1480 <-> 1480 +1481 <-> 1802 +1482 <-> 1334 +1483 <-> 1147, 1524 +1484 <-> 42, 525 +1485 <-> 539 +1486 <-> 148, 1042, 1549 +1487 <-> 812, 1136 +1488 <-> 1053, 1431 +1489 <-> 1708, 1931 +1490 <-> 1807 +1491 <-> 431 +1492 <-> 156, 1303 +1493 <-> 1493 +1494 <-> 1853 +1495 <-> 446, 976 +1496 <-> 395, 1309 +1497 <-> 195, 396, 1974 +1498 <-> 490, 1626 +1499 <-> 76, 1463 +1500 <-> 1722 +1501 <-> 577, 1293 +1502 <-> 115 +1503 <-> 1459, 1507 +1504 <-> 210, 261, 578, 1521, 1718 +1505 <-> 230, 426, 684, 1634 +1506 <-> 382, 1921 +1507 <-> 1503 +1508 <-> 162, 1667 +1509 <-> 961, 1509 +1510 <-> 1471 +1511 <-> 954, 982, 1582 +1512 <-> 476, 959, 1213, 1703 +1513 <-> 353, 620 +1514 <-> 617, 1546 +1515 <-> 1330, 1595 +1516 <-> 1946 +1517 <-> 42, 1319 +1518 <-> 585 +1519 <-> 32, 1087 +1520 <-> 1311 +1521 <-> 861, 1238, 1504 +1522 <-> 1244, 1653 +1523 <-> 1523 +1524 <-> 1483 +1525 <-> 894, 1525 +1526 <-> 1924 +1527 <-> 812, 878 +1528 <-> 494 +1529 <-> 59, 1074 +1530 <-> 1530 +1531 <-> 34, 1531 +1532 <-> 1638 +1533 <-> 853 +1534 <-> 953, 968 +1535 <-> 108, 689 +1536 <-> 1589 +1537 <-> 394, 865 +1538 <-> 915, 1059 +1539 <-> 868 +1540 <-> 858, 1745 +1541 <-> 221 +1542 <-> 639 +1543 <-> 1746 +1544 <-> 783, 1544 +1545 <-> 236 +1546 <-> 66, 1095, 1514 +1547 <-> 1628 +1548 <-> 1548 +1549 <-> 433, 1486 +1550 <-> 869, 1550 +1551 <-> 1400, 1787 +1552 <-> 695, 872 +1553 <-> 997, 1327 +1554 <-> 1219 +1555 <-> 97 +1556 <-> 1840 +1557 <-> 7, 1379 +1558 <-> 126, 863, 1160 +1559 <-> 336, 373 +1560 <-> 343, 811 +1561 <-> 278, 794, 880, 1561 +1562 <-> 127, 518, 1562 +1563 <-> 406 +1564 <-> 81, 399 +1565 <-> 748 +1566 <-> 637, 1000 +1567 <-> 1264 +1568 <-> 1568 +1569 <-> 214 +1570 <-> 561, 1849 +1571 <-> 282 +1572 <-> 44, 130, 178, 1452 +1573 <-> 107 +1574 <-> 299 +1575 <-> 647, 858 +1576 <-> 1458, 1633 +1577 <-> 1833, 1939 +1578 <-> 1039, 1802 +1579 <-> 807, 1853 +1580 <-> 1296, 1580, 1907 +1581 <-> 675 +1582 <-> 1511, 1605, 1756 +1583 <-> 811 +1584 <-> 1284 +1585 <-> 1817 +1586 <-> 168, 650, 1218 +1587 <-> 784, 1142 +1588 <-> 742 +1589 <-> 45, 209, 413, 1536 +1590 <-> 25, 201, 1162, 1331 +1591 <-> 913, 1203 +1592 <-> 1820 +1593 <-> 1253 +1594 <-> 231 +1595 <-> 149, 1515 +1596 <-> 57, 1976 +1597 <-> 586, 902 +1598 <-> 855 +1599 <-> 1376 +1600 <-> 811, 1022 +1601 <-> 284, 746 +1602 <-> 386, 893 +1603 <-> 135, 977, 1408 +1604 <-> 452, 513 +1605 <-> 1104, 1582 +1606 <-> 831, 1232 +1607 <-> 709, 715, 858, 1197 +1608 <-> 1793 +1609 <-> 611, 1808 +1610 <-> 1026, 1964 +1611 <-> 304 +1612 <-> 1222, 1415, 1769 +1613 <-> 1228, 1847 +1614 <-> 273 +1615 <-> 978 +1616 <-> 156, 355 +1617 <-> 177 +1618 <-> 1618 +1619 <-> 323, 642, 832 +1620 <-> 113, 349, 1191, 1746 +1621 <-> 609 +1622 <-> 519, 1344, 1398 +1623 <-> 614 +1624 <-> 771, 1989 +1625 <-> 1625 +1626 <-> 1498 +1627 <-> 186, 315 +1628 <-> 633, 1547 +1629 <-> 1706 +1630 <-> 1340 +1631 <-> 297, 1800 +1632 <-> 1806 +1633 <-> 1576 +1634 <-> 1505 +1635 <-> 1156 +1636 <-> 1445 +1637 <-> 76, 992, 1920, 1995 +1638 <-> 814, 1532 +1639 <-> 994, 1061 +1640 <-> 1640 +1641 <-> 721 +1642 <-> 1739, 1945 +1643 <-> 1643 +1644 <-> 1644, 1908 +1645 <-> 125, 303 +1646 <-> 1242, 1646 +1647 <-> 1315 +1648 <-> 1957 +1649 <-> 97, 1439, 1783 +1650 <-> 576 +1651 <-> 1651 +1652 <-> 35, 1469 +1653 <-> 1522 +1654 <-> 1104 +1655 <-> 460, 859 +1656 <-> 362 +1657 <-> 142, 181 +1658 <-> 428, 1475 +1659 <-> 470 +1660 <-> 247 +1661 <-> 1365 +1662 <-> 165, 359 +1663 <-> 198 +1664 <-> 1322, 1357 +1665 <-> 447, 632 +1666 <-> 939, 1381 +1667 <-> 1171, 1508 +1668 <-> 638, 1156 +1669 <-> 476, 865, 1699 +1670 <-> 577, 971 +1671 <-> 119, 417, 762, 1804 +1672 <-> 50, 1672, 1687 +1673 <-> 63, 333, 1185 +1674 <-> 1674 +1675 <-> 993, 1377 +1676 <-> 742, 1813 +1677 <-> 233, 1182, 1846 +1678 <-> 962, 1165 +1679 <-> 722, 1389 +1680 <-> 82, 1357 +1681 <-> 1681, 1702, 1895 +1682 <-> 372 +1683 <-> 203, 341, 910 +1684 <-> 1019, 1948 +1685 <-> 1982 +1686 <-> 371 +1687 <-> 1672 +1688 <-> 791 +1689 <-> 1065, 1689 +1690 <-> 1283 +1691 <-> 925, 1878 +1692 <-> 803, 1063, 1732 +1693 <-> 487 +1694 <-> 600 +1695 <-> 1695, 1794 +1696 <-> 1696 +1697 <-> 1802 +1698 <-> 357, 732 +1699 <-> 1107, 1669 +1700 <-> 1208 +1701 <-> 1398 +1702 <-> 956, 1681 +1703 <-> 605, 1512 +1704 <-> 1082 +1705 <-> 343 +1706 <-> 1629, 1775 +1707 <-> 770, 929, 1413, 1441 +1708 <-> 367, 1489 +1709 <-> 1066, 1862 +1710 <-> 1222 +1711 <-> 650 +1712 <-> 620 +1713 <-> 1713 +1714 <-> 1383 +1715 <-> 1911 +1716 <-> 510, 1716 +1717 <-> 1076 +1718 <-> 1256, 1504 +1719 <-> 238 +1720 <-> 549, 634, 1720 +1721 <-> 15 +1722 <-> 826, 1500 +1723 <-> 1880 +1724 <-> 177, 1724 +1725 <-> 514, 1123, 1797 +1726 <-> 482, 953 +1727 <-> 1914 +1728 <-> 216, 1982 +1729 <-> 579, 783, 1196, 1800 +1730 <-> 1730, 1972 +1731 <-> 1009 +1732 <-> 89, 1189, 1692 +1733 <-> 1390 +1734 <-> 809 +1735 <-> 455, 695 +1736 <-> 900, 1736 +1737 <-> 530, 1418 +1738 <-> 1233, 1888 +1739 <-> 1044, 1642, 1834 +1740 <-> 966 +1741 <-> 145, 253 +1742 <-> 112 +1743 <-> 1980 +1744 <-> 139 +1745 <-> 1086, 1540 +1746 <-> 1304, 1543, 1620 +1747 <-> 117, 354, 1461 +1748 <-> 45, 273, 332, 1062 +1749 <-> 249 +1750 <-> 124, 1185 +1751 <-> 1835 +1752 <-> 104, 837, 1363 +1753 <-> 245, 775 +1754 <-> 798, 1876 +1755 <-> 453, 718, 821 +1756 <-> 1582 +1757 <-> 952, 1772, 1841 +1758 <-> 1758, 1830, 1878 +1759 <-> 729 +1760 <-> 104, 1274 +1761 <-> 224, 619, 622, 763, 1868 +1762 <-> 1762 +1763 <-> 537 +1764 <-> 904, 1402 +1765 <-> 521, 818, 886, 1782 +1766 <-> 421, 1413 +1767 <-> 1134 +1768 <-> 202, 1090 +1769 <-> 1612 +1770 <-> 621, 880, 1194, 1388 +1771 <-> 293 +1772 <-> 1371, 1757 +1773 <-> 19, 375 +1774 <-> 1774 +1775 <-> 1706, 1915 +1776 <-> 778 +1777 <-> 460, 1918 +1778 <-> 666 +1779 <-> 523, 1846 +1780 <-> 427 +1781 <-> 1367 +1782 <-> 701, 771, 1138, 1765 +1783 <-> 482, 1649, 1783 +1784 <-> 1784, 1872 +1785 <-> 777, 1785 +1786 <-> 1858 +1787 <-> 1551 +1788 <-> 59, 384, 1865 +1789 <-> 111 +1790 <-> 294, 407, 1969 +1791 <-> 238, 930 +1792 <-> 659 +1793 <-> 489, 538, 697, 1608 +1794 <-> 206, 649, 1695 +1795 <-> 314, 748 +1796 <-> 1796 +1797 <-> 899, 1725, 1797 +1798 <-> 823, 995 +1799 <-> 308, 1799 +1800 <-> 675, 683, 1631, 1729 +1801 <-> 697, 979, 1858 +1802 <-> 967, 1481, 1578, 1697 +1803 <-> 1154, 1803 +1804 <-> 1671 +1805 <-> 199 +1806 <-> 264, 1632, 1806 +1807 <-> 1462, 1490 +1808 <-> 1609, 1808 +1809 <-> 1157 +1810 <-> 1429 +1811 <-> 125 +1812 <-> 998 +1813 <-> 1676 +1814 <-> 358, 485, 920, 1814 +1815 <-> 211 +1816 <-> 632 +1817 <-> 513, 1585 +1818 <-> 1149, 1352 +1819 <-> 632, 717 +1820 <-> 465, 1592 +1821 <-> 46, 257, 1230 +1822 <-> 492 +1823 <-> 1227, 1891 +1824 <-> 247, 1206 +1825 <-> 182, 865 +1826 <-> 501 +1827 <-> 3, 1071, 1275 +1828 <-> 29 +1829 <-> 139 +1830 <-> 1758 +1831 <-> 542 +1832 <-> 1862 +1833 <-> 1577 +1834 <-> 151, 826, 1739, 1882 +1835 <-> 828, 1345, 1751, 1835 +1836 <-> 45, 677 +1837 <-> 1230, 1321 +1838 <-> 165, 1856 +1839 <-> 1842, 1953 +1840 <-> 183, 1556 +1841 <-> 554, 1757 +1842 <-> 884, 1839 +1843 <-> 464, 809 +1844 <-> 291, 570, 1151 +1845 <-> 1378 +1846 <-> 1677, 1779 +1847 <-> 374, 1613 +1848 <-> 204, 412 +1849 <-> 626, 1570 +1850 <-> 1850 +1851 <-> 1308 +1852 <-> 228, 455 +1853 <-> 454, 1114, 1494, 1579 +1854 <-> 268, 596 +1855 <-> 1855 +1856 <-> 1838 +1857 <-> 61 +1858 <-> 336, 1786, 1801, 1937 +1859 <-> 1908 +1860 <-> 1199, 1346, 1396 +1861 <-> 1861 +1862 <-> 1429, 1709, 1832, 1900 +1863 <-> 9 +1864 <-> 41, 1975 +1865 <-> 673, 1408, 1788 +1866 <-> 966, 1873 +1867 <-> 914 +1868 <-> 330, 520, 960, 1761 +1869 <-> 2, 834 +1870 <-> 1244, 1422 +1871 <-> 1119 +1872 <-> 1784 +1873 <-> 242, 1866 +1874 <-> 337, 1109, 1131 +1875 <-> 795, 1403 +1876 <-> 258, 1754 +1877 <-> 34 +1878 <-> 481, 1691, 1758 +1879 <-> 1076, 1461 +1880 <-> 147, 410, 1723 +1881 <-> 520, 764, 1392, 1955 +1882 <-> 1834 +1883 <-> 319, 514 +1884 <-> 1969 +1885 <-> 740, 870, 1049 +1886 <-> 1013, 1368 +1887 <-> 1887 +1888 <-> 954, 1252, 1738 +1889 <-> 977 +1890 <-> 446, 530 +1891 <-> 1823 +1892 <-> 1124, 1892 +1893 <-> 395, 1187, 1893 +1894 <-> 988 +1895 <-> 733, 1681 +1896 <-> 11 +1897 <-> 77, 801 +1898 <-> 545, 1898 +1899 <-> 1005, 1293 +1900 <-> 511, 1276, 1862 +1901 <-> 1086, 1200 +1902 <-> 410 +1903 <-> 315, 990 +1904 <-> 422 +1905 <-> 1288, 1905 +1906 <-> 1229 +1907 <-> 1478, 1580 +1908 <-> 1464, 1644, 1859 +1909 <-> 706, 1360 +1910 <-> 569 +1911 <-> 310, 850, 1715 +1912 <-> 1912 +1913 <-> 279, 1132 +1914 <-> 614, 929, 1727 +1915 <-> 1474, 1775 +1916 <-> 1916 +1917 <-> 1258 +1918 <-> 382, 1777 +1919 <-> 41, 653 +1920 <-> 1280, 1637 +1921 <-> 933, 1506 +1922 <-> 167 +1923 <-> 857 +1924 <-> 222, 1526, 1924 +1925 <-> 231, 367, 1925 +1926 <-> 385, 422, 986 +1927 <-> 321, 513, 553 +1928 <-> 728, 1226 +1929 <-> 912, 952, 1965 +1930 <-> 1442 +1931 <-> 1073, 1489 +1932 <-> 1248, 1932 +1933 <-> 499, 877, 1098, 1385 +1934 <-> 1165 +1935 <-> 37, 631 +1936 <-> 283, 757, 1262 +1937 <-> 1858 +1938 <-> 109, 555, 1102 +1939 <-> 1085, 1329, 1577 +1940 <-> 902, 1940 +1941 <-> 364, 583 +1942 <-> 719, 1281 +1943 <-> 609, 760 +1944 <-> 230 +1945 <-> 1391, 1642 +1946 <-> 1093, 1426, 1516 +1947 <-> 1153 +1948 <-> 212, 296, 500, 1684 +1949 <-> 152, 737, 1386 +1950 <-> 133, 296 +1951 <-> 919, 1951 +1952 <-> 921 +1953 <-> 978, 1839 +1954 <-> 657 +1955 <-> 975, 1881 +1956 <-> 55, 71, 235, 742 +1957 <-> 1029, 1648 +1958 <-> 1958 +1959 <-> 886 +1960 <-> 196, 301, 495 +1961 <-> 674 +1962 <-> 576, 1022, 1047 +1963 <-> 883 +1964 <-> 832, 1195, 1610 +1965 <-> 1929 +1966 <-> 745, 1308 +1967 <-> 751 +1968 <-> 524, 1968 +1969 <-> 1076, 1184, 1790, 1884 +1970 <-> 983, 1970 +1971 <-> 1463 +1972 <-> 1730 +1973 <-> 457, 1318, 1421 +1974 <-> 1328, 1497, 1974 +1975 <-> 170, 1135, 1864 +1976 <-> 1596 +1977 <-> 70, 943, 1008 +1978 <-> 804 +1979 <-> 631 +1980 <-> 522, 742, 1743 +1981 <-> 1211, 1374 +1982 <-> 597, 1685, 1728 +1983 <-> 30, 931, 1313 +1984 <-> 109, 720 +1985 <-> 111 +1986 <-> 767 +1987 <-> 418, 701, 850 +1988 <-> 1061 +1989 <-> 1624 +1990 <-> 744 +1991 <-> 316 +1992 <-> 346, 562, 1040, 1081 +1993 <-> 685 +1994 <-> 573 +1995 <-> 381, 676, 1637, 1995 +1996 <-> 576, 652 +1997 <-> 554 +1998 <-> 168 +1999 <-> 818 From 548c1e21dab936b77cb9a802ab924f2330a76ea8 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Tue, 12 Dec 2017 14:38:36 -0500 Subject: [PATCH 26/55] Advent 2017 through Day 12 --- ipynb/Advent 2017.ipynb | 604 ++++++++++++++++++++++++++++++++++------ 1 file changed, 522 insertions(+), 82 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 73dfeb9..2fba0e1 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -8,7 +8,17 @@ "\n", "Peter Norvig\n", "\n", - "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). But this time, I won't write up my interpretation of each day's the puzzle description; you'll have to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to read those. I just show my solutions.\n", + "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). This time, my terms of engagement are a bit different:\n", + "\n", + "* I won't write a summary of each day's puzzle description. Follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to understand what each puzzle is asking. \n", + "* What you see is mostly the algorithm I first came up with first, although sometimes I go back and refactor if I think the original is unclear.\n", + "* I do clean up the code a bit even after I solve the puzzle: adding docstrings, changing variable names, changing input boxes to `assert` statements.\n", + "* I will describe my errors that slowed me down.\n", + "* Some days I start on time and try to code very quickly (although I know that people at the top of the leader board will be much faster than me); other days I end up starting late and don't worry about going quickly.\n", + "\n", + "\n", + "\n", + "\n", "\n", "# Day 0: Imports and Utility Functions\n", "\n", @@ -57,13 +67,13 @@ " return open('data/advent{}/input{}.txt'.format(year, day))\n", " \n", "def array(lines):\n", - " \"Parse an iterable of str lines into a 2-D array. If `lines` is a str, do splitlines.\"\n", + " \"Parse an iterable of str lines into a 2-D array. If `lines` is a str, splitlines.\"\n", " if isinstance(lines, str): lines = lines.splitlines()\n", " return mapt(vector, lines)\n", "\n", "def vector(line):\n", " \"Parse a str into a tuple of atoms (numbers or str tokens).\"\n", - " return mapt(atom, line.split())\n", + " return mapt(atom, line.replace(',', ' ').split())\n", "\n", "def atom(token):\n", " \"Parse a str token into a number, or leave it as a str.\"\n", @@ -127,7 +137,7 @@ " return overlapping(iterable, 2)\n", "\n", "def sequence(iterable, type=tuple):\n", - " \"Coerce iterable to sequence: leave it alone if it is already a sequence, else make it of type.\"\n", + " \"Coerce iterable to sequence: leave alone if already a sequence, else make it `type`.\"\n", " return iterable if isinstance(iterable, abc.Sequence) else type(iterable)\n", "\n", "def join(iterable, sep=''):\n", @@ -255,7 +265,7 @@ "def always(value): return (lambda *args: value)\n", "\n", "def Astar(start, moves_func, h_func, cost_func=always(1)):\n", - " \"Find a shortest sequence of states from start to a goal state (a state s with h_func(s) == 0).\"\n", + " \"Find a shortest sequence of states from start to a goal state (where h_func(s) == 0).\"\n", " frontier = [(h_func(start), start)] # A priority queue, ordered by path length, f = g + h\n", " previous = {start: None} # start state has no previous state; other states will\n", " path_cost = {start: 0} # The cost of the best path to a state.\n", @@ -323,7 +333,8 @@ " assert isqrt(9) == 3 == isqrt(10)\n", " assert ints(1, 100) == range(1, 101)\n", " assert identity('anything') == 'anything'\n", - " assert set(powerset({1, 2, 3})) == {(), (1,), (1, 2), (1, 2, 3), (1, 3), (2,), (2, 3), (3,)}\n", + " assert set(powerset({1, 2, 3})) == {\n", + " (), (1,), (1, 2), (1, 2, 3), (1, 3), (2,), (2, 3), (3,)}\n", " assert quantify(['testing', 1, 2, 3, int, len], callable) == 2 # int and len are callable\n", " assert quantify([0, False, None, '', [], (), {}, 42]) == 1 # Only 42 is truish\n", " assert set(shuffled('abc')) == set('abc')\n", @@ -359,7 +370,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# [Day 1](https://adventofcode.com/2017/day/1): Inverse Captcha\n" + "# [Day 1](https://adventofcode.com/2017/day/1): Inverse Captcha\n", + "\n", + "This was easier than I remember last year's puzzles being:\n" ] }, { @@ -426,14 +439,7 @@ "source": [ "sum(digits[i] \n", " for i in range(N) \n", - " if digits[i] == digits[i - N//2])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This was an easy warmup puzzle. " + " if digits[i] == digits[i - N // 2])" ] }, { @@ -527,16 +533,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This day was also very easy. In Part One, I was slowed down by a typo: I had `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"`. Later on, Alex Martelli explained to me that the message meant that in `abs(max(row)=...)` it thought that `max(row)` was a keyword argument to `abs`, as in `abs(x=-1)`.\n", + "This day was also very easy. It was nice that my pre-defined `array` function did the whole job of parsing the input. In Part One, I was slowed down by a typo: I had `\"=\"` instead of `\"-\"` in `\"max(row) - min(row)\"`. I was confused by Python's misleading error message, which said `\"SyntaxError: keyword can't be an expression\"`. Later on, Alex Martelli explained to me that the message meant that in `abs(max(row)=...)` it thought that `max(row)` was a keyword argument to `abs`, as in `abs(x=-1)`.\n", "\n", - "In Part Two, note that to check that `a/b` is an exact integer, I used `a // b == a / b`, which I think is more clear and less error-prone than the expression one would typically use here, `a % b == 0`, which requires you to think about two things: division and the modulus operator (is it `a % b` or `b % a`?)." + "In Part Two, note that to check that `a/b` is an exact integer, I used `a // b == a / b`, which I think is more clear than the marginally-faster expression one would typically use here, `a % b == 0`, which requires you to think about two things: division and the modulus operator (is it `a % b` or `b % a`?)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# [Day 3](https://adventofcode.com/2017/day/3): Spiral Memory" + "# [Day 3](https://adventofcode.com/2017/day/3): Spiral Memory\n", + "\n", + "For today the data is just one number:" ] }, { @@ -554,16 +562,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This one takes some thinking, not just fast typing. I analyzed the problem as having three parts:\n", - "- Generate a spiral\n", - "- Find the Nth square on the spiral. \n", - "- Find the distance from that square to the center.\n", + "This puzzle takes some thinking, not just fast typing. I decided to break the problem into three parts:\n", + "- Generate a spiral (by writing a new function called `spiral`).\n", + "- Find the Nth square on the spiral (with my function `nth`).\n", + "- Find the distance from that square to the center (with my function `cityblock_distance`).\n", "\n", - "I suspect many people will do all three of these in one function. That's probably the best way to get the answer quickly, but I'd rather be clear than quick, so I'll factor out each part, according to the single responsibility principle. My function `spiral()` will generate the coordinates of squares on an infinite spiral, in order, going out from the center square, `(0, 0)`.\n", + "I suspect many people will do all three of these in one function. That's probably the best way to get the answer really quickly, but I'd rather be clear than quick (and I'm anticipating that `spiral` will come in handy in Part Two), so I'll factor out each part, obeying the *single responsibility principle*. \n", "\n", - "How to make a spiral? My analysis is that, after the center square, the spiral goes 1 square right, then 1 square up, then 2 square left, then 2 square down, to complete one revolution; the next revolution starts with 3 square going up, and so on. I'll call each of these a `leg`, so `spiral` consists of four calls to `leg`, with increments to the `length` after every two legs. \n", - "\n", - "One thing is less clear than I would like: the variable `square` is modified by the function `leg` (in other words, it is an in/out parameter). A small test confirms that this matches the puzzle description:" + "Now I need to make `spiral()` generate the coordinates of squares on an infinite spiral, in order, going out from the center square, `(0, 0)`. After the center square, the spiral goes 1 square right, then 1 square up, then 2 square left, then 2 square down, thus completing one revolution; then it does subsequent revolutions. In general if the previous revolution ended with *s* squares down, then the next revolution consists of *s*+1 squares right, *s*+1 squares up, *s*+2 squares left and *s*+2 down. A small test confirms that this matches the example diagram in the puzzle description (although I had a bug on my first try because I only incremented `s` once per revolution, not twice):" ] }, { @@ -577,15 +583,15 @@ "data": { "text/plain": [ "[(0, 0),\n", - " (1, 0),\n", - " (1, 1),\n", " (0, 1),\n", " (-1, 1),\n", " (-1, 0),\n", " (-1, -1),\n", " (0, -1),\n", " (1, -1),\n", - " (2, -1)]" + " (1, 0),\n", + " (1, 1),\n", + " (1, 2)]" ] }, "execution_count": 10, @@ -595,24 +601,16 @@ ], "source": [ "def spiral():\n", - " \"Yield the (x, y) coordinates of successive points in an infinite spiral.\"\n", - " length = 1\n", - " square = [0, 0]\n", - " yield tuple(square)\n", + " \"Yield successive (x, y) coordinates of squares on a spiral.\"\n", + " x = y = s = 0 # (x, y) is the position; s is the side length.\n", + " yield (x, y)\n", " while True:\n", - " yield from leg(square, length, RIGHT)\n", - " yield from leg(square, length, UP)\n", - " length += 1\n", - " yield from leg(square, length, LEFT)\n", - " yield from leg(square, length, DOWN)\n", - " length += 1 \n", - " \n", - "def leg(square, length, delta):\n", - " \"Complete one leg of given length, mutating `square` and yielding a copy at each step.\"\n", - " for _ in range(length):\n", - " square[:] = (X(square) + X(delta), Y(square) + Y(delta))\n", - " yield tuple(square) \n", - " \n", + " for (dx, dy) in (RIGHT, UP, LEFT, DOWN):\n", + " if dy: s += 1 # Increment side length before RIGHT and LEFT\n", + " for _ in range(s):\n", + " x += dx; y += dy\n", + " yield (x, y)\n", + "\n", "list(islice(spiral(), 10))" ] }, @@ -620,7 +618,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can find the `N`th square. As this is Python, indexes start at 0, whereas the problem starts at 1, so I have to subtract 1. Then I can find the distance to the origin:" + "Now we can find the `N`th square. As this is Python, indexes start at 0, whereas the puzzle description starts counting at 1, so I have to subtract 1. Then I can find the distance to the origin:" ] }, { @@ -633,7 +631,7 @@ { "data": { "text/plain": [ - "(212, -263)" + "(263, 212)" ] }, "execution_count": 11, @@ -671,8 +669,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "That's the right answer. I was slow arriving at it because I forgot the second `length += 1` in `spiral` and it took a while to debug. (I had the right analysis, but just left out a line of code.)\n", - "\n", "For **Part Two** I can re-use my `spiral` generator, yay! Here's a function to sum the neighboring squares (I can use my `neighbors8` function, yay!):" ] }, @@ -771,11 +767,11 @@ } ], "source": [ - "def isvalid(line):\n", - " words = line.split()\n", - " return len(words) == len(set(words))\n", + "def is_valid(line): return is_unique(line.split())\n", "\n", - "quantify(Input(4), isvalid)" + "def is_unique(items): return len(items) == len(set(items))\n", + "\n", + "quantify(Input(4), is_valid)" ] }, { @@ -804,18 +800,16 @@ } ], "source": [ - "def isvalid2(line):\n", - " words = mapt(canon, line.split())\n", - " return len(words) == len(set(words))\n", + "def is_valid2(line): return is_unique(mapt(canon, line.split()))\n", "\n", - "quantify(Input(4), isvalid2)" + "quantify(Input(4), is_valid2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "That was easy, but the leaders were three times faster than me." + "That was easy, and I started on time, but the leaders were still three times faster than me!" ] }, { @@ -1167,7 +1161,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# [Day 7](https://adventofcode.com/2017/day/7): Memory Reallocation " + "# [Day 7](https://adventofcode.com/2017/day/7): Recursive Circus" ] }, { @@ -1275,7 +1269,10 @@ "\n", "def siblings(p): \n", " \"The other programs at the same level as this one.\"\n", - " return [] if p not in below else [s for s in above[below[p]] if s != p]\n", + " if p not in below:\n", + " return [] # the root has no siblings\n", + " else:\n", + " return [s for s in above[below[p]] if s != p]\n", "\n", "below = {a: b for b in programs for a in above[b]}" ] @@ -1457,7 +1454,7 @@ "source": [ "# [Day 9](https://adventofcode.com/2017/day/9): Stream Processing\n", "\n", - "For this problem I could have a complex finite-state machine that handles all the characters `'{}'`, but I think it is easier to clean up the garbage first:" + "For this problem I could have a single finite-state machine that handles all five magic characters, `'{}'`, but I think it is easier to first clean up the garbage, using regular expressions:" ] }, { @@ -1470,7 +1467,7 @@ { "data": { "text/plain": [ - "'{{{{{{{},},{{},}},{{{{}},{{{{{}}},{}},},{{{{},{,{{{}}}}},},{{{}},{{}}}}},{{,{}},{{},},{}}}},{{{{{}}},{}},{{{{},},{}},{{{}},{{{},},{}},{}},{{}}},{{,},{{{}},{{{{}},{{{},},{}}},{{{{},},{}}},{{{}},{{}}}}}}},{{{},{{}},{{{{},{}}},}},{{{}},{}},{{},{{},{}}},{{{}},{{}}}}},{{{{},{}}},{{},{{{{},{}},{{{},{{}}}}}},{{}}},{},{{{}}}},{{{{},{{{},{{},{}}}},{{{{},{}},{{}}}}}},{{{},{{{{}},{{},{}}},{{{,},{{}}},{{}},{{}}},{{}},{{{{},{},{{}}},{{{{}},{{{{{},{}}},{{}}},{,{}},{}},{}},{},{{{},{}}}},{{{{{},},{}},{,},{{}}},{,},{{{},},{{}}}},{{,},{{{{}},{}},{}},{{{},{}}}}},{{{},},{{},{{}}}},{},{{{{{},{}},{},{{}}},{,},{{},}},{{},{}},{{{}},{}}}}},{{{},},{{},{,{{,{}},}}}}},{},{{},{{},{}}},{{},{,},{,{}}}}},{{{{{{},{}}},{,{}},{{},{,{{}}}}},{{},{}}},{{{}},{{},{}},{{}}},{{{},{{},{}}},{{,}},{{,{}},{{{}},{}},{,{,{}}}}},{{{},{}}}},{{{{{}}},{}},{{{},{{{}},{}},{{},}},{{{},},{{,{}}},{{},{{},{}}}},{{{{}}}},{{{,},{}},{},{{},{{{},},{}}},{{{{{}},{{{},{{},}},}},{{},{}},{,{{},{}}}},{{,{}},{{,{}},}},{{,{}}}}}}}},{{{{{},},{{{{},{}}}}},{{{},},{{,{}},{{},{,{}}}}},{{{},{{{{}}},{}}},{{},{},{,}},{{},{{},}},{{{{}},{}},{{},{}},{{{{}}},{}}}},{{{}},{{},{}}}},{{{{{{},{}},{}},{{,},},{{,}}}},{},{},{{{,{}},{{},{}},{{{}},}},{{},{,},{}},{{{},{}}},{{{{}},},{{},},{{}}}}},{{{{{}},{,},{}},{{},{{{{{},},{{{},{}}}},{{},{{},}}},{},{{{{},{}},{}}}}}},{{},{{},{}}},{{{}},{{},},{,{{}}}}}},{{},{{{},{{}},{,{,}}},{{{}}},{{{{},{}},}}},{{{{,{}},{{,{}},{}}},{{{,{,}},{,}},{}},{{{{{},{}}},{{},{}},{{},{{{},}}}},{{{}}},{{{},{{},{}}}}},{}},{{}}},{{{,{{},{}}},{{},}},{{{}},{}},{{{},{}},{{{{}},{{},},{{{{}},{},{{{,{}},{}}}}}}},{,}},{{},{{{},{}},}}}},{{{{{{,{}},{{}},{{}}},{{{{{},{}},{{},{}},{{}}},{{}},{}},{{},},{,{}}},{{}},{{{}},{,},{,{}}}},{{{{}}},{{{,{}}},{{{}},{,}},{{},{{{}},{{},}},{{{}},{{},}},{{{,},{{{},{}},{}},{}},{{{}},{{},}},{{{{{{{},}}}},{{{,{{}}},{}},{,},{{{{}}},{{}}}},{{{}},{,{{},{}}}}}}}}},{{{}},{{},{}}},{{,},{,{,{}}}}},{{{}}},{{},{{}},{,}}},{{{{{{{},},{},{{{,{}},{}},}}},{},{{{}}}},{{,},{{,{}}},{{{},},}},{{{}},{{{,}},{}},{{}}}},{{},{,{}},{{},{{}}}},{{}},{{{},{{},},{}},{{}},{{},{}}}},{{{{}},{{},}},{{{{}},{{},{}}},{}},{{{{}},{},{{{{,{}}},{}}}},{{,{}},{{{{{},},{{{{}}},{,{}},{{}}}},{,},{}},{{}}},{{},}},{{{{},{{,{}},}},{{}},{{},}}},{{{},{{,{}}}},{{{},},},{{}}}}}},{{{{},},{{}}},{{{{{},{}}},{{,}}},{}},{{},{},{}}},{{{{{}},{{}},{}},{{},{{},{{{}},{{,},{{{},{}},{}},{{},}},{}},{{{{},{{{}},{{}}}}}},{{{},{,{{}}}},{{{,}}},{{{{{{},},{{{}},}},{}},{{}},{{{{}},{,{}}},}},{{{,}},{{{{}}},{},{{},}},{{{,{}},{,{}}},{{{}},{{{{},{}}},{{{{,},},}}},{{}}},{}}},{{},{{,{{},}},{{},}},{{{},{}},}},{{{},{}},{,{}},{,}}},{{{{},{{,{}}}}},{{}},{,}}}},{{,},{{},{}},{}},{{{{{{},{}},{}},{{{{},{}},{{}}},{,{{},{}}},{{},{,}}}},{{},{}}},{,},{{{},{}},{{},{}}}}},{{}},{{{{{{}},{{},{}},{{{},{{}}},{}}}},{{{{{},{{}}},{}}}},{{{}},{},{,{}}},{{{{}},{}},{{},{{{{},{{}}}}},{{{},{{}},{,{}}}}}}}}},{{{{{}},},{},{}},{}}},{{},{{{,{}},{,},{{}}},{}},{{,{}},{{{},},{}},{{{}},}},{{{{{}},},{{{,{}},},{,},{{{}},}},{}},{{{{}},{}},{{}}}}}},{{{{{,{}},{},{}},{{}}}},{{{,},{{{},{}}},{{{{},{{{},}}},{}},{{{},},{{,}}},{,{}}}},{{{{},{}},},{{,{{}}}},{{},{}}},{{{},}}},{},{{{{},},{{{}},{}},{{{{{}},{{}}},{}}}},{{{,},{{},{}}},{{},{{}}}},{{{},{{},{}}},{{{},}},{{{}},{},{,{}}},{{{},{{},{}},{,{}}}}}}}}\\n'" + "'{{{{{{{},},{{},}},{{{{}},{{{{{}}},{}},},{{{{},{,{{{}}}}},},{{{}},{{}}}'" ] }, "execution_count": 37, @@ -1479,22 +1476,22 @@ } ], "source": [ - "text1 = Input(9).read() # Read text\n", - "text2 = re.sub(r'!.', '', text1) # Delete canceled characters\n", - "text3 = re.sub(r'<.*?>', '', text2) # Delete garbage\n", - "text3" + "text1 = re.sub(r'!.', '', Input(9).read()) # Delete canceled characters\n", + "text2 = re.sub(r'<.*?>', '', text1) # Delete garbage\n", + "\n", + "text2[:70]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now I can deal with nested braces (which can't be handled with regular expressions):" + "Now I can deal with the nested braces (which can't be handled with regular expressions):" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 54, "metadata": { "collapsed": false }, @@ -1505,7 +1502,7 @@ "9662" ] }, - "execution_count": 38, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -1514,17 +1511,16 @@ "def total_score(text):\n", " \"Total of group scores; each group scores one more than the group it is nested in.\"\n", " total = 0\n", - " outer = [0] # Stack of scores of groups nested outside current group\n", + " level = 0 # Level of nesting\n", " for c in text:\n", " if c == '{':\n", - " score = outer[-1] + 1\n", - " total += score\n", - " outer.append(score)\n", + " total += level + 1\n", + " level += 1\n", " elif c == '}':\n", - " outer.pop()\n", + " level -= 1\n", " return total\n", "\n", - "total_score(text3)" + "total_score(text2)" ] }, { @@ -1555,19 +1551,19 @@ } ], "source": [ - "len(text2) - len(text3)" + "len(text1) - len(text2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "But that turned out to be wrong; that counts all of `'<...>'`, whereas I'm not suppossed to count the opening and closing angle brackets, just the `'...'` in the middle. So that would be:" + "But this turned out to be wrong; it counts the angle brackets themselves s being deleted, whereas the puzzle is actually asking how many character between the angle brackets are deleted. So that would be:" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1578,15 +1574,459 @@ "4903" ] }, - "execution_count": 41, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "text4 = re.sub(r'<.*?>', '<>', text2) # Delete inner garbage\n", + "text3 = re.sub(r'<.*?>', '<>', text1) # Delete garbage inside brackets, but not brackets\n", "\n", - "len(text2) - len(text4)" + "len(text1) - len(text3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 10](https://adventofcode.com/2017/day/10): Stream Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I have to do a bunch of reversals of substrings of `stream`. It looks complicated so I will include a `verbose` argument to `knothash` and confirm it works on the example puzzle. I break out the reversal into a separate function, `rev`. The way I handle reversal interacting with wraparound is that I first move all the items before the reversal position to the end of the list, then I do the reversal, then I move them back." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "stream = (63,144,180,149,1,255,167,84,125,65,188,0,2,254,229,24)\n", + "\n", + "def knothash(lengths, N=256, verbose=False):\n", + " \"Do a reversal for each of the numbers in `lengths`.\"\n", + " nums = list(range(N))\n", + " pos = skip = 0\n", + " for L in lengths:\n", + " nums = rev(nums, pos, L)\n", + " if verbose: print(nums)\n", + " pos = (pos + L + skip) % N\n", + " skip += 1\n", + " return nums[0] * nums[1]\n", + " \n", + "def rev(nums, pos, L):\n", + " \"Reverse nums[pos:pos+L], handling wrap-around.\"\n", + " # Move first pos elements to end, reverse first L, move pos elements back\n", + " nums = nums[pos:] + nums[:pos]\n", + " nums[:L] = reversed(nums[:L])\n", + " nums = nums[-pos:] + nums[:-pos]\n", + " return nums" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 1, 0, 3, 4]" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Reverse [0, 1, 2]:\n", + "rev(list(range(5)), 0, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 4, 2, 3, 1]" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Test that rev works when we wrap around: reverse [4, 0, 1]\n", + "rev(list(range(5)), 4, 3) " + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 1, 0, 3, 4]\n", + "[4, 3, 0, 1, 2]\n", + "[4, 3, 0, 1, 2]\n", + "[3, 4, 2, 1, 0]\n" + ] + }, + { + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Duplicate the example output\n", + "knothash((3, 4, 1, 5), N=5, verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's correct, but the first time through I got it wrong because I forgot the `\"% N\"` on the update of `pos`." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4480" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "knothash(stream)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**:\n", + "\n", + "Now it gets *really* complicated: string processing, the suffix, hex string output, and dense hashing. But just take them one at a time:" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'c500ffe015c83b60fad2e4b7d59dabc4'" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stream2 = '63,144,180,149,1,255,167,84,125,65,188,0,2,254,229,24'\n", + "\n", + "def knothash2(lengthstr, N=256, rounds=64, suffix=(17, 31, 73, 47, 23),\n", + " verbose=False):\n", + " \"Do a reversal for each length; repeat `rounds` times.\"\n", + " nums = list(range(N))\n", + " lengths = mapt(ord, lengthstr) + suffix\n", + " pos = skip = 0\n", + " for round in range(rounds):\n", + " for L in lengths:\n", + " nums = rev(nums, pos, L)\n", + " if verbose: print(nums)\n", + " pos = (pos + L + skip) % N\n", + " skip += 1\n", + " return hexstr(dense_hash(nums))\n", + "\n", + "def hexstr(nums): \n", + " \"Convert a sequence of (0 to 255) ints into a hex str.\"\n", + " return cat(map('{:02x}'.format, nums))\n", + " \n", + "def dense_hash(nums, blocksize=16): \n", + " \"XOR each block of nums, return the list of them.\"\n", + " return [XOR(block) for block in grouper(nums, blocksize)]\n", + "\n", + "def XOR(nums):\n", + " \"Exclusive-or all the numbers together.\"\n", + " result = 0\n", + " for n in nums:\n", + " result ^= n\n", + " return result\n", + " \n", + "assert XOR([65, 27, 9, 1, 4, 3, 40, 50, 91, 7, 6, 0, 2, 5, 68, 22]) == 64\n", + "\n", + "assert knothash2('') == 'a2582a3a0e66e6e86e3812dcb672a272'\n", + "\n", + "knothash2(stream2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I had a bug: originally I used `'{:x}'` as the format instead of `'{:02x}'`; the later correctly formats `0` as `'00'`, not `'0'`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 11](https://adventofcode.com/2017/day/11): Hex Ed\n", + "\n", + "The first thing I did was search `[hex coordinates]`, and the #1 result (as I expected) was Amit Patel's \"[Hexagonal Grids](https://www.redblobgames.com/grids/hexagons/)\" page. I chose his \"odd-q vertical layout\" to define the six directions as (dx, dy) deltas:" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "directions6 = dict(n=(0, -1), ne=(1, 0), se=(1, 1), s=(0, 1), sw=(-1, 0), nw=(-1, -1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now I can read the path, follow it, and see where it ends up. If the end point is `(x, y)`, then it will take `max(abs(x), abs(y))` steps to get back to the origin, because each step can increment or decrement either `x` or `y` or both." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "705" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = Input(11).read().strip().split(',')\n", + "\n", + "def follow(path):\n", + " \"Follow each step of the path; return final distance to origin.\"\n", + " x, y = (0, 0)\n", + " for (dx, dy) in map(directions6.get, path):\n", + " x += dx; y += dy\n", + " return max(abs(x), abs(y))\n", + "\n", + "follow(path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This one seemed so easy that I didn't bother testing it on the simple examples in the puzzle; all I did was confirm that the answer for my puzzle input was correct.\n", + "\n", + "**Part Two:**\n", + "\n", + "This looks pretty easy; repeat Part One, but keep track of the maximum number of steps we get from the origin at any point in the path:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1469" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def follow2(path):\n", + " \"Follow each step of the path; return max steps to origin.\"\n", + " x = y = maxsteps = 0\n", + " for (dx, dy) in map(directions6.get, path):\n", + " x += dx; y += dy\n", + " maxsteps = max(maxsteps, abs(x), abs(y))\n", + " return maxsteps\n", + "\n", + "follow2(path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, no tests, just the final answer.\n", + "\n", + "# [Day 12](https://adventofcode.com/2017/day/12): Digital Plumber\n", + "\n", + "First I'll parse the data, creating a dict of `{program: direct_group_of_proggrams}`:" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{0, 659, 737}" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def groups(lines):\n", + " \"Dict of {i: {directly_connected_to_i}\"\n", + " return {lhs: {lhs} | set(rhs)\n", + " for (lhs, _, *rhs) in array(lines)}\n", + " \n", + "groups(Input(12))[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks good. I recognize this as a [Union-Find](https://en.wikipedia.org/wiki/Disjoint-set_data_structure) problem, for which there are efficient algorithms. But for this small example, I don't need efficiency, I need clarity and simplicity. So I'll write `merge` to take a dict and merge together the sets that are connected:" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def merge(G):\n", + " \"Merge all indirectly connected groups together.\"\n", + " for i in G:\n", + " for j in list(G[i]):\n", + " if G[i] != G[j]:\n", + " G[i].update(G[j])\n", + " G[j] = G[i]\n", + " return G\n", + "\n", + "G = merge(groups(Input(12)))" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "115" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(G[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's the answer for Part One.\n", + "\n", + "**Part Two**\n", + "\n", + "I did almost all the work; I just need to count the unique groups. The minimum value in a group uniquely identifies it, so:" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "221" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len({min(G[i]) for i in G})" ] } ], From d76d3b42ff9750f5460f729e32b181e4c0cbc06d Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Tue, 12 Dec 2017 14:49:56 -0500 Subject: [PATCH 27/55] Advent 2017 through Day 12 --- ipynb/Advent 2017.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 2fba0e1..d6f964c 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -1917,7 +1917,7 @@ "\n", "# [Day 12](https://adventofcode.com/2017/day/12): Digital Plumber\n", "\n", - "First I'll parse the data, creating a dict of `{program: direct_group_of_proggrams}`:" + "First I'll parse the data, creating a dict of `{program: direct_group_of_programs}`:" ] }, { @@ -2004,12 +2004,12 @@ "\n", "**Part Two**\n", "\n", - "I did almost all the work; I just need to count the unique groups. The minimum value in a group uniquely identifies it, so:" + "I did almost all the work; I just need to count the number of distinct groups. That's a set of sets, so I have to use my `Set` class (because regular `set`s are not hashable):" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 56, "metadata": { "collapsed": false }, @@ -2020,13 +2020,13 @@ "221" ] }, - "execution_count": 53, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len({min(G[i]) for i in G})" + "len({Set(G[i]) for i in G})" ] } ], From 038b8c35eba9c01f782ee4c9d018090512f0f6e3 Mon Sep 17 00:00:00 2001 From: Thomas Broadley Date: Thu, 14 Dec 2017 20:50:09 -0500 Subject: [PATCH 28/55] Fix typos --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c5ade04..9c1edc8 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the f |[World's Longest Palindrome](https://github.com/norvig/pytudes/blob/master/ipynb/pal3.ipynb)
*Searching for a long Panama-style palindrome, this time letter-by-letter.*| |[Refactoring a Crossword Game Program](https://github.com/norvig/pytudes/blob/master/ipynb/Scrabble.ipynb)
*Refactoring the Scrabble / Word with Friends game from Udacity 212.*| |[xkcd 1313: Regex Golf](https://github.com/norvig/pytudes/blob/master/ipynb/xkcd1313.ipynb)
*Find the smallest regular expression; inspired by Randall Monroe.*| -|[xkcd 1313: Regex Golf (Part 2: Infinite Problems)](https://github.com/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb)
*Regex Golf: better, faster, funer. With Stefan Pochmann.*| +|[xkcd 1313: Regex Golf (Part 2: Infinite Problems)](https://github.com/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb)
*Regex Golf: better, faster, funner. With Stefan Pochmann.*| |[Let's Code About Bike Locks](https://github.com/norvig/pytudes/blob/master/ipynb/Fred%20Buns.ipynb)
*A tale of a bicycle combination lock that uses letters instead of digits. Inspired by Bike Snob NYC.*| |[Gesture Typing](https://github.com/norvig/pytudes/blob/master/ipynb/Gesture%20Typing.ipynb)
*What word has the longest path on a gesture-typing smartphone keyboard? Inspired by Nicolas Schank and Shumin Zhai.*| |[How to Do Things with Words, or Statistical Natural Language Processing in Python](https://github.com/norvig/pytudes/blob/master/ipynb/How%20to%20Do%20Things%20with%20Words.ipynb)
*Spelling Correction, Secret Codes, Word Segmentation, and more: grab your bag of words.*| From 43dc88d8e04837cbcb5b92b76c16a4ae6bd6bbe2 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Fri, 15 Dec 2017 00:55:17 -0800 Subject: [PATCH 29/55] Advent 2017 through Day 15 --- ipynb/Advent 2017.ipynb | 539 ++++++++++++++++++++++++++++++++++------ 1 file changed, 460 insertions(+), 79 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index d6f964c..0267aa5 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -45,6 +45,7 @@ "\n", "from collections import Counter, defaultdict, namedtuple, deque, abc, OrderedDict\n", "from functools import lru_cache\n", + "from statistics import mean, median, mode, stdev, variance\n", "from itertools import (permutations, combinations, chain, cycle, product, islice, \n", " takewhile, zip_longest, count as count_from)\n", "from heapq import heappop, heappush\n", @@ -75,6 +76,10 @@ " \"Parse a str into a tuple of atoms (numbers or str tokens).\"\n", " return mapt(atom, line.replace(',', ' ').split())\n", "\n", + "def integers(text): \n", + " \"Return a tuple of all integers in a string.\"\n", + " return mapt(int, re.findall(r'\\b[-+]?\\d+\\b', text))\n", + "\n", "def atom(token):\n", " \"Parse a str token into a number, or leave it as a str.\"\n", " try:\n", @@ -175,11 +180,6 @@ "def mapt(fn, *args): \n", " \"Do a map, and make the results into a tuple.\"\n", " return tuple(map(fn, *args))\n", - "\n", - "def most_common(seq):\n", - " \"The item that appears most frequently in sequence.\"\n", - " [(item, count)] = Counter(seq).most_common(1)\n", - " return item\n", " \n", "################ Math Functions\n", " \n", @@ -457,7 +457,7 @@ }, "outputs": [], "source": [ - "rows = array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", + "rows2 = array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", "302\t463\t59\t58\t55\t87\t508\t54\t472\t63\t469\t419\t424\t331\t337\t72\n", "899\t962\t77\t1127\t62\t530\t78\t880\t129\t1014\t93\t148\t239\t288\t357\t424\n", "2417\t2755\t254\t3886\t5336\t3655\t5798\t3273\t5016\t178\t270\t6511\t223\t5391\t1342\t2377\n", @@ -494,7 +494,7 @@ } ], "source": [ - "sum(abs(max(row) - min(row)) for row in rows)" + "sum(abs(max(row) - min(row)) for row in rows2)" ] }, { @@ -526,7 +526,7 @@ "def evendiv(row): \n", " return first(a // b for a in row for b in row if a > b and a // b == a / b)\n", "\n", - "sum(map(evendiv, rows))" + "sum(map(evendiv, rows2))" ] }, { @@ -555,7 +555,7 @@ }, "outputs": [], "source": [ - "N = 277678" + "M = 277678" ] }, { @@ -640,7 +640,7 @@ } ], "source": [ - "nth(spiral(), N - 1)" + "nth(spiral(), M - 1)" ] }, { @@ -736,7 +736,7 @@ } ], "source": [ - "first(x for x in spiralsums() if x > N)" + "first(x for x in spiralsums() if x > M)" ] }, { @@ -1193,7 +1193,7 @@ " for line in lines:\n", " name, w, *rest = re.findall(r'\\w+', line)\n", " weight[name] = int(w)\n", - " above[name] = rest\n", + " above[name] = set(rest)\n", " return weight, above\n", "\n", "weight, above = towers(Input(7))\n", @@ -1265,14 +1265,16 @@ }, "outputs": [], "source": [ - "def tower_weight(p): return weight[p] + sum(map(tower_weight, above[p]))\n", + "def tower_weight(p): \n", + " \"Total weight for the tower whose root (bottom) is p.\"\n", + " return weight[p] + sum(map(tower_weight, above[p]))\n", "\n", "def siblings(p): \n", " \"The other programs at the same level as this one.\"\n", " if p not in below:\n", - " return [] # the root has no siblings\n", + " return Ø # the root has no siblings\n", " else:\n", - " return [s for s in above[below[p]] if s != p]\n", + " return above[below[p]] - {p}\n", "\n", "below = {a: b for b in programs for a in above[b]}" ] @@ -1337,7 +1339,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now what should we correct it to? To the weight that makes it the same weight as sibling towers:" + "Now what should we correct it to? To the weight that makes it the same weight as the sibling towers:" ] }, { @@ -1395,7 +1397,7 @@ } ], "source": [ - "program = array(Input(8))\n", + "program8 = array(Input(8))\n", "\n", "def run8(program):\n", " \"Run the program and return final value of registers.\"\n", @@ -1405,7 +1407,7 @@ " registers[r] += delta * (+1 if inc == 'inc' else -1)\n", " return registers\n", "\n", - "max(run8(program).values())" + "max(run8(program8).values())" ] }, { @@ -1445,7 +1447,7 @@ " highest = max(highest, registers[r])\n", " return highest\n", "\n", - "run82(program)" + "run82(program8)" ] }, { @@ -1486,12 +1488,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now I can deal with the nested braces (which can't be handled with regular expressions):" + "Now I can deal with the nested braces (which can't be handled with regular expressions). The puzzle says \"*Each group is assigned a score which is one more than the score of the group that immediately contains it,*\" which is the same as saying that a group's score is its nesting level, a quantity that increases with each open-brace character, and decreases with each close-brace:" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1502,7 +1504,7 @@ "9662" ] }, - "execution_count": 54, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1514,8 +1516,8 @@ " level = 0 # Level of nesting\n", " for c in text:\n", " if c == '{':\n", - " total += level + 1\n", " level += 1\n", + " total += level\n", " elif c == '}':\n", " level -= 1\n", " return total\n", @@ -1635,21 +1637,10 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[2, 1, 0, 3, 4]" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Reverse [0, 1, 2]:\n", - "rev(list(range(5)), 0, 3)" + "assert rev(list(range(5)), 0, 3) == [2, 1, 0, 3, 4]" ] }, { @@ -1658,21 +1649,10 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 4, 2, 3, 1]" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Test that rev works when we wrap around: reverse [4, 0, 1]\n", - "rev(list(range(5)), 4, 3) " + "# Reverse [4, 0, 1], wrapping around:\n", + "assert rev(list(range(5)), 4, 3) == [0, 4, 2, 3, 1]" ] }, { @@ -1691,21 +1671,11 @@ "[4, 3, 0, 1, 2]\n", "[3, 4, 2, 1, 0]\n" ] - }, - { - "data": { - "text/plain": [ - "12" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "# Duplicate the example output\n", - "knothash((3, 4, 1, 5), N=5, verbose=True)" + "assert knothash((3, 4, 1, 5), N=5, verbose=True) == 12" ] }, { @@ -1797,6 +1767,7 @@ " return result\n", " \n", "assert XOR([65, 27, 9, 1, 4, 3, 40, 50, 91, 7, 6, 0, 2, 5, 68, 22]) == 64\n", + "assert hexstr([255, 0, 17]) == 'ff0011'\n", "\n", "assert knothash2('') == 'a2582a3a0e66e6e86e3812dcb672a272'\n", "\n", @@ -1816,7 +1787,7 @@ "source": [ "# [Day 11](https://adventofcode.com/2017/day/11): Hex Ed\n", "\n", - "The first thing I did was search `[hex coordinates]`, and the #1 result (as I expected) was Amit Patel's \"[Hexagonal Grids](https://www.redblobgames.com/grids/hexagons/)\" page. I chose his \"odd-q vertical layout\" to define the six directions as (dx, dy) deltas:" + "The first thing I did was search [`[hex coordinates]`](https://www.google.com/search?source=hp&ei=Ft4xWoOqKcy4jAOs76a4CQ&q=hex+coordinates), and the #1 result (as I expected) was Amit Patel's \"[Hexagonal Grids](https://www.redblobgames.com/grids/hexagons/)\" page. I chose his \"odd-q vertical layout\" to define the six directions as (dx, dy) deltas:" ] }, { @@ -1856,7 +1827,7 @@ } ], "source": [ - "path = Input(11).read().strip().split(',')\n", + "path = vector(Input(11).read())\n", "\n", "def follow(path):\n", " \"Follow each step of the path; return final distance to origin.\"\n", @@ -1926,25 +1897,14 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "{0, 659, 737}" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "def groups(lines):\n", " \"Dict of {i: {directly_connected_to_i}\"\n", " return {lhs: {lhs} | set(rhs)\n", " for (lhs, _, *rhs) in array(lines)}\n", " \n", - "groups(Input(12))[0]" + "assert groups(Input(12))[0] == {0, 659, 737}" ] }, { @@ -2004,7 +1964,95 @@ "\n", "**Part Two**\n", "\n", - "I did almost all the work; I just need to count the number of distinct groups. That's a set of sets, so I have to use my `Set` class (because regular `set`s are not hashable):" + "I did almost all the work; I just need to count the number of distinct groups. That's a set of sets, and regular `set`s are not hashable, so I use my `Set` class:" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "221" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len({Set(G[i]) for i in G})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 13](https://adventofcode.com/2017/day/13): Packet Scanners\n", + "\n", + "First thing: The puzzle says the data is *depth: range*, but `range` has a meaning in Python, so I'll use the term *width* instead.\n", + "\n", + "Second thing: I misread the puzzle description and mistakenly thought the scanners were going in a circular route,\n", + "so that they'd be at the top at any time that is 0 mod *width*. That gave the wrong answer and I realized the scanners are actually going back-and-forth, so with a width of size *n*, it takes *n* - 1 steps to get to the bottom, and *n* - 1 steps to get back to the top, so the scanner will be \n", + "at the top at times that are multiples of 2(*n* - 1). For example, with width 3, that would be times 0, 4, 8, ... " + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def trip_severity(scanners): \n", + " \"The sum of sevrities for each time the packet is caught.\"\n", + " return sum((d * w if caught(d, w) else 0) \n", + " for (d, w) in scanners)\n", + "\n", + "def caught(depth, width):\n", + " \"Does the scanner at this depth/width catch the packet?\"\n", + " return depth % (2 * (width - 1)) == 0\n", + "\n", + "example = ((0, 3), (1, 2), (4, 4), (6, 4))\n", + "assert trip_severity(example) == 24" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1504" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scanners = mapt(integers, Input(13))\n", + "trip_severity(scanners)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "A packet is safe if no scanner catches it. We now have the possibility of a delay, so I update `caught` to allow for an optional delay, and define `safe_delay`: " ] }, { @@ -2017,7 +2065,7 @@ { "data": { "text/plain": [ - "221" + "10" ] }, "execution_count": 56, @@ -2026,7 +2074,340 @@ } ], "source": [ - "len({Set(G[i]) for i in G})" + "def caught(depth, width, delay=0):\n", + " \"Does the scanner at this depth/width catch the packet with this delay?\"\n", + " return (depth + delay) % (2 * (width - 1)) == 0 \n", + "\n", + "def safe_delay(scanners):\n", + " \"Find the first delay such that no scanner catches the packet.\"\n", + " safe = lambda delay: not any(caught(d, w, delay) for (d, w) in scanners)\n", + " return first(filter(safe, count_from(0)))\n", + "\n", + "safe_delay(example)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3823370" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "safe_delay(scanners)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 14](https://adventofcode.com/2017/day/14): Disk Defragmentation\n", + "\n", + "I found this puzzle description confusing: are they talking about what I call `knothash`, or is it `knothash2`? I decided for the latter, which turned out to be right:" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "key = 'ljoxqyyw'" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "8316" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def bits(key, i):\n", + " \"The bits in the hash of this key with this row number.\"\n", + " hash = knothash2(key + '-' + str(i))\n", + " return format(int(hash, base=16), '0128b')\n", + "\n", + "sum(bits(key, i).count('1') for i in range(128))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "So as not to worry about running off the edge of the grid, I'll surround the grid with `'0'` bits:" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def Grid(key, N=128+2):\n", + " \"Make a grid, with a border around it.\"\n", + " rows = [['0'] + list(bits(key, i)) + ['0'] for i in range(128)]\n", + " empty = ['0'] * len(rows[0])\n", + " return [empty] + rows + [empty]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To find a region, start at some `(x, y)` position and [flood fill](https://en.wikipedia.org/wiki/Flood_fill) to neighbors that have the same value (a `'1'` bit)." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def flood(grid, x, y, val, R):\n", + " \"For all cells with value val connected to grid[x][y], give them region number R.\"\n", + " if grid[y][x] == val:\n", + " grid[y][x] = R\n", + " for x2, y2 in neighbors4((x, y)):\n", + " flood(grid, x2, y2, val, R)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def flood_all(grid, val='1'):\n", + " \"Label all regions with consecutive ints starting at 1.\"\n", + " R = 0 # R is the region number\n", + " for y in range(1, len(grid) - 1):\n", + " for x in range(1, len(grid) - 1):\n", + " if grid[y][x] == val:\n", + " R += 1\n", + " flood(grid, x, y, val, R)\n", + " return R " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1074" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "flood_all(Grid(key))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 15](https://adventofcode.com/2017/day/15): Dueling Generators\n", + "\n", + "There are lots of arbitrary integers below: my personalized inputs are `516` and `190`; the other numbers are shared by all puzzle-solvers. I decided to make infinite generators of numbers, using `gen`:" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "597" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def gen(prev, factor, m=2147483647):\n", + " \"Generate an infinite sequence of numbers according to the rules.\"\n", + " while True:\n", + " prev = (prev * factor) % m\n", + " yield prev\n", + " \n", + "def judge(A, B, N=40*10**6, b=16): \n", + " \"How many of the first N pairs from A and B agree in the last b bits?\"\n", + " m = 2 ** b\n", + " return quantify(next(A) % m == next(B) % m\n", + " for _ in range(N))\n", + " \n", + "A = lambda: gen(516, 16807)\n", + "B = lambda: gen(190, 48271)\n", + "\n", + "judge(A(), B())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "A small change: only consider numbers that match the **criteria** of being divisible by 4 or 8, respectively;" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "303" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def criteria(m, iterable): \n", + " \"Elements of iterable that are divisible by m\"\n", + " return (n for n in iterable if n % m == 0)\n", + " \n", + "judge(criteria(4, A()), criteria(8, B()), 5*10**6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Wrapping Up: Verification and Timing\n", + "\n", + "Here is a little test harness to verify that I still get the right answers (even if I refactor some of the code):" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def day(n, compute1, answer1, compute2, answer2):\n", + " \"Assert that we get the right answers for this day.\"\n", + " assert compute1 == answer1\n", + " assert compute2 == answer2\n", + "\n", + "day(1, sum(digits[i] for i in range(N) if digits[i] == digits[i - 1]), 1158,\n", + " sum(digits[i] for i in range(N) if digits[i] == digits[i - N // 2]), 1132)\n", + "day(2, sum(abs(max(row) - min(row)) for row in rows2), 46402, \n", + " sum(map(evendiv, rows2)), 265)\n", + "day(3, cityblock_distance(nth(spiral(), M - 1)), 475, \n", + " first(x for x in spiralsums() if x > M), 279138)\n", + "day(4, quantify(Input(4), is_valid), 337, quantify(Input(4), is_valid2), 231)\n", + "day(5, run(program), 364539, run2(program), 27477714)\n", + "day(6, realloc(banks), 12841, realloc2(banks), 8038)\n", + "day(7, first(programs - set(flatten(above.values()))), 'wiapj', \n", + " correct(wrongest(programs)), 1072)\n", + "day(8, max(run8(program8).values()), 6828, run82(program8), 7234)\n", + "day(9, total_score(text2), 9662, len(text1) - len(text3), 4903)\n", + "day(10, knothash(stream), 4480, \n", + " knothash2(stream2), 'c500ffe015c83b60fad2e4b7d59dabc4')\n", + "day(11, follow(path), 705, follow2(path), 1469)\n", + "day(12, len(G[0]), 115, len({Set(G[i]) for i in G}), 221)\n", + "day(13, trip_severity(scanners), 1504, safe_delay(scanners), 3823370)\n", + "day(14, sum(bits(key, i).count('1') for i in range(128)), 8316, \n", + " flood_all(Grid(key)), 1074)\n", + "day(15, judge(A(), B()), 597, \n", + " judge(criteria(4, A()), criteria(8, B()), 5*10**6), 303)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here is a plot of the time taken to completely solve both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, I estimate my time and mark it with parens below:" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_times(times):\n", + " X = ints(1, len(times[0][2:]))\n", + " for (label, mark, *Y) in times:\n", + " plt.plot(X, Y, mark, label=label)\n", + " plt.xlabel('Day Number'); plt.ylabel('Minutes')\n", + " plt.legend()\n", + "\n", + "x = None\n", + "plot_times([\n", + " ('Me', 'd:', (4), 6,(20), 5, 12, 30, 33,(10), 21, 40, 13, 12,(30),(40), 13),\n", + " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10),\n", + " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2)])" ] } ], From 7dbee85fddae977c36c027a6016060e4a670bdcc Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sat, 16 Dec 2017 18:05:03 -0800 Subject: [PATCH 30/55] Advent 2017 through Dec. 16 --- ipynb/Advent 2017.ipynb | 617 +++++++++++++++++++++++++--------------- 1 file changed, 380 insertions(+), 237 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 0267aa5..0f8750a 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -29,7 +29,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -290,9 +290,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -377,22 +375,30 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2014" + ] + }, + "execution_count": 183, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "digits = mapt(int, '3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763')\n", - "N = len(digits)" + "N = len(digits)\n", + "N" ] }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -421,9 +427,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -478,9 +482,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -507,9 +509,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -575,9 +575,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -624,9 +622,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -646,9 +642,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -691,9 +685,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -720,9 +712,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -751,9 +741,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -784,9 +772,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -824,9 +810,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -857,9 +841,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -898,9 +880,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -954,9 +934,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1027,9 +1005,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1049,9 +1025,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1078,9 +1052,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1107,9 +1079,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1137,10 +1107,8 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -1148,7 +1116,7 @@ "8038" ] }, - "execution_count": 27, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1180,7 +1148,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 30, "metadata": { "collapsed": true }, @@ -1210,10 +1178,8 @@ }, { "cell_type": "code", - "execution_count": 29, - "metadata": { - "collapsed": false - }, + "execution_count": 31, + "metadata": {}, "outputs": [ { "data": { @@ -1221,7 +1187,7 @@ "{'wiapj'}" ] }, - "execution_count": 29, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1241,9 +1207,9 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 32, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1259,9 +1225,9 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 33, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1281,10 +1247,8 @@ }, { "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, + "execution_count": 34, + "metadata": {}, "outputs": [ { "data": { @@ -1292,7 +1256,7 @@ "{'eionkb', 'lsire', 'wiapj', 'ycpcv'}" ] }, - "execution_count": 32, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1310,10 +1274,8 @@ }, { "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, + "execution_count": 35, + "metadata": {}, "outputs": [ { "data": { @@ -1321,7 +1283,7 @@ "'eionkb'" ] }, - "execution_count": 33, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1344,10 +1306,8 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": { - "collapsed": false - }, + "execution_count": 38, + "metadata": {}, "outputs": [ { "data": { @@ -1355,7 +1315,7 @@ "1072" ] }, - "execution_count": 34, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1380,10 +1340,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, + "execution_count": 39, + "metadata": {}, "outputs": [ { "data": { @@ -1391,7 +1349,7 @@ "6828" ] }, - "execution_count": 35, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1421,10 +1379,8 @@ }, { "cell_type": "code", - "execution_count": 36, - "metadata": { - "collapsed": false - }, + "execution_count": 40, + "metadata": {}, "outputs": [ { "data": { @@ -1432,7 +1388,7 @@ "7234" ] }, - "execution_count": 36, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1461,10 +1417,8 @@ }, { "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": false - }, + "execution_count": 41, + "metadata": {}, "outputs": [ { "data": { @@ -1472,7 +1426,7 @@ "'{{{{{{{},},{{},}},{{{{}},{{{{{}}},{}},},{{{{},{,{{{}}}}},},{{{}},{{}}}'" ] }, - "execution_count": 37, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1493,10 +1447,8 @@ }, { "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": false - }, + "execution_count": 42, + "metadata": {}, "outputs": [ { "data": { @@ -1504,7 +1456,7 @@ "9662" ] }, - "execution_count": 38, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1536,10 +1488,8 @@ }, { "cell_type": "code", - "execution_count": 39, - "metadata": { - "collapsed": false - }, + "execution_count": 43, + "metadata": {}, "outputs": [ { "data": { @@ -1547,7 +1497,7 @@ "5989" ] }, - "execution_count": 39, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1565,10 +1515,8 @@ }, { "cell_type": "code", - "execution_count": 40, - "metadata": { - "collapsed": false - }, + "execution_count": 44, + "metadata": {}, "outputs": [ { "data": { @@ -1576,7 +1524,7 @@ "4903" ] }, - "execution_count": 40, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1603,9 +1551,9 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 45, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1633,9 +1581,9 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 46, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1645,9 +1593,9 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 47, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1657,10 +1605,8 @@ }, { "cell_type": "code", - "execution_count": 44, - "metadata": { - "collapsed": false - }, + "execution_count": 48, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1687,10 +1633,8 @@ }, { "cell_type": "code", - "execution_count": 45, - "metadata": { - "collapsed": false - }, + "execution_count": 49, + "metadata": {}, "outputs": [ { "data": { @@ -1698,7 +1642,7 @@ "4480" ] }, - "execution_count": 45, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1718,10 +1662,8 @@ }, { "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": false - }, + "execution_count": 50, + "metadata": {}, "outputs": [ { "data": { @@ -1729,7 +1671,7 @@ "'c500ffe015c83b60fad2e4b7d59dabc4'" ] }, - "execution_count": 46, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -1792,7 +1734,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 51, "metadata": { "collapsed": true }, @@ -1810,10 +1752,8 @@ }, { "cell_type": "code", - "execution_count": 48, - "metadata": { - "collapsed": false - }, + "execution_count": 52, + "metadata": {}, "outputs": [ { "data": { @@ -1821,7 +1761,7 @@ "705" ] }, - "execution_count": 48, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -1852,10 +1792,8 @@ }, { "cell_type": "code", - "execution_count": 49, - "metadata": { - "collapsed": false - }, + "execution_count": 53, + "metadata": {}, "outputs": [ { "data": { @@ -1863,7 +1801,7 @@ "1469" ] }, - "execution_count": 49, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -1893,9 +1831,9 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 54, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1916,9 +1854,9 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 55, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1936,10 +1874,8 @@ }, { "cell_type": "code", - "execution_count": 52, - "metadata": { - "collapsed": false - }, + "execution_count": 56, + "metadata": {}, "outputs": [ { "data": { @@ -1947,7 +1883,7 @@ "115" ] }, - "execution_count": 52, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1969,10 +1905,8 @@ }, { "cell_type": "code", - "execution_count": 53, - "metadata": { - "collapsed": false - }, + "execution_count": 57, + "metadata": {}, "outputs": [ { "data": { @@ -1980,7 +1914,7 @@ "221" ] }, - "execution_count": 53, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -2004,9 +1938,9 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 58, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -2025,10 +1959,29 @@ }, { "cell_type": "code", - "execution_count": 55, - "metadata": { - "collapsed": false - }, + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((0, 3), (1, 2), (2, 4), (4, 6), (6, 4))" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scanners = mapt(integers, Input(13))\n", + "scanners[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, "outputs": [ { "data": { @@ -2036,13 +1989,12 @@ "1504" ] }, - "execution_count": 55, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "scanners = mapt(integers, Input(13))\n", "trip_severity(scanners)" ] }, @@ -2057,10 +2009,8 @@ }, { "cell_type": "code", - "execution_count": 56, - "metadata": { - "collapsed": false - }, + "execution_count": 60, + "metadata": {}, "outputs": [ { "data": { @@ -2068,7 +2018,7 @@ "10" ] }, - "execution_count": 56, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -2088,10 +2038,8 @@ }, { "cell_type": "code", - "execution_count": 57, - "metadata": { - "collapsed": false - }, + "execution_count": 61, + "metadata": {}, "outputs": [ { "data": { @@ -2099,7 +2047,7 @@ "3823370" ] }, - "execution_count": 57, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -2119,9 +2067,9 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 62, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -2130,10 +2078,8 @@ }, { "cell_type": "code", - "execution_count": 72, - "metadata": { - "collapsed": false - }, + "execution_count": 63, + "metadata": {}, "outputs": [ { "data": { @@ -2141,7 +2087,7 @@ "8316" ] }, - "execution_count": 72, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -2166,9 +2112,9 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 64, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -2188,9 +2134,9 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 65, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -2204,9 +2150,9 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 66, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -2223,10 +2169,8 @@ }, { "cell_type": "code", - "execution_count": 73, - "metadata": { - "collapsed": false - }, + "execution_count": 67, + "metadata": {}, "outputs": [ { "data": { @@ -2234,7 +2178,7 @@ "1074" ] }, - "execution_count": 73, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } @@ -2254,10 +2198,8 @@ }, { "cell_type": "code", - "execution_count": 64, - "metadata": { - "collapsed": false - }, + "execution_count": 68, + "metadata": {}, "outputs": [ { "data": { @@ -2265,7 +2207,7 @@ "597" ] }, - "execution_count": 64, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -2300,10 +2242,8 @@ }, { "cell_type": "code", - "execution_count": 65, - "metadata": { - "collapsed": false - }, + "execution_count": 69, + "metadata": {}, "outputs": [ { "data": { @@ -2311,7 +2251,7 @@ "303" ] }, - "execution_count": 65, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -2324,6 +2264,200 @@ "judge(criteria(4, A()), criteria(8, B()), 5*10**6)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 16](https://adventofcode.com/2017/day/16): Permutation Promenade\n", + "\n", + "Let's read the input and check that it looks reasonable:" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('x5/15',\n", + " 's15',\n", + " 'x1/3',\n", + " 'pn/f',\n", + " 'x11/2',\n", + " 's13',\n", + " 'x6/3',\n", + " 'pe/a',\n", + " 'x14/12',\n", + " 's15')" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dance = vector(Input(16).read())\n", + "dance[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10000" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(dance)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I'll define `perform` to perform the dance:" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'lbdiomkhgcjanefp'" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dancers = 'abcdefghijklmnop'\n", + "\n", + "def perform(dance, dancers=dancers):\n", + " D = deque(dancers)\n", + " def swap(i, j): D[i], D[j] = D[j], D[i]\n", + " for move in dance:\n", + " op, arg = move[0], move[1:]\n", + " if op == 's': D.rotate(int(arg))\n", + " elif op == 'x': swap(*integers(arg))\n", + " elif op == 'p': swap(D.index(arg[0]), D.index(arg[2]))\n", + " return cat(D)\n", + " \n", + "perform(dance)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's the right answer.\n", + "\n", + "**Part Two**\n", + "\n", + "My first thought was to define a dance as a permutation: a list of numbers `[11, 1, 9, ...]` which says that the net effect of the dance is that the first dancer (`a`) ends up in position, the second (`b`) stays in position 1, and so on. Applying that permutation once is a lot faster than interpreting all 10,000 moves of the dance, and it is feasible to apply the permutation a billion times. I tried that (code not shown here), but that was a mistake: it took 15 minutes to run, and it got the wrong answer. The problem is that a dance is *not* just a permutation, because a dance can reference dancer *names*, not just positions.\n", + "\n", + "It would take about 10,000 times 20 minutes to perform a billion repetitions of the dance, so that's out. But even though the dance is not a permutation, it might repeat after a short period. Let's check:" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "abcdefghijklmnop is seen in iterations (0, 56)\n" + ] + } + ], + "source": [ + "seen = {dancers: 0}\n", + "d = dancers\n", + "for i in range(1, 1000):\n", + " d = perform(dance, d)\n", + " if d in seen:\n", + " print(d, 'is seen in iterations', (seen[d], i))\n", + " break" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So we get back to the start position after 56 repetitions of the dance. What happens after a billion repetitions?" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "48" + ] + }, + "execution_count": 187, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1000000000 % 56" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The end position after a billion repetitions is the same as after 48:" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ejkflpgnamhdcboi'" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def whole(N, dance, dancers=dancers):\n", + " \"Repeat `perform(dance)` N times.\"\n", + " for i in range(N):\n", + " dancers = perform(dance, dancers)\n", + " return dancers\n", + " \n", + "whole(48, dance)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2335,12 +2469,20 @@ }, { "cell_type": "code", - "execution_count": 68, - "metadata": { - "collapsed": false - }, - "outputs": [], + "execution_count": 158, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1min 8s, sys: 171 ms, total: 1min 8s\n", + "Wall time: 1min 8s\n" + ] + } + ], "source": [ + "%%time\n", "def day(n, compute1, answer1, compute2, answer2):\n", " \"Assert that we get the right answers for this day.\"\n", " assert compute1 == answer1\n", @@ -2367,7 +2509,9 @@ "day(14, sum(bits(key, i).count('1') for i in range(128)), 8316, \n", " flood_all(Grid(key)), 1074)\n", "day(15, judge(A(), B()), 597, \n", - " judge(criteria(4, A()), criteria(8, B()), 5*10**6), 303)" + " judge(criteria(4, A()), criteria(8, B()), 5*10**6), 303)\n", + "day(16, perform(dance), 'lbdiomkhgcjanefp', \n", + " whole(48, dance), 'ejkflpgnamhdcboi')" ] }, { @@ -2379,16 +2523,14 @@ }, { "cell_type": "code", - "execution_count": 69, - "metadata": { - "collapsed": false - }, + "execution_count": 186, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nkBdeeIFu3boZ2ixdupSIiAgyMzMJCQlh9uzZBAcHG3UcQTDWiVu5BLtY425rhb1KQQtPG368ksnI\nxkXP5UY1duHzs6n0+/tWZnf/kvOdJKUK+k1m0PY4WnvZ0s3fHlmWq/wfeVVQKxX0CnSkV6AjqfmF\nZGgqdnW37o80Ii5lkFWgp623Lc09bPCo2iIf1UKAk4p3jiey42omrz/mZVjKx1zOJ2t4K/I2bbxs\n6RngQBtv0570m5kFHInLoa6DirqOKvwcVBWu/FJhshG2bt0qd+rUSW7UqJHcuHFjuXHjxnKjRo3k\nTp06yVu3bjWmK1mWZXn//v3y4cOH5Zs3b8rXr1+XP/roI7lZs2byxYsXZVmW5c8++0x+9NFH5b17\n98qXL1+Wp0yZInfu3FnOyckptc+oqCij46guROxVT6PRyMPGjJc1Gk2x7e8eT5BX/JZseH06IVce\nuOWarNPrZVmWZZ1eL19JL/6e+zkRnyPnFuhMG/RdqsN5z9XqZP3f58UY94v9TGKefDE133Ceqytz\nnXeNRiM//59XZY1GI2t1evmb86ly301X5RwT/g5Z4nfmr7R8ed6JBDl8f6w8ZOs1+fUjtyrUT2Vi\nNyrZybIsa7Va+fTp0/LOnTvlnTt3yqdPn5a1Wm2FA7hXu3bt5O+//16WZVnu1KmT/Nlnnxn25efn\ny61btzbsv5/q8I+/okTsVW/CK6/LDWd8JQ9+cbq87PQ/ye1KukbuGXFF1hQWfcjo9Xp56i9x8s3M\nBye4qlQdzvviqCR56NZr8uozKXJcVkG531cdYq8oc8X+9MvT5Udmfi1PnPaGYVue1rRflsobe3X8\nwlGZ817u68itW7cSGxuLlZUVrVq1ol+/fvTr149WrVphZWVFbGwsW7durfAVpl6vZ+fOneTm5vLo\no48SExNDcnIyHTt2NLRRq9WEhoZy+vTpCh9HEO64U+XEvmlHrtgGsvybCLIKiuZ21Xe2ppGbmp+v\nZwNFzxg+6l4Hf0fjbyfJsszVjAK+Pp/Gi/viKNDVrrqPUx51Z1YHb27nFjJ6101+S8yrdJ935tp9\ndiaF+GytCaKs/r7e8AOnrAKxa9KBY7Ifa7/fBFBlt/uyC3T8cjObhSeTGLnzJnN/Ne9zu6pW7rM4\nc+bMMpPMmTNnmDlzptEBXLp0idatW9OiRQvmzJnDsmXLCA4OJjk5GUmS8PAovpKxu7s7SUlJRh9H\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2397,17 +2539,18 @@ ], "source": [ "def plot_times(times):\n", - " X = ints(1, len(times[0][2:]))\n", + " plt.style.use('seaborn-whitegrid')\n", + " X = ints(1, len(times[0]) - 2)\n", " for (label, mark, *Y) in times:\n", " plt.plot(X, Y, mark, label=label)\n", - " plt.xlabel('Day Number'); plt.ylabel('Minutes')\n", - " plt.legend()\n", + " plt.xlabel('Day Number'); plt.ylabel('Minutes to Solve Both')\n", + " plt.legend(loc='upper left')\n", "\n", "x = None\n", "plot_times([\n", - " ('Me', 'd:', (4), 6,(20), 5, 12, 30, 33,(10), 21, 40, 13, 12,(30),(40), 13),\n", - " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10),\n", - " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2)])" + " ('Me', 'd:', (4), 6,(20), 5, 12, 30, 33,(10), 21, 40, 13, 12,(30),(41), 13, 64),\n", + " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27),\n", + " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5)])" ] } ], @@ -2427,7 +2570,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.0" + "version": "3.5.3" } }, "nbformat": 4, From c6d50228ec8fbf7c470747e74c1a9fd213bcd0c0 Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Sun, 17 Dec 2017 19:45:41 +0000 Subject: [PATCH 31/55] Avoid repeated element lookup in sequence. --- ipynb/Advent 2017.ipynb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 0f8750a..b6bec63 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -857,8 +857,9 @@ "source": [ "def run(program):\n", " memory = list(program)\n", + " mlen = len(memory)\n", " pc = steps = 0\n", - " while pc in range(len(memory)):\n", + " while 0 <= pc < mlen:\n", " steps += 1\n", " oldpc = pc\n", " pc += memory[pc]\n", @@ -912,8 +913,9 @@ "source": [ "def run2(program, verbose=False):\n", " memory = list(program)\n", + " mlen = len(memory)\n", " pc = steps = 0\n", - " while pc in range(len(memory)):\n", + " while 0 <= pc < mlen:\n", " steps += 1\n", " oldpc = pc\n", " pc += memory[pc]\n", From 10d4537f21969e455a579dfbfe49639b7c248448 Mon Sep 17 00:00:00 2001 From: Roland Meertens Date: Mon, 18 Dec 2017 14:13:40 +0100 Subject: [PATCH 32/55] added travis file for automatic testing of notebooks --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..aab1bf3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: python +python: + - "3.5" + +# install jupyter +install: + - pip install jupyter +script: + - jupyter nbconvert --to notebook --execute ipynb/BASIC.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Cheryl.ipynb + From 2ddbe3776416e94898cdc38e8bd0b3894dba8ebd Mon Sep 17 00:00:00 2001 From: Roland Meertens Date: Mon, 18 Dec 2017 16:58:30 +0100 Subject: [PATCH 33/55] Input now downloads file from github --- ipynb/Advent 2017.ipynb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index b6bec63..f16a8be 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -38,6 +38,9 @@ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", + "import os\n", + "import urllib.request\n", + "\n", "import re\n", "import numpy as np\n", "import math\n", @@ -65,7 +68,16 @@ "\n", "def Input(day, year=2017):\n", " \"Open this day's input file.\"\n", - " return open('data/advent{}/input{}.txt'.format(year, day))\n", + " directory = 'advent{}/'.format(year)\n", + " filename = directory+'input{}.txt'.format(day)\n", + " try:\n", + " return open(filename)\n", + " except FileNotFoundError:\n", + " if not os.path.exists(directory):\n", + " os.makedirs(directory)\n", + "\n", + " urllib.request.urlretrieve(\"https://raw.githubusercontent.com/norvig/pytudes/master/data/\" + filename, filename)\n", + " return Input(day)\n", " \n", "def array(lines):\n", " \"Parse an iterable of str lines into a 2-D array. If `lines` is a str, splitlines.\"\n", From 14ce69b20c82c4c82a3e60bf676079b47a59c506 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 18 Dec 2017 23:28:32 -0800 Subject: [PATCH 34/55] Advent 2017 through Day 19 --- ipynb/Advent 2017.ipynb | 788 ++++++++++++++++++++++++++++++++++------ 1 file changed, 669 insertions(+), 119 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index b6bec63..c2db159 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -8,7 +8,7 @@ "\n", "Peter Norvig\n", "\n", - "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). This time, my terms of engagement are a bit different:\n", + "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). This time, my terms of engagement are:\n", "\n", "* I won't write a summary of each day's puzzle description. Follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to understand what each puzzle is asking. \n", "* What you see is mostly the algorithm I first came up with first, although sometimes I go back and refactor if I think the original is unclear.\n", @@ -259,6 +259,10 @@ " for line in iterable:\n", " if re.search(pattern, line):\n", " print(line)\n", + " \n", + "class Struct:\n", + " \"A structure that can have any fields defined.\"\n", + " def __init__(self, **entries): self.__dict__.update(entries)\n", "\n", "################ A* and Breadth-First Search (tracking states, not actions)\n", "\n", @@ -375,7 +379,7 @@ }, { "cell_type": "code", - "execution_count": 183, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -384,7 +388,7 @@ "2014" ] }, - "execution_count": 183, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -835,7 +839,7 @@ "source": [ "Now I'll make a little interpreter, `run`, which takes a program, loads it into memory,\n", " and executes the instruction, maintaining a program counter, `pc`, and doing the incrementing/branching as described in the puzzle,\n", - "until the program counter is out of range:" + "until the program counter no longer points to a location in memory:" ] }, { @@ -857,9 +861,9 @@ "source": [ "def run(program):\n", " memory = list(program)\n", - " mlen = len(memory)\n", " pc = steps = 0\n", - " while 0 <= pc < mlen:\n", + " M = len(memory)\n", + " while 0 <= pc < M:\n", " steps += 1\n", " oldpc = pc\n", " pc += memory[pc]\n", @@ -913,9 +917,9 @@ "source": [ "def run2(program, verbose=False):\n", " memory = list(program)\n", - " mlen = len(memory)\n", " pc = steps = 0\n", - " while 0 <= pc < mlen:\n", + " M = len(memory)\n", + " while 0 <= pc < M:\n", " steps += 1\n", " oldpc = pc\n", " pc += memory[pc]\n", @@ -938,6 +942,14 @@ "execution_count": 21, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 6.21 s, sys: 24.6 ms, total: 6.24 s\n", + "Wall time: 6.28 s\n" + ] + }, { "data": { "text/plain": [ @@ -950,14 +962,14 @@ } ], "source": [ - "run2(program)" + "%time run2(program)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Thanks to [Clement Sreeves](https://github.com/ClementSreeves) for the suggestion of making a distinction between the `program` and the `memory`. In my first version, `run` would mutate the argument, which was OK for a short exercise, but not best practice for a reliable API." + "Thanks to [Clement Sreeves](https://github.com/ClementSreeves) for the suggestion of making a distinction between the `program` and the `memory`. In my first version, `run` would mutate the argument, which was OK for a short exercise, but not best practice for a reliable API. And thanks to [Max Albert](https://github.com/maxalbert) for speeding up the loop by pulling the `len(memory)` out of the loop." ] }, { @@ -1109,7 +1121,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -1118,7 +1130,7 @@ "8038" ] }, - "execution_count": 29, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1150,7 +1162,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -1180,7 +1192,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -1189,7 +1201,7 @@ "{'wiapj'}" ] }, - "execution_count": 31, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1209,7 +1221,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 30, "metadata": { "collapsed": true }, @@ -1227,7 +1239,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 31, "metadata": { "collapsed": true }, @@ -1249,7 +1261,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1258,7 +1270,7 @@ "{'eionkb', 'lsire', 'wiapj', 'ycpcv'}" ] }, - "execution_count": 34, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1276,7 +1288,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1285,7 +1297,7 @@ "'eionkb'" ] }, - "execution_count": 35, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1308,7 +1320,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1317,7 +1329,7 @@ "1072" ] }, - "execution_count": 38, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1342,7 +1354,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1351,7 +1363,7 @@ "6828" ] }, - "execution_count": 39, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1381,7 +1393,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1390,7 +1402,7 @@ "7234" ] }, - "execution_count": 40, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1419,7 +1431,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1428,7 +1440,7 @@ "'{{{{{{{},},{{},}},{{{{}},{{{{{}}},{}},},{{{{},{,{{{}}}}},},{{{}},{{}}}'" ] }, - "execution_count": 41, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1449,7 +1461,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1458,7 +1470,7 @@ "9662" ] }, - "execution_count": 42, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1490,7 +1502,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1499,7 +1511,7 @@ "5989" ] }, - "execution_count": 43, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1517,7 +1529,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1526,7 +1538,7 @@ "4903" ] }, - "execution_count": 44, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1553,7 +1565,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 41, "metadata": { "collapsed": true }, @@ -1583,7 +1595,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 42, "metadata": { "collapsed": true }, @@ -1595,7 +1607,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -1607,7 +1619,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1635,7 +1647,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1644,7 +1656,7 @@ "4480" ] }, - "execution_count": 49, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1664,7 +1676,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1673,7 +1685,7 @@ "'c500ffe015c83b60fad2e4b7d59dabc4'" ] }, - "execution_count": 50, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1736,7 +1748,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 47, "metadata": { "collapsed": true }, @@ -1754,7 +1766,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -1763,7 +1775,7 @@ "705" ] }, - "execution_count": 52, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1794,7 +1806,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -1803,7 +1815,7 @@ "1469" ] }, - "execution_count": 53, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1833,7 +1845,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 50, "metadata": { "collapsed": true }, @@ -1856,7 +1868,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 51, "metadata": { "collapsed": true }, @@ -1876,7 +1888,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -1885,7 +1897,7 @@ "115" ] }, - "execution_count": 56, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -1907,7 +1919,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -1916,7 +1928,7 @@ "221" ] }, - "execution_count": 57, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -1940,7 +1952,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 54, "metadata": { "collapsed": true }, @@ -1961,7 +1973,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1970,7 +1982,7 @@ "((0, 3), (1, 2), (2, 4), (4, 6), (6, 4))" ] }, - "execution_count": 75, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1982,7 +1994,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1991,7 +2003,7 @@ "1504" ] }, - "execution_count": 76, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -2011,7 +2023,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -2020,7 +2032,7 @@ "10" ] }, - "execution_count": 60, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -2040,7 +2052,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -2049,7 +2061,7 @@ "3823370" ] }, - "execution_count": 61, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -2069,7 +2081,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 59, "metadata": { "collapsed": true }, @@ -2080,7 +2092,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -2089,7 +2101,7 @@ "8316" ] }, - "execution_count": 63, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -2114,7 +2126,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 61, "metadata": { "collapsed": true }, @@ -2122,7 +2134,8 @@ "source": [ "def Grid(key, N=128+2):\n", " \"Make a grid, with a border around it.\"\n", - " rows = [['0'] + list(bits(key, i)) + ['0'] for i in range(128)]\n", + " rows = [['0'] + list(bits(key, i)) + ['0'] \n", + " for i in range(128)]\n", " empty = ['0'] * len(rows[0])\n", " return [empty] + rows + [empty]" ] @@ -2136,7 +2149,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 62, "metadata": { "collapsed": true }, @@ -2152,7 +2165,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 63, "metadata": { "collapsed": true }, @@ -2171,7 +2184,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -2180,7 +2193,7 @@ "1074" ] }, - "execution_count": 67, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -2195,42 +2208,49 @@ "source": [ "# [Day 15](https://adventofcode.com/2017/day/15): Dueling Generators\n", "\n", - "There are lots of arbitrary integers below: my personalized inputs are `516` and `190`; the other numbers are shared by all puzzle-solvers. I decided to make infinite generators of numbers, using `gen`:" + "My personalized inputs for this puzzle are `516` and `190`; the other numbers are shared by all puzzle-solvers. I decided to make infinite generators of numbers, using `gen`:" ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 65, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 24.8 s, sys: 64 ms, total: 24.9 s\n", + "Wall time: 24.9 s\n" + ] + }, { "data": { "text/plain": [ "597" ] }, - "execution_count": 68, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def gen(prev, factor, m=2147483647):\n", - " \"Generate an infinite sequence of numbers according to the rules.\"\n", - " while True:\n", + " \"Generate a sequence of numbers according to the rules; stop at 0.\"\n", + " while prev:\n", " prev = (prev * factor) % m\n", " yield prev\n", " \n", - "def judge(A, B, N=40*10**6, b=16): \n", + "def judge(A, B, N=40*10**6, mask=2**16-1): \n", " \"How many of the first N pairs from A and B agree in the last b bits?\"\n", - " m = 2 ** b\n", - " return quantify(next(A) % m == next(B) % m\n", - " for _ in range(N))\n", - " \n", - "A = lambda: gen(516, 16807)\n", - "B = lambda: gen(190, 48271)\n", + " return quantify(a & mask == b & mask\n", + " for (a, b, _) in zip(A, B, range(N)))\n", "\n", - "judge(A(), B())" + "def A(): return gen(516, 16807)\n", + "def B(): return gen(190, 48271)\n", + "\n", + "%time judge(A(), B())" ] }, { @@ -2244,16 +2264,24 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 66, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 16.3 s, sys: 23.3 ms, total: 16.4 s\n", + "Wall time: 16.4 s\n" + ] + }, { "data": { "text/plain": [ "303" ] }, - "execution_count": 69, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -2263,7 +2291,7 @@ " \"Elements of iterable that are divisible by m\"\n", " return (n for n in iterable if n % m == 0)\n", " \n", - "judge(criteria(4, A()), criteria(8, B()), 5*10**6)" + "%time judge(criteria(4, A()), criteria(8, B()), 5*10**6)" ] }, { @@ -2277,7 +2305,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -2295,7 +2323,7 @@ " 's15')" ] }, - "execution_count": 79, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } @@ -2307,7 +2335,7 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -2316,7 +2344,7 @@ "10000" ] }, - "execution_count": 108, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -2334,7 +2362,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -2343,7 +2371,7 @@ "'lbdiomkhgcjanefp'" ] }, - "execution_count": 171, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -2379,7 +2407,7 @@ }, { "cell_type": "code", - "execution_count": 184, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -2409,7 +2437,7 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 71, "metadata": {}, "outputs": [ { @@ -2418,7 +2446,7 @@ "48" ] }, - "execution_count": 187, + "execution_count": 71, "metadata": {}, "output_type": "execute_result" } @@ -2436,7 +2464,7 @@ }, { "cell_type": "code", - "execution_count": 170, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -2445,7 +2473,7 @@ "'ejkflpgnamhdcboi'" ] }, - "execution_count": 170, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2460,6 +2488,513 @@ "whole(48, dance)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# [Day 17](https://adventofcode.com/2017/day/17): Spinlock\n", + "\n", + "This one looks pretty easy:" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "355" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "step = 314\n", + "\n", + "def spinlock(step=step, N=2017):\n", + " \"Make N inserts into the buffer, skipping ahead by `step` each time.\"\n", + " buf = [0]\n", + " pos = 0\n", + " for i in ints(1, N):\n", + " pos = (pos + step) % i + 1\n", + " buf[pos:pos] = [i]\n", + " return buf\n", + " \n", + "buf = spinlock()\n", + "\n", + "buf[buf.index(2017)+1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's the right answer.\n", + "\n", + "**Part Two**\n", + "\n", + "But Part Two is not so easy, if we care about the run time. Insertion into a `list` has to move all the elements after the insertion down, so insertion is O(N) and `spinlock` is O(N2). That's no problem when N = 2017, but a big problem when N is 50 million. We're gonna need need a bigger boat, where by \"boat\" I mean algorithm or data structure. My first thought is a (circular) linked list, because insertion is O(1). I can implement the three key methods: `skip` to move ahead, `insert` to add a new node after the current one, and `find` to find a piece of data (with a linear search):" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "class Node:\n", + " \"A Node in a singly-linked list\"\n", + " \n", + " __slots__ = ('data', 'next') # Declaring slots makes it more efficient\n", + " \n", + " def __init__(self, data, next): self.data, self.next = data, next\n", + " \n", + " def skip(self, n):\n", + " \"Skip ahead n nodes, and return that node.\"\n", + " node = self\n", + " for i in range(n):\n", + " node = node.next\n", + " return node\n", + " \n", + " def insert(self, value):\n", + " \"Insert a new node with the given value after this node.\"\n", + " self.next = Node(value, self.next)\n", + " return self.next\n", + " \n", + " def find(self, value):\n", + " \"Find the node with the given data value.\"\n", + " node = self\n", + " while node.data != value:\n", + " node = node.next\n", + " return node" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now I can rewrite `spinlock` to use this class:" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def spinlock2(step=step, N=2017):\n", + " node = Node(0, None)\n", + " node.next = node # Make node be a circular linked list\n", + " for i in ints(1, N):\n", + " node = node.skip(step).insert(i)\n", + " return node" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's replicate the Part One results:" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "355" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "spinlock2().find(2017).next.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Good news! We get the same answer. But how fast/slow is it?" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1.4 s, sys: 5.52 ms, total: 1.4 s\n", + "Wall time: 1.4 s\n" + ] + }, + { + "data": { + "text/plain": [ + "<__main__.Node at 0x108a9c780>" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time spinlock2(N=100000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bad news! It takes over a second to do just 100,000 insertions, which means about 10 minutes for 50 million insertions. I did in fact try\n", + "\n", + " spinlock2(N=50000000).find(0).next.data\n", + " \n", + "and it eventually gave the right answer, but while it was running I had plenty of time to think.\n", + "I realized that, if we go back to the original `spinlock` version, the value `0` will always be in `buf[0]`, and the value we are looking for will always be in `buf[1]`. So I can create a version of `spinlock` that only keeps track of `buf[0:2]`. That should run in a few seconds, not minutes:" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 5.55 s, sys: 16.7 ms, total: 5.57 s\n", + "Wall time: 5.57 s\n" + ] + }, + { + "data": { + "text/plain": [ + "6154117" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def spinlock3(step=step, N=2017):\n", + " \"Make N inserts into a simulated buffer, but ignore all except buf[0:2].\"\n", + " pos = 0\n", + " buf = [0, 0]\n", + " for i in ints(1, N):\n", + " pos = (pos + step) % i + 1\n", + " if pos <= 1:\n", + " buf[pos] = i\n", + " return buf\n", + "\n", + "%time spinlock3(N=50000000)[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The moral of the story is *keep your eyes on the prize*. I got distracted because I asked the wrong question. I asked myself \"what's wrong with my solution in `spinlock`?\" and answered myself \"insertion is O(N2) and it should be O(N).\" I knew how to do that, but that was the wrong question. I should have asked myself \"how do I solve Part Two quickly,\" concentrating on solving the actual problem, and avoiding getting fixated on my solution to Part One." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 18](https://adventofcode.com/2017/day/17): Duet\n", + "\n", + "First, read and take a peek at the input:" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(('set', 'i', 31),\n", + " ('set', 'a', 1),\n", + " ('mul', 'p', 17),\n", + " ('jgz', 'p', 'p'),\n", + " ('mul', 'a', 2))" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "program18 = array(Input(18))\n", + "program18[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now write an interpreter for the assembly language:" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7071" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run18(program):\n", + " \"Interpret the assembly language program.\"\n", + " regs = defaultdict(int)\n", + " pc = sound = 0\n", + " while True:\n", + " instr = program[pc]\n", + " op, x, y = instr[0], instr[1], instr[-1]\n", + " vy = value(regs, y)\n", + " if op == 'snd': sound = regs[x]\n", + " elif op == 'set': regs[x] = vy\n", + " elif op == 'add': regs[x] += vy\n", + " elif op == 'mul': regs[x] *= vy\n", + " elif op == 'mod': regs[x] %= vy\n", + " elif op == 'jgz' and regs[x] > 0: pc += vy - 1\n", + " elif op == 'rcv' and regs[x] != 0: \n", + " return sound\n", + " pc += 1\n", + " \n", + "def value(regs, y): return (y if isinstance(y, int) else regs[y])\n", + "\n", + "run18(program18)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That was easy. (One tricky bit: after every instruction the `pc` is incremented by 1, so for the `'jgz'` jump instruction, the increment is `vy - 1`, not just `vy`, so that the `pc += 1` will fix it.)\n", + "\n", + "**Part Two**\n", + "\n", + "Now we have to run two copies of the program, and send messages between them. I'll break up the loop in `run18` into\n", + "two functions. First, `run18_2`, creates (in `ps`) two structures to hold the state variables necessary to run a program (`Struct` is my generic constructor of structures with named fields). `run18_2` then repeatedly calls `step18(program, p)` to execute one instruction of `program` with the state variables in `p`. At each step I will choose randomly which of the two programs to advance. (I could just as easily have alternated.) The function exits when neither copy of the program can run, according to their status. A program can have status `run` when it is ready to execute an instruction, `wait` when it is waiting for a value to arrive in its input queue, or `end` for when the `pc` has run off the end of the program and it is terminated." + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def run18_2(program):\n", + " \"Run two copies of program, with different state variables. Return final states.\"\n", + " Qs = [deque(), deque()]\n", + " ps = [Struct(pc=0, sends=0, Qs=Qs, status='run', p=id, regs=defaultdict(int, p=id))\n", + " for id in (0, 1)]\n", + " while 'run' in {ps[0].status, ps[1].status}:\n", + " step18(program, random.choice(ps))\n", + " return ps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second function, `step18`, has most of the guts of `run18`, but with a few changes:\n", + "- State variables are accessed indirectly: `p.pc` instead of just `pc`.\n", + "- If the `pc` is out of bounds, the program terminates; the status is set to `'end'`.\n", + "- The `snd` instruction sends a value to the other program's queue.\n", + "- The `rcv` instruction pops a value of the queue if there is one, otherwise the status is set to `'wait'`.\n", + "- I was stuck for a *long* time on this problem, repeatedly getting the wrong answer. Finally I tried the strategy of *look carefully at the input*. I noticed an instruction, `\"jgz 1 3\"`, in which the X field was the integer 1. I had assumed the X field was always a register, but apparently it need not be, and I should be evaluating X with `value(regs, x)`, not `regs[x]`. Once I made that change, the program worked." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8001" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def step18(program, p):\n", + " \"Run one instruction in program, with state variables in p.\"\n", + " if p.pc < 0 or p.pc > len(program):\n", + " p.status = 'end'\n", + " else:\n", + " instr = program[p.pc]\n", + " op, x, y = instr[0], instr[1], instr[-1]\n", + " vx, vy = value(p.regs, x), value(p.regs, y)\n", + " if op == 'snd': p.Qs[1-p.p].append(vy); p.sends += 1\n", + " elif op == 'set': p.regs[x] = vy\n", + " elif op == 'add': p.regs[x] += vy\n", + " elif op == 'mul': p.regs[x] *= vy\n", + " elif op == 'mod': p.regs[x] %= vy\n", + " elif op == 'jgz' and vx > 0: p.pc += vy - 1\n", + " elif op == 'rcv': \n", + " if not p.Qs[p.p]:\n", + " p.status = 'wait'\n", + " return\n", + " else:\n", + " p.regs[x] = p.Qs[p.p].popleft()\n", + " p.status = 'run'\n", + " p.pc += 1\n", + " \n", + "run18_2(program18)[1].sends" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 19](https://adventofcode.com/2017/day/19): A Series of Tubes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At first I was confused; I thought this was a maze-following problem with choices of which direction to turn. Actually, the direction is always determined: keep going in the current direction as long as possible, but when we hit a `'+'` character, search for another direction to go in (there will only be one, but we have to try all the possibilities to find it). Leave breadcrumbs (the `'.'` character) so that we don't back up along a previously-followed path. Collect all the alphabetic characters into `result`. As in Day 14, the grid, `G`, is surrounded by space characters so that we don't have to worry about `(x, y)` going off the edge." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'VEBTPXCHLI'" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diagram = Input(19).read().splitlines()\n", + "\n", + "def path_follow(diagram):\n", + " \"Follow -|+ lines, and collect letters along the way.\"\n", + " result = []\n", + " G = surround(diagram)\n", + " x, y = G[1].index('|'), 1\n", + " dx, dy = 0, 1\n", + " while G[y][x] != ' ':\n", + " c = G[y][x]\n", + " if c.isalpha():\n", + " result.append(c) # Collect a letter\n", + " elif c == '+':\n", + " dx, dy = new_direction(G, x, y)\n", + " G[y][x] = '.' # Leave a breadcrumb\n", + " x += dx; y += dy\n", + " return cat(result)\n", + " \n", + "def surround(grid, fill=' '):\n", + " \"Put fill characters as a border all around grid.\"\n", + " rows = [[fill] + list(row) + [fill] \n", + " for row in grid]\n", + " empty = [fill] * len(rows[0])\n", + " return [empty] + rows + [empty]\n", + "\n", + "def new_direction(G, x, y):\n", + " \"Find a direction that continues the path.\"\n", + " for (dx, dy) in (UP, DOWN, RIGHT, LEFT):\n", + " if G[y+dy][x+dx] not in (' ', '.'):\n", + " return dx, dy\n", + "\n", + "path_follow(diagram)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "This is a surprisingly easy Part Two: all I have to do is manage a `steps += 1` in the loop to return the total number of steps taken." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('VEBTPXCHLI', 18702)" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def path_follow2(diagram):\n", + " \"Follow -|+ lines, collect letters along the way, return (letters, steps).\"\n", + " result = []\n", + " steps = 0\n", + " G = surround(diagram)\n", + " x, y = G[1].index('|'), 1\n", + " dx, dy = 0, 1\n", + " while G[y][x] != ' ':\n", + " steps += 1\n", + " c = G[y][x]\n", + " if c.isalpha(): \n", + " result.append(c) # Collect a letter\n", + " elif c == '+':\n", + " dx, dy = new_direction(G, x, y)\n", + " G[y][x] = '.' # Leave a breadcrumb\n", + " x += dx; y += dy\n", + " return cat(result), steps\n", + "\n", + "path_follow2(diagram)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2471,21 +3006,22 @@ }, { "cell_type": "code", - "execution_count": 158, + "execution_count": 85, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1min 8s, sys: 171 ms, total: 1min 8s\n", - "Wall time: 1min 8s\n" + "CPU times: user 58.9 s, sys: 125 ms, total: 59 s\n", + "Wall time: 59.1 s\n" ] } ], "source": [ "%%time\n", - "def day(n, compute1, answer1, compute2, answer2):\n", + "\n", + "def day(d, compute1, answer1, compute2, answer2):\n", " \"Assert that we get the right answers for this day.\"\n", " assert compute1 == answer1\n", " assert compute2 == answer2\n", @@ -2496,43 +3032,57 @@ " sum(map(evendiv, rows2)), 265)\n", "day(3, cityblock_distance(nth(spiral(), M - 1)), 475, \n", " first(x for x in spiralsums() if x > M), 279138)\n", - "day(4, quantify(Input(4), is_valid), 337, quantify(Input(4), is_valid2), 231)\n", - "day(5, run(program), 364539, run2(program), 27477714)\n", - "day(6, realloc(banks), 12841, realloc2(banks), 8038)\n", + "day(4, quantify(Input(4), is_valid), 337, \n", + " quantify(Input(4), is_valid2), 231)\n", + "day(5, run(program), 364539, \n", + " run2(program), 27477714)\n", + "day(6, realloc(banks), 12841, \n", + " realloc2(banks), 8038)\n", "day(7, first(programs - set(flatten(above.values()))), 'wiapj', \n", " correct(wrongest(programs)), 1072)\n", - "day(8, max(run8(program8).values()), 6828, run82(program8), 7234)\n", - "day(9, total_score(text2), 9662, len(text1) - len(text3), 4903)\n", + "day(8, max(run8(program8).values()), 6828, \n", + " run82(program8), 7234)\n", + "day(9, total_score(text2), 9662, \n", + " len(text1) - len(text3), 4903)\n", "day(10, knothash(stream), 4480, \n", " knothash2(stream2), 'c500ffe015c83b60fad2e4b7d59dabc4')\n", - "day(11, follow(path), 705, follow2(path), 1469)\n", - "day(12, len(G[0]), 115, len({Set(G[i]) for i in G}), 221)\n", - "day(13, trip_severity(scanners), 1504, safe_delay(scanners), 3823370)\n", + "day(11, follow(path), 705, \n", + " follow2(path), 1469)\n", + "day(12, len(G[0]), 115, \n", + " len({Set(G[i]) for i in G}), 221)\n", + "day(13, trip_severity(scanners), 1504, \n", + " safe_delay(scanners), 3823370)\n", "day(14, sum(bits(key, i).count('1') for i in range(128)), 8316, \n", " flood_all(Grid(key)), 1074)\n", "day(15, judge(A(), B()), 597, \n", " judge(criteria(4, A()), criteria(8, B()), 5*10**6), 303)\n", "day(16, perform(dance), 'lbdiomkhgcjanefp', \n", - " whole(48, dance), 'ejkflpgnamhdcboi')" + " whole(48, dance), 'ejkflpgnamhdcboi')\n", + "day(17, spinlock2().find(2017).next.data, 355,\n", + " spinlock3(N=50*10**6)[1], 6154117)\n", + "day(18, run18(program18), 7071, \n", + " run18_2(program18)[1].sends, 8001)\n", + "day(19, path_follow(diagram), 'VEBTPXCHLI', \n", + " path_follow2(diagram)[1], 18702)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "And here is a plot of the time taken to completely solve both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, I estimate my time and mark it with parens below:" + "And here is a plot of the time taken to completely solve both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, the times are estimates, not exact (these include days 1, 3, 8, 13, 14, 17, 18)." ] }, { "cell_type": "code", - "execution_count": 186, + "execution_count": 86, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nkBdeeIFu3boZ2ixdupSIiAgyMzMJCQlh9uzZBAcHG3UcQTDWiVu5BLtY425rhb1KQQtPG368ksnI\nxkXP5UY1duHzs6n0+/tWZnf/kvOdJKUK+k1m0PY4WnvZ0s3fHlmWq/wfeVVQKxX0CnSkV6AjqfmF\nZGgqdnW37o80Ii5lkFWgp623Lc09bPCo2iIf1UKAk4p3jiey42omrz/mZVjKx1zOJ2t4K/I2bbxs\n6RngQBtv0570m5kFHInLoa6DirqOKvwcVBWu/FJhshG2bt0qd+rUSW7UqJHcuHFjuXHjxnKjRo3k\nTp06yVu3bjWmK1mWZXn//v3y4cOH5Zs3b8rXr1+XP/roI7lZs2byxYsXZVmW5c8++0x+9NFH5b17\n98qXL1+Wp0yZInfu3FnOyckptc+oqCij46guROxVT6PRyMPGjJc1Gk2x7e8eT5BX/JZseH06IVce\nuOWarNPrZVmWZZ1eL19JL/6e+zkRnyPnFuhMG/RdqsN5z9XqZP3f58UY94v9TGKefDE133Ceqytz\nnXeNRiM//59XZY1GI2t1evmb86ly301X5RwT/g5Z4nfmr7R8ed6JBDl8f6w8ZOs1+fUjtyrUT2Vi\nNyrZybIsa7Va+fTp0/LOnTvlnTt3yqdPn5a1Wm2FA7hXu3bt5O+//16WZVnu1KmT/Nlnnxn25efn\ny61btzbsv5/q8I+/okTsVW/CK6/LDWd8JQ9+cbq87PQ/ye1KukbuGXFF1hQWfcjo9Xp56i9x8s3M\nBye4qlQdzvviqCR56NZr8uozKXJcVkG531cdYq8oc8X+9MvT5Udmfi1PnPaGYVue1rRflsobe3X8\nwlGZ817u68itW7cSGxuLlZUVrVq1ol+/fvTr149WrVphZWVFbGwsW7durfAVpl6vZ+fOneTm5vLo\no48SExNDcnIyHTt2NLRRq9WEhoZy+vTpCh9HEO64U+XEvmlHrtgGsvybCLIKiuZ21Xe2ppGbmp+v\nZwNFzxg+6l4Hf0fjbyfJsszVjAK+Pp/Gi/viKNDVrrqPUx51Z1YHb27nFjJ6101+S8yrdJ935tp9\ndiaF+GytCaKs/r7e8AOnrAKxa9KBY7Ifa7/fBFBlt/uyC3T8cjObhSeTGLnzJnN/Ne9zu6pW7rM4\nc+bMMpPMmTNnmDlzptEBXLp0idatW9OiRQvmzJnDsmXLCA4OJjk5GUmS8PAovpKxu7s7SUlJRh9H\n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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2550,9 +3100,9 @@ "\n", "x = None\n", "plot_times([\n", - " ('Me', 'd:', (4), 6,(20), 5, 12, 30, 33,(10), 21, 40, 13, 12,(30),(41), 13, 64),\n", - " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27),\n", - " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5)])" + " ('Me', 'd:', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50),\n", + " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18),\n", + " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5)])" ] } ], From 441466901d64ad04adf8defae6baf10efc9d900f Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 18 Dec 2017 23:29:16 -0800 Subject: [PATCH 35/55] Advent 2017 through Day 19 --- data/advent2017/input13.txt | 43 ++++++++ data/advent2017/input16.txt | 1 + data/advent2017/input18.txt | 41 ++++++++ data/advent2017/input19.txt | 201 ++++++++++++++++++++++++++++++++++++ 4 files changed, 286 insertions(+) create mode 100644 data/advent2017/input13.txt create mode 100644 data/advent2017/input16.txt create mode 100644 data/advent2017/input18.txt create mode 100644 data/advent2017/input19.txt diff --git a/data/advent2017/input13.txt b/data/advent2017/input13.txt new file mode 100644 index 0000000..e911a64 --- /dev/null +++ b/data/advent2017/input13.txt @@ -0,0 +1,43 @@ +0: 3 +1: 2 +2: 4 +4: 6 +6: 4 +8: 6 +10: 5 +12: 6 +14: 9 +16: 6 +18: 8 +20: 8 +22: 8 +24: 8 +26: 8 +28: 8 +30: 12 +32: 14 +34: 10 +36: 12 +38: 12 +40: 10 +42: 12 +44: 12 +46: 12 +48: 12 +50: 12 +52: 14 +54: 14 +56: 12 +62: 12 +64: 14 +66: 14 +68: 14 +70: 17 +72: 14 +74: 14 +76: 14 +82: 14 +86: 18 +88: 14 +96: 14 +98: 44 diff --git a/data/advent2017/input16.txt b/data/advent2017/input16.txt new file mode 100644 index 0000000..5311dbb --- /dev/null +++ b/data/advent2017/input16.txt @@ -0,0 +1 @@ +x5/15,s15,x1/3,pn/f,x11/2,s13,x6/3,pe/a,x14/12,s15,x1/0,pd/l,x8/15,pa/n,x14/1,s15,x15/2,pi/k,x6/3,pp/c,s9,x8/9,pb/i,x11/2,pc/a,s8,x13/6,pj/g,x5/11,s14,x9/2,s6,x10/1,pc/f,s14,x6/4,s5,x8/2,po/m,s14,x9/1,s14,x11/10,pk/g,s11,x2/13,pp/i,x12/11,pd/b,x5/7,pa/i,x12/2,pn/h,x7/4,s6,x8/1,s8,pl/c,x4/10,pg/f,x6/3,s12,x10/4,s15,x8/6,s10,x4/5,s5,x6/9,pc/m,x13/15,s12,x4/11,pp/o,x1/15,s8,x5/4,s2,x7/3,pi/b,x13/12,s12,x0/2,pe/l,x9/3,s11,x8/13,pm/i,x9/4,s13,x13/0,s6,x2/10,pd/l,s4,x12/15,pi/o,x3/0,pb/k,x8/4,s1,x10/6,s6,x3/15,s7,x4/13,pf/h,x14/10,s9,x6/12,pi/k,x9/7,pg/n,x8/5,pp/k,x7/3,s8,x0/2,pm/e,x11/3,ph/n,x4/0,pc/i,x7/15,pf/a,x6/12,s13,x13/7,pj/b,x11/14,pg/d,s15,x15/9,pe/b,x10/11,pp/h,x7/4,pc/o,x5/11,pe/m,x15/12,pi/n,x1/0,s2,x2/6,s14,x10/15,s6,x13/1,s6,x7/10,s2,ph/j,x12/14,s13,x2/6,s12,x14/0,s7,x5/15,s11,x6/4,s7,x10/9,s3,x7/5,s13,x8/2,pd/f,x10/13,s10,x5/12,pe/j,x1/15,po/c,x7/6,s4,pg/m,x14/13,s9,x4/5,s4,x9/11,s13,x10/2,pp/b,x4/0,pm/n,x7/3,s9,x9/1,s11,x3/5,s7,x14/8,pd/b,x10/7,s12,x12/9,s12,x11/2,s3,x12/6,pm/f,x11/2,s13,x6/1,s7,x9/12,pn/h,x1/3,s2,x15/10,s4,x3/4,s10,x13/2,s8,x1/7,pi/p,x2/8,s12,x11/14,s1,x13/2,pf/n,s1,x10/6,pm/k,x3/9,s8,x5/10,s2,x1/15,pg/p,x6/10,s13,x1/7,s13,x14/8,s5,x10/15,s15,x3/12,s1,x10/14,s1,x2/1,po/h,x14/5,pa/k,x1/8,s15,x4/11,s5,x3/15,s11,x2/12,pb/i,x10/14,s12,x13/12,pm/p,s10,x8/14,pa/n,s2,x4/12,s11,pp/d,x11/7,pl/e,x8/6,ph/k,s4,x10/7,s5,x14/0,pn/m,x5/10,s14,x3/7,s15,x6/0,s1,x1/14,s8,po/g,x8/13,pj/h,s3,x12/2,s3,pg/m,x7/6,pk/n,x0/4,s13,pf/l,x11/5,s11,x2/4,s5,x0/5,s7,x8/1,pc/i,x5/9,s15,x2/4,pj/f,x7/12,pe/p,x3/10,ph/i,s5,x0/12,pf/d,x6/13,pi/p,x1/5,s14,x14/13,s7,x8/6,pj/o,x15/2,pn/l,x4/3,pi/m,x10/0,s1,x5/6,s6,x1/9,pe/l,x7/0,s9,x4/8,s5,x9/1,pa/n,x14/13,s4,x3/5,pl/d,x8/1,s11,x10/2,pe/a,x9/5,pb/h,x13/15,pi/d,x5/11,s15,x8/0,pc/f,x1/11,s5,x12/8,s6,x1/14,s12,x2/10,s10,x14/1,s12,x3/7,pk/o,x5/6,s10,x1/0,pm/l,x9/4,pc/p,x6/8,s12,x15/7,pm/o,x13/12,s9,x1/2,pi/p,x14/0,s13,x15/7,pf/e,x10/6,s3,x1/13,s6,x4/14,pp/d,x15/9,s3,x13/3,s11,pj/g,x11/6,s6,x8/2,pn/f,x7/11,pa/k,s5,x9/12,s5,pm/n,x7/6,s12,x14/1,s5,x2/6,pl/e,x1/8,pa/m,x11/2,pp/h,x1/14,pm/n,x3/8,pg/h,s1,x0/13,s9,pe/l,x14/8,s10,x13/4,s6,x0/7,s9,x15/4,pp/f,x12/6,s6,pl/a,x8/0,pk/j,x14/5,s4,pc/e,x0/11,s10,x15/7,s10,x8/1,s7,x3/11,s7,x5/10,po/n,s15,x4/8,s15,x7/0,pl/i,x9/5,s3,x2/1,pa/b,x10/11,pk/m,x3/1,po/d,x2/9,pf/n,x15/14,po/i,x8/11,s15,x14/4,s6,x7/5,pj/g,x0/3,s15,x13/6,s3,x14/4,s1,x5/13,pb/i,x6/9,pl/m,x5/8,pb/h,s4,x9/2,s14,x1/12,pi/p,x9/7,pd/k,x2/3,pf/g,s9,x5/1,s10,x10/8,s4,ph/c,x5/4,s11,x11/15,s9,x5/6,s3,x11/12,pd/i,x5/9,s6,x13/7,pp/j,x1/12,pc/i,s15,x8/2,s7,x11/0,s2,x15/14,s13,x1/12,s15,x10/13,pg/p,x11/14,s4,x3/2,pm/b,x15/1,s3,x3/9,s9,x5/12,s15,x3/13,pc/e,x15/9,s10,x2/12,s13,x10/7,pa/f,s13,x8/4,s8,x14/1,s2,x13/10,s14,x14/5,s3,x13/11,pj/m,x1/8,s1,x4/10,s14,x8/7,s5,x11/14,pa/b,x6/13,s7,x14/12,s15,x0/5,pj/l,x1/7,s12,x13/6,s6,x10/12,s13,x11/3,s4,x5/9,s4,x6/7,po/k,x0/15,s13,x3/5,s5,x15/1,s2,x0/11,s6,x7/2,pc/a,x5/4,pl/b,s12,x1/14,s2,x6/7,pa/j,x13/11,s4,x10/9,s12,x13/14,s11,x9/12,pg/e,x7/6,s6,x3/5,s4,x1/2,s11,x7/0,pp/i,x1/6,s3,x3/4,pl/e,x7/5,s3,x11/13,s15,x6/8,pg/b,x4/15,pl/j,x10/3,s14,x4/1,s6,x12/3,s11,x0/1,s6,x6/11,s11,x2/5,pi/h,x8/14,pa/n,x2/13,s15,x1/14,s15,x8/15,s11,x5/0,s12,x13/10,pg/h,x7/0,pk/o,s4,x6/11,s7,x10/12,s14,x13/1,s2,x14/9,s3,x2/1,pj/d,x8/14,pc/k,s9,x1/7,s13,x0/5,pm/f,x15/10,pi/b,x12/1,pg/e,x15/0,ph/b,x12/5,s15,x11/0,pg/i,x15/12,s11,x3/11,s5,x12/13,s11,x8/10,s9,x15/13,s5,x3/2,s12,x14/7,pn/c,x11/2,s3,x5/14,s13,x8/3,s6,x11/0,s2,x4/13,s7,x5/2,s7,x8/0,s6,x12/15,s4,x6/9,s5,x5/8,s7,x3/11,s14,x14/13,s9,x9/10,pl/b,x12/4,pf/m,x5/14,s14,x0/1,pn/c,x2/13,s3,x1/4,s15,x8/2,pd/l,x0/13,pc/o,x7/15,s3,x6/4,pe/k,x13/11,po/p,x4/8,pb/j,x5/6,pg/k,x10/12,pj/c,x6/5,s2,x9/3,s4,pk/o,x12/13,s3,pf/c,x8/7,s9,x3/6,s12,x7/1,pa/h,x12/4,s1,x3/0,s12,x2/6,pk/l,x1/15,ph/d,x6/13,pb/n,x4/15,s1,x14/0,pm/d,x3/6,s4,ph/j,x4/5,pg/f,x7/8,pm/b,x2/4,s2,x9/7,s11,x10/2,pp/c,x7/13,s14,x5/4,s4,x7/1,pg/b,s13,x4/0,s7,pc/e,x3/11,s15,x6/13,s6,x0/5,s15,x8/15,pb/m,x5/1,s4,x13/10,s4,x7/0,pn/c,x8/4,s6,x1/6,s13,x4/7,s3,x5/11,s15,x14/0,s8,x4/9,s12,x14/10,s15,x9/6,s1,x7/1,s7,x13/11,s4,x4/6,pk/m,x7/9,s4,x15/2,pp/g,x6/3,s1,x7/15,ph/m,x0/5,pp/g,x4/3,pe/i,x13/15,s3,x12/14,s9,x8/15,s2,x0/4,s6,x13/7,s13,x3/14,s13,pm/c,x1/8,pn/g,x14/7,s9,x2/3,s10,pd/j,x4/14,s14,x3/11,s12,x0/15,s9,x8/12,pb/p,x3/13,s6,x12/14,s10,x11/10,pi/o,s10,x3/6,s2,x13/2,s13,x9/8,s14,x3/11,s2,x7/4,s3,x15/9,pp/h,x8/10,s6,x5/0,s9,x2/1,s9,x9/0,s10,pa/f,x11/1,pm/p,s4,x9/4,po/j,x2/12,pp/d,x10/6,pi/a,s7,x14/7,s14,x1/15,s1,x3/0,s15,x4/12,s15,x8/1,pc/d,x11/14,s10,x15/6,s3,x0/3,s9,x14/8,s1,x6/0,s15,x11/5,pa/n,x2/4,s5,x12/10,s4,x8/0,ph/i,x5/14,s8,pg/j,x11/12,pc/k,x0/7,s14,pp/g,x5/15,s15,x11/10,s14,x7/12,s8,x2/13,pn/k,x3/14,pc/l,x13/2,s7,x10/9,s15,x2/13,po/p,x3/8,s5,ph/l,x6/10,pd/c,x13/8,s6,x5/7,pg/b,x11/10,s7,x8/1,pp/i,s8,x2/12,s6,ph/m,x3/6,pl/k,x11/7,pb/e,x14/0,pi/c,s11,x10/4,s9,x8/9,s9,x7/2,pd/p,s3,x6/0,s15,pe/l,s10,x5/13,s5,x4/3,pk/c,x1/6,s3,ph/d,x2/9,pp/i,x7/3,s14,x15/14,s2,x8/9,s11,x0/4,pe/f,x13/12,s13,x5/7,pm/b,s2,x9/15,pf/j,x3/2,pc/d,x10/6,s12,x12/0,s11,x7/15,pe/i,x6/13,s11,x8/12,s12,x3/5,pf/m,x2/6,pl/j,x11/4,s3,x5/9,s11,x1/11,pf/i,x10/0,s10,x14/12,s14,pe/a,x11/9,pn/h,x8/6,s13,x10/1,pf/j,x15/9,pa/n,x4/1,po/l,x15/6,pp/h,x13/1,s14,x14/12,s14,x0/2,pa/d,x15/4,s9,x11/5,s6,x13/7,s12,x15/10,s12,x7/8,pb/h,x3/10,s2,x12/14,s13,pf/m,x7/6,s3,x9/12,s1,x5/15,s4,x4/11,pg/p,x2/10,pk/d,x12/9,pp/a,x8/5,pf/d,x7/0,s4,x10/1,pe/p,x6/2,s6,x9/15,pk/d,x11/13,s5,x0/5,pc/o,x3/6,s13,x11/0,pd/l,s12,x13/8,pc/m,x15/11,s15,x13/2,pi/j,x4/6,pf/m,x0/8,s5,x5/2,pn/o,x7/14,pi/d,x8/6,pk/m,x13/14,pb/o,x15/2,s2,x14/6,pm/a,x15/11,s13,x5/8,pd/b,x11/4,pl/c,x12/6,s10,x5/4,pd/p,x0/1,s1,x12/2,s10,x7/11,pb/k,x8/3,pi/j,x9/12,s15,x4/3,s12,x13/11,pd/e,x2/10,s6,x12/8,pf/o,x15/4,ph/p,x5/14,s2,x9/6,s12,x5/1,s14,x12/8,pl/g,x4/1,pa/m,s2,x0/5,s10,x12/4,s8,x6/1,s5,x15/5,ph/o,x14/7,s8,x8/12,pd/g,x11/13,s1,x9/1,pc/p,x10/15,s11,x3/7,s9,x0/9,pj/k,x2/6,pc/e,x0/1,s3,x2/7,pd/g,s8,x4/1,pp/l,s10,x10/6,s6,x15/9,s15,x12/13,pd/o,x9/7,s1,x2/6,s14,x5/12,pb/k,x1/15,s2,x10/11,pg/i,x12/13,s14,x11/2,s11,x10/3,s3,x0/11,s3,x1/2,po/a,x3/5,s7,x8/1,s11,x7/9,s1,x6/13,s11,x4/2,s12,x13/10,pb/e,x2/7,pk/g,x12/5,po/h,x10/11,pf/j,x0/14,s5,x7/12,pa/l,x0/5,s4,x9/2,s14,pg/p,x10/8,s15,x12/6,pn/h,x2/10,s6,x13/1,s6,x8/9,pj/e,x5/15,pf/o,x8/0,pl/n,x10/11,s1,x4/3,s9,x5/8,pc/p,x3/15,pl/m,x4/13,pf/j,s9,x6/15,pb/g,x10/7,s5,x14/1,pm/o,x7/11,s14,x1/5,s13,x9/4,pp/d,x15/14,s7,x8/10,s6,x0/7,pe/g,s14,pn/a,x4/3,s14,x0/5,s6,x6/12,pf/i,x10/5,s5,x6/14,pn/j,x11/9,s6,x14/7,pa/b,x5/2,pd/o,x9/3,s9,pa/e,x8/12,pd/c,x4/3,pl/p,x15/6,s4,x5/7,s15,x3/2,s5,pe/d,s10,x12/14,s5,x7/0,pb/o,x12/1,s6,x14/10,s13,x4/0,s13,x9/15,pn/g,x3/1,s7,x0/7,pi/c,x6/15,s11,x5/7,pl/b,x1/14,s10,x4/0,pf/m,x15/13,s8,x5/2,s10,x9/0,s7,x7/15,pl/o,x6/0,pe/d,x1/12,s4,x11/0,s10,x10/5,s2,x7/2,s4,x8/12,pi/l,s9,x15/2,s10,x9/10,s7,x7/14,pg/h,x4/1,s13,pj/e,x8/12,ph/n,x6/15,s11,x5/10,pa/e,x6/12,pd/c,x11/8,s1,x15/12,pa/g,s14,pf/h,s14,x8/2,s4,pm/g,x11/0,s15,x5/4,pc/e,x1/3,pj/f,x4/10,s8,x2/5,pe/a,x10/9,pf/d,x8/1,pc/h,s14,x7/3,s12,x8/4,s4,x2/1,s14,x12/6,s14,x11/14,s8,x4/13,s14,x12/15,s14,x7/13,pe/n,x4/12,s8,x6/5,pc/m,s12,x0/8,s2,pj/f,x11/1,s5,pc/a,x6/2,s12,x8/11,s9,x10/3,pd/n,x2/5,pa/f,x1/11,s6,x3/6,s10,x9/12,s10,x11/1,s3,x5/7,s8,x1/13,pp/j,x5/0,po/e,x15/9,pk/p,x7/5,s14,x6/1,pb/c,s3,x5/9,s11,x2/4,s14,x5/8,pg/e,x7/6,pm/b,x13/9,s2,x10/5,s6,x12/13,s9,x3/14,s15,x13/12,s11,x4/15,s11,x13/0,s2,x5/8,pn/a,x0/9,s2,pc/h,x11/6,s6,x13/9,s11,x0/7,s9,x3/2,s11,x4/0,s10,x11/3,s3,x9/4,s11,x2/10,s4,x3/0,pj/e,x12/11,pi/k,x10/15,s8,x5/14,s7,x9/7,s11,x15/11,s8,x12/4,pb/e,s2,po/n,x14/3,pg/i,x4/15,pf/l,x6/9,s12,x11/10,s8,x1/2,pg/n,x5/0,s7,x13/4,pd/e,s9,x0/8,pm/n,s12,x3/4,s15,x1/8,pd/p,x5/4,s5,x14/3,s8,x9/10,s1,x3/11,pc/b,s7,x9/1,pa/p,s14,pd/j,s10,x8/7,pc/h,x5/12,pl/f,x8/13,s10,x11/7,s8,x6/10,s12,x15/13,s13,x2/10,s4,x9/0,s6,x2/8,pa/d,x12/14,s4,pb/j,x8/4,pg/l,x9/12,s5,x3/11,pj/h,x13/7,pi/a,s1,x0/8,pc/f,x4/13,pb/l,x2/9,s3,x12/4,pe/a,x2/14,s13,x6/1,pm/b,s10,x9/11,s8,x4/15,pf/h,x5/10,s14,x12/0,s6,x4/15,s14,x6/10,s6,x0/4,pp/m,x13/7,pg/i,x0/8,s11,x6/13,pb/p,x5/7,s1,x3/2,po/k,x0/9,pc/f,x14/2,pi/o,s3,x3/5,pe/c,x2/6,s5,x1/10,s14,x6/14,pp/j,s10,x0/15,ph/g,x4/1,s4,x7/5,s10,x4/6,pp/e,x12/7,pn/l,x8/3,s12,x10/1,s3,x11/9,pc/a,x2/13,pl/n,s2,x3/7,s13,x5/2,s15,x12/10,s1,x2/8,s6,x1/13,ph/j,x8/9,s13,x14/10,po/k,x7/13,s2,x12/14,pa/p,x1/10,s15,x8/2,pd/c,x13/15,s7,x2/1,s4,x12/13,pe/n,x11/5,pg/j,x10/1,s1,x4/0,s13,x14/6,pk/i,x3/15,pp/g,x12/11,po/e,x10/1,s14,pl/h,x8/6,pb/i,x11/5,pj/k,x2/4,s12,x11/0,s1,x9/7,pg/m,x5/2,s4,x3/12,pj/a,s6,x10/8,s3,x0/7,pm/g,x14/3,s4,x15/8,pi/f,x11/2,pl/b,s9,x15/4,pa/g,x9/0,s9,x8/10,pn/f,x5/4,s5,x6/15,pe/o,x4/2,s13,x11/8,s14,x10/1,s7,x2/0,s5,x3/6,pn/b,x13/7,pa/e,x12/11,s3,x5/10,pk/b,x9/8,pa/d,x6/12,s3,pg/e,x4/15,s7,x10/2,pj/l,s5,x15/13,pd/i,x6/1,pg/h,x8/13,s5,x3/9,s14,x10/15,pn/j,x3/12,pi/m,x0/11,s12,x14/15,s10,x9/13,pl/p,x12/5,pm/b,x8/6,s12,x11/10,pn/l,s3,x7/13,s1,x15/0,s2,x7/12,pi/p,x1/10,pj/m,x3/15,s14,pc/b,x12/6,s7,x11/14,pd/m,s9,x0/15,pp/l,x4/6,s14,x2/14,s15,x0/15,s8,x13/5,s2,x2/11,s4,x9/0,s9,x1/14,s13,x0/11,s2,x10/1,pa/j,x9/5,s7,x13/11,s14,x14/6,s8,x8/10,s3,x13/0,pc/k,x8/7,s15,x15/10,s3,x7/12,s1,po/f,x10/11,s6,x13/9,pe/n,x3/5,s11,pj/h,x10/8,pc/d,s4,x14/1,po/p,x3/4,s8,x6/12,s13,x8/4,pj/g,x10/0,pm/f,x4/13,pd/o,x9/15,s4,x2/5,ph/c,x12/8,s15,x10/5,s6,x9/12,s6,x6/7,pb/n,x0/10,s13,x8/3,ph/g,x6/10,s3,x2/3,s8,x15/6,pl/p,x13/9,s8,x15/6,pn/c,s9,x7/13,pi/p,x11/14,s3,x2/3,pd/a,x9/6,s11,x8/12,po/k,x3/5,s6,x12/8,s3,x10/6,pg/b,x0/4,s15,x2/6,s8,x4/9,s14,x12/15,s1,x0/9,pa/o,x8/6,s3,x5/10,s4,x12/4,s10,x0/6,pm/e,x4/12,pf/c,x8/6,s12,x3/7,pn/l,x5/12,s10,x13/2,s15,x3/0,pg/f,s5,pe/a,x14/10,po/h,x8/1,s13,x4/14,s3,x12/10,s13,x9/2,s11,x5/15,pd/e,x10/7,s2,x3/6,pi/j,x7/1,s5,x2/9,s7,x1/4,pm/b,s2,x15/8,s8,x14/4,s9,x12/10,s6,x7/11,pe/g,x9/15,s3,x4/13,s2,x10/0,pj/k,x7/3,s3,x12/5,pe/c,x1/3,pp/j,x6/0,pb/d,x4/1,s3,x15/0,s12,x9/4,pf/h,x0/14,pg/a,x10/6,s10,x4/13,s13,x6/14,pb/f,x8/9,s9,x12/10,pi/a,x7/13,pp/b,x15/12,pi/l,x0/11,s14,x3/7,s10,pc/n,x6/12,s10,x0/5,s1,x13/6,pi/o,x0/11,s12,x15/1,s12,x2/13,ph/a,x7/3,s14,x0/1,s15,x10/13,s15,x6/7,s12,x2/14,s1,x0/15,pk/i,x3/6,s9,x1/2,s2,x7/15,pg/b,x14/11,s9,x5/3,po/p,x0/14,s13,x15/5,s14,x6/4,s7,x1/13,ph/m,x3/7,s4,x10/9,pe/c,x15/14,s12,x9/0,pb/n,x6/15,s14,x0/5,pm/e,x6/15,s3,x4/7,s7,x5/8,s5,x2/15,s7,x4/11,pk/a,x9/0,s2,x13/5,s3,x8/15,s7,x4/10,pd/g,x7/15,pc/i,s11,x10/9,pp/f,x2/14,ph/j,x9/0,s9,x13/10,s4,x0/6,s6,x7/9,s2,x13/2,po/p,x15/7,pn/j,x0/1,s5,x6/8,pc/f,x13/7,pn/d,x11/1,s6,x3/7,pe/k,x14/0,pn/c,x12/15,s4,x8/7,pm/a,x0/5,ph/k,x7/9,s6,x3/15,s7,x11/5,s4,x13/0,pi/a,x2/11,s6,x4/6,s12,x13/10,s5,pd/j,x6/4,s3,x11/15,pg/f,x3/14,s12,x6/8,s3,x0/3,s14,x14/13,pj/h,x12/6,pa/l,x14/0,s15,x12/10,pj/b,x2/15,ph/e,x12/1,s8,x8/6,pp/n,x14/15,pb/j,x5/8,s3,x6/10,s2,x9/1,pg/f,x10/11,s12,x13/8,s8,ph/n,x9/0,pp/k,x4/3,pc/n,x13/6,s3,x9/15,pj/f,x14/13,s11,x10/2,s1,x13/4,pi/g,x12/3,s6,x9/7,s8,x2/0,s2,x11/5,pn/m,x3/12,pl/e,x9/6,ph/a,x13/1,s15,x6/12,s6,x2/10,s4,x14/0,pc/p,s7,x8/10,pl/d,s3,x11/4,pj/i,x7/6,s14,x1/10,pm/g,x12/3,pe/d,x9/11,pa/c,x13/6,pd/i,s10,x11/7,s10,x14/9,s14,x4/7,s15,x10/3,s11,x6/14,s7,x12/15,pc/j,x0/8,pd/o,x13/1,s2,x7/0,pa/j,x15/5,pl/b,x7/6,pn/m,x10/8,s14,x9/14,pa/p,x7/6,pc/o,x13/8,s1,x10/12,s7,x8/5,s8,x15/12,pb/g,x13/3,s13,x7/11,s10,x15/12,s14,x7/9,s2,x14/11,s2,x7/8,pf/n,x15/4,s3,pk/c,x14/13,s10,x7/2,s3,pn/j,x3/11,s10,pe/l,x9/6,s3,pj/f,x14/0,s4,x10/4,s4,x3/12,ph/n,x4/2,s6,x3/14,s13,x12/4,s14,x13/8,pl/e,x7/12,ph/d,x8/0,pc/m,x14/4,s5,x10/3,ph/f,x13/6,s5,x8/5,pe/g,x15/9,s11,x0/4,s14,x7/2,s2,x0/14,s11,x10/9,ph/n,x8/2,s2,x1/7,s13,x13/2,s3,x1/15,s10,x4/9,s15,pp/b,x8/2,s10,x1/7,po/f,x0/12,pa/j,x4/7,po/b,x6/10,s3,x14/1,s2,x2/3,s2,x10/13,pd/j,x4/5,s12,x6/14,s6,x10/11,pn/i,x6/15,pg/a,x3/8,s2,x6/5,s7,x11/3,s8,x9/10,s5,pm/e,x6/3,s12,x5/2,s7,x9/6,s14,x1/2,s6,x13/4,pg/b,x7/0,pe/m,x12/13,s11,x4/2,pn/c,s1,x5/10,s3,x0/1,s4,x2/8,s10,x14/7,s10,x6/10,s4,x13/0,s2,x10/4,s7,pj/o,x7/2,pb/g,x8/9,s14,x15/6,ph/c,x13/4,s15,x14/11,s13,x9/3,s13,x13/12,pp/a,x8/7,s10,x13/10,pm/o,x5/1,s12,x8/10,s1,pg/l,x11/0,s15,x10/12,pe/a,x1/0,s11,x10/15,s4,po/h,x11/6,s14,pd/b,x10/4,s4,ph/a,x12/1,pm/b,x14/4,pp/g,x13/1,s1,x8/3,s2,x12/11,s1,x8/10,s6,x9/6,pn/h,x14/11,s11,x9/8,s9,x4/11,pe/f,x5/15,s10,x0/1,s10,x5/6,pg/h,x9/8,po/f,x11/10,s11,x5/6,s10,x7/8,pd/l,x0/12,s10,x7/14,s7,x9/10,s9,x1/5,ph/a,x0/9,pc/j,s3,x8/6,pi/f,x3/15,s6,x0/9,pm/b,s3,x8/6,s4,x0/12,pg/d,x8/5,s6,x10/13,s14,x8/4,s4,pm/j,x11/0,s7,x5/3,s4,pl/p,s11,x7/9,po/g,x8/12,s14,x5/15,s11,x6/14,s14,x0/7,pm/l,x15/1,s12,x13/0,pp/b,s11,x8/3,s3,x14/7,s10,x10/6,pa/c,x5/3,s9,x4/9,pf/b,x1/14,pa/p,x12/7,s7,x3/2,pl/j,x7/1,s11,x0/4,s11,x1/10,pp/a,s4,x14/5,s10,pe/j,x12/7,s7,x15/5,s11,x0/8,s12,x9/6,pk/c,x14/10,s7,x7/5,po/i,x0/4,s6,x3/9,pm/k,x13/14,pe/n,x4/10,pa/p,x8/11,pb/k,x5/13,pd/o,x14/15,s10,x7/13,s15,x8/11,pk/b,x13/15,s12,x6/12,pj/h,x5/1,pf/o,s8,x4/13,s12,x8/0,pj/b,x13/4,s15,x0/15,s13,x13/11,s1,x3/4,s9,x10/12,s6,x4/11,pp/a,x15/10,s6,x1/0,pi/e,x9/8,pk/a,x4/14,s2,x8/12,s11,x6/1,s14,x3/11,s8,x5/10,pn/i,x13/0,pd/a,s10,x8/1,ph/e,s11,x14/4,pb/p,x12/7,pm/o,s6,x13/14,s11,x0/12,pa/d,x10/15,s5,x12/1,pl/j,x15/8,s4,x0/13,s10,x6/12,s10,x4/9,s5,x0/15,ph/e,x5/8,s1,x14/3,s11,x2/9,s13,x10/4,s9,x13/0,s10,x3/7,s7,x14/13,s7,x6/0,s9,x1/12,s13,pl/m,x5/10,pa/f,x0/15,s9,x2/1,s13,x3/9,s2,x6/10,pm/g,s12,x12/8,s8,x0/9,s11,x10/14,pa/b,x2/3,pk/g,x8/7,pf/d,x10/12,s13,x3/6,pe/i,x9/8,s14,x1/5,s1,x11/7,s11,x5/8,s4,x2/7,pn/k,x6/1,pa/i,x15/3,s3,x11/9,pe/p,s3,x8/7,s2,x14/13,s15,x6/15,s12,x7/9,pn/g,x1/14,pa/i,x10/7,s9,x4/1,s2,pl/j,x6/13,pp/e,x2/7,s5,x4/14,s12,x7/9,s6,x4/5,s8,x14/10,s4,x1/5,s7,pd/l,x3/11,s3,x7/9,s3,x10/3,pp/k,x14/4,s15,x5/12,s11,pe/j,s6,x14/15,s3,x9/5,pc/f,x10/13,s1,pn/e,s4,x8/1,s14,x2/11,s15,x7/8,pb/g,s15,x2/14,pn/j,x11/1,pa/p,x5/4,s6,x13/3,pn/e,x6/9,ph/o,x2/10,pc/e,x15/12,s14,x13/8,s13,x0/2,s2,x1/13,pi/o,x9/3,s8,x5/12,s2,x9/7,pe/g,s12,x10/14,s11,x2/12,pp/i,s5,x14/8,pg/b,x13/12,pc/n,x11/0,s4,x7/3,s10,x1/12,s14,x8/3,pa/g,x2/1,s5,x0/3,pi/l,x13/12,s4,x9/6,s7,x11/4,s4,x10/7,s5,x9/2,s2,x12/4,s2,x9/8,s4,x1/4,pm/h,x10/15,s4,x3/7,s13,x10/13,s6,x14/9,s15,pk/b,x3/13,s12,x7/12,s10,x11/14,pg/d,x15/4,pi/l,x11/7,s9,x12/2,s13,x14/5,s1,x4/13,s5,x2/11,s2,x3/14,s5,x6/1,s8,x8/9,s2,x1/11,s11,x15/6,s14,pk/d,s15,x8/1,s12,pm/p,x4/15,pf/d,x0/1,s5,x14/15,s7,x7/8,s1,x12/10,pe/g,s6,x9/0,s5,x2/10,s8,x9/11,pp/d,s4,x12/8,s13,pa/g,x4/5,pi/d,x14/13,s2,po/l,x12/15,s3,x7/3,s13,x12/1,s6,x11/9,s14,x3/0,pd/i,x2/5,pn/b,x10/11,s4,x13/2,pi/a,x5/3,s14,pf/e,x6/15,s5,x10/0,s7,x9/3,pb/p,x4/5,ph/e,x2/8,pl/g,x9/4,s4,x15/12,s14,x9/14,pk/j,x8/11,pe/i,x2/4,s2,x13/7,s13,x12/11,s1,x7/14,pj/g,s9,x3/15,s2,x14/10,s8,x9/15,s2,x7/2,s11,pm/a,x3/14,s9,x12/6,pl/b,x3/13,s8,x10/8,pk/a,x1/15,s15,pl/f,x7/3,pk/i,x8/9,pg/e,x15/4,s15,x6/0,s11,x14/5,pk/h,x4/12,pn/e,x2/13,pb/a,x7/6,s1,x0/12,s5,x11/3,s3,x0/2,pl/o,x9/11,s9,x1/0,s10,x14/2,s1,x4/0,pn/g,s11,x7/1,s12,pk/f,x2/11,s7,x3/1,ph/p,x14/5,pe/f,x3/10,s14,x8/2,s2,x4/15,s5,x10/11,pg/c,x15/4,s14,x11/2,s11,x9/0,s9,x14/10,pp/f,x6/1,po/j,x15/8,pl/k,x1/6,pb/g,x8/9,pc/m,x4/12,pg/k,x2/8,s11,pb/m,x10/9,s12,x0/1,s5,x15/3,s3,x14/4,s6,x1/12,pd/o,x5/15,s5,x2/6,s3,x7/1,s4,x0/13,s7,x1/14,s9,x2/8,s2,x9/7,s15,x8/13,s1,x0/6,pb/j,x14/9,s8,x5/1,s13,x9/12,s8,x6/10,s6,pi/h,x13/4,s13,x11/0,pa/m,x10/2,s7,x7/4,s6,x5/14,s12,x6/9,s15,x13/0,po/h,s14,x7/1,s3,x0/14,s1,pf/b,x1/4,s15,x11/7,s10,x1/9,pi/n,x14/10,pl/k,x8/7,pf/h,x11/0,s3,x5/2,s11,pl/k,x6/0,pi/a,x15/8,s13,x1/6,s2,x12/2,s10,x0/4,s3,x3/5,s5,x4/9,s13,pp/l,s14,pf/k,x0/2,s11,x10/6,pm/d,x14/0,s4,x10/5,s3,x1/7,s9,x3/12,s5,x7/2,pb/h,s1,x11/4,pl/i,x9/3,s4,x10/2,po/k,x7/1,pc/m,x6/10,pg/f,x5/2,pj/p,x0/8,pa/l,x9/6,pp/g,s7,x12/3,s3,x9/0,pm/c,x12/11,s12,x8/6,pa/g,x3/7,po/e,x2/15,s11,x12/3,s6,x8/0,s3,pg/n,x14/15,s10,x2/11,pc/k,s3,x15/7,s8,x12/13,pm/i,x7/0,s11,x15/13,s12,pn/l,x9/1,pj/g,x10/0,s2,x9/12,pe/b,x1/5,pp/j,x3/11,pb/c,x1/5,s3,x2/14,s4,x8/12,s6,pf/e,x3/0,s6,x12/13,pl/i,s9,pp/n,s9,x4/14,pk/m,x5/11,s5,x10/9,s7,x3/15,pa/d,s15,x4/10,ph/c,x1/8,s6,pm/o,x5/3,s11,x14/15,s7,x11/12,s11,x10/15,s7,x14/4,s1,x5/12,pk/f,x7/10,s3,x1/2,s14,x7/0,s11,x15/1,pc/m,x13/14,pl/f,x3/12,pj/m,s14,x10/15,s9,x2/7,pc/b,x15/5,s5,x10/3,pm/n,x4/15,pe/p,x7/13,pn/b,x0/11,s9,x12/5,s5,x14/4,s13,x12/2,pm/c,s8,x9/11,s5,x10/1,pp/e,x12/5,pg/a,x10/0,pd/f,x7/11,s3,x14/2,s13,ph/i,x1/3,pc/g,x10/8,pa/i,x11/15,s12,x7/8,pp/f,x1/2,pl/j,x11/4,s15,x9/10,pm/h,x0/6,pg/n,x13/7,pi/b,s1,x9/11,s5,x3/10,s1,x2/12,pj/k,x9/5,s3,x13/10,s8,x15/5,s2,pf/i,s4,x10/4,pb/e,x0/11,s8,x15/9,pj/l,x0/5,s11,x4/14,s13,x2/3,s4,ph/k,x15/4,pe/p,x11/13,pd/l,x2/8,pb/h,x7/13,s4,x9/11,s4,x14/2,s3,x11/3,s14,x4/6,pc/a,x2/8,s13,x15/6,pl/f,s7,x13/2,s5,x6/9,pk/a,x2/11,pb/m,x8/13,s8,x14/6,pn/f,x10/15,pi/b,x12/14,s5,x7/1,s5,x13/12,s7,x6/15,po/l,x8/2,s15,pb/i,x3/6,s9,x7/1,s11,x10/6,s14,x4/2,pc/p,x15/0,s12,x11/4,pf/b,x3/10,s5,x15/13,pc/d,x4/11,s11,x8/9,pm/e,x15/6,pn/j,x8/9,s3,pp/i,x14/7,s2,x10/6,pe/f,x3/8,ph/l,x1/15,s3,x13/7,pn/o,x5/1,s7,x10/0,s1,x9/5,s12,x2/0,pd/l,x12/6,pp/c,x5/13,s5,pd/l,x2/6,s3,x14/4,s11,x15/8,s13,x10/12,pb/h,x7/13,pd/p,x1/3,s15,x12/9,pc/e,x5/8,pi/n,s5,x11/7,s3,x12/2,pc/a,x14/13,pf/i,x8/4,s11,x13/2,s8,x0/4,s15,x5/1,s6,x10/2,s11,x14/0,s10,x1/11,pk/n,x0/4,s10,x2/6,s4,x9/7,pi/o,x14/0,s11,x15/9,pb/d,x3/1,s9,x10/6,pf/e,s8,x15/1,s1,x2/12,s10,x1/8,ph/a,x9/13,s6,x15/0,po/j,x2/11,s10,pk/a,x7/0,s3,x10/6,pl/n,x5/4,s11,x15/1,s1,x9/7,s5,x15/14,s5,x4/10,s5,x14/15,s2,x9/13,s14,x5/0,s7,x1/15,s12,x10/2,pj/a,x0/15,pb/o,x8/14,pe/h,x2/7,pa/b,x13/8,s14,x2/6,pp/j,x15/7,s8,x14/10,s13,x4/2,pk/f,s8,x8/12,ph/j,s10,x6/13,pl/k,x15/5,s14,x3/8,s8,x14/0,pg/i,s13,x3/9,s10,x15/6,po/j,x12/0,pb/p,x3/9,pe/o,x13/5,pa/d,x3/9,s15,x14/15,s8,x6/5,pb/f,x7/2,s4,x12/8,s7,x11/1,s6,x10/6,ph/k,x14/13,s9,x4/5,pn/p,x1/9,s1,x0/10,s8,x6/11,pb/o,x7/1,pi/f,x13/3,pl/k,x8/11,pd/p,s10,x13/0,pm/n,s7,x10/4,s13,x5/11,pi/g,x14/4,s1,x2/12,s14,x15/10,s4,x8/9,s2,x11/7,pa/m,x15/3,s5,x6/2,s6,x10/14,pg/k,x15/1,s13,x12/4,s3,pn/m,x3/13,s11,x6/7,s8,x13/14,pf/i,x1/9,pa/m,x6/11,pj/l,x7/9,pe/c,x13/14,s4,x0/6,pj/f,x3/10,s3,x7/15,s9,x8/2,s2,x10/9,s5,x12/4,s2,x3/9,s13,x8/15,s9,x13/11,s2,x4/3,s8,x0/12,ph/p,x10/6,s12,x3/13,s13,x11/14,pa/c,x3/15,s10,x13/5,s4,x2/4,ph/d,x7/12,pe/g,x5/11,pa/j,x2/6,pp/n,x7/5,s11,x4/0,s14,x7/5,pk/d,x15/2,pm/b,x0/11,s9,x10/9,s10,x11/2,pi/c,x1/4,s5,x6/13,s6,pj/n,s10,x3/4,s4,x12/5,s9,x8/4,s10,x13/15,pe/h,x14/1,s7,x0/6,pc/d,x8/9,s10,x5/12,s13,x9/3,pl/e,x2/10,s2,x13/11,s1,pm/h,x0/6,pg/a,x8/12,s4,x3/9,s1,x8/0,pj/f,x3/1,s8,x13/15,pc/k,s12,x6/8,s8,x5/0,s4,x13/7,s6,x8/4,s4,x1/14,s9,x4/6,s6,x12/0,ph/j,x5/10,s3,x13/1,pl/d,x15/4,pj/o,x10/12,s9,x7/11,s8,x12/14,pk/c,x4/9,s8,x6/2,s5,x10/14,s9,x4/12,s12,x5/15,s1,x2/6,s1,x5/7,s5,x10/4,s9,x12/8,s10,x7/0,pm/b,x6/10,s11,x15/14,pg/e,x1/4,s9,x5/9,s14,x8/10,pn/m,x12/9,s10,x14/7,s2,x6/2,pa/e,x8/14,pc/d,x13/1,s9,x9/7,ph/p,x6/1,pk/l,x0/4,s13,x5/9,s6,x2/14,s11,x1/0,pe/m,x7/9,s6,x3/4,pb/p,x6/1,pl/k,x15/0,s4,x10/6,pg/j,x14/9,s5,x8/13,s2,x1/11,pk/d,x3/15,pc/m,s3,x7/11,pd/p,x13/4,po/m,x2/14,pc/i,x1/12,s3,x5/15,s4,x11/9,pf/o,x5/2,s6,x10/1,s4,x12/2,pp/b,x11/0,s15,x14/3,s5,x13/11,s1,x5/7,s10,x10/14,pe/h,x8/5,s8,pc/m,s14,x13/15,pf/g,x12/11,s6,x4/3,s1,x15/11,pb/j,x10/13,s14,x11/15,s11,x10/4,s1,x12/7,s11,x3/0,pd/o,x7/11,s13,x2/0,s4,x11/5,pl/b,x2/8,pi/m,x1/13,s1,x3/5,s6,x12/14,s10,x13/3,s4,x10/5,s12,x1/12,ph/g,x15/8,pn/c,s4,x13/12,pm/b,x2/10,pd/l,x1/5,s12,pb/k,x7/3,s7,x2/10,pg/c,x11/5,s14,x8/3,pf/o,s11,x7/12,pa/m,x2/5,s7,x6/4,s11,x8/3,s4,x5/6,s14,x12/3,pj/p,x2/5,s12,x1/14,s2,pd/l,x11/7,pj/h,x0/1,s8,x14/10,s1,x2/13,pe/f,x8/3,s5,x15/5,s1,x9/8,s14,x7/3,s11,pp/h,x10/13,s5,x5/9,pn/m,x8/15,s12,x5/4,pb/e,x13/3,pi/c,x14/2,ph/l,x10/11,s6,x15/9,pm/f,x4/2,pc/k,x6/8,s11,x14/15,s1,x4/6,pb/f,x0/7,s14,x8/11,s9,x5/0,s3,x2/15,pm/g,x4/1,pp/f,x8/12,s2,x15/14,pl/h,x7/8,s15,x5/11,s8,x4/1,s5,x12/6,pk/j,s7,x0/4,pg/p,x15/5,pl/k,x0/3,pj/o,x9/8,s12,x13/6,pd/h,x8/10,s2,x2/1,s7,x8/5,pj/k,x2/4,ph/d,x15/7,s6,x9/10,pa/p,x13/12,s13,x5/10,ph/k,x6/4,pe/d,x8/10,s2,x11/5,pb/f,x7/9,s8,x14/0,s4,x10/13,s6,x3/7,pd/g,x8/14,pm/i,x10/12,s8,x8/11,s7,x15/14,s13,x8/11,s1,x13/6,s15,x14/0,pk/e,x12/6,s4,x14/5,s3,x6/13,ph/d,x1/9,pn/o,s7,x3/8,pb/i,x5/9,s12,x8/6,s9,x5/13,pp/n,s10,x12/3,pa/g,x13/4,s6,x11/0,pl/e,x3/7,s11,x8/4,s10,pd/k,x11/1,pl/p,x4/14,pa/i,x2/7,s12,x13/4,pc/g,x3/10,s3,x13/9,pi/f,x6/3,po/j,x1/12,pg/p,x14/3,ph/l,x9/1,s2,x15/12,s4,x3/0,s11,pk/g,x12/7,s11,x14/11,s5,x6/13,s6,x11/9,pl/b,x10/0,s8,x14/6,s11,x4/15,po/n,x6/13,s10,x2/1,pe/k,x13/4,pd/a,x14/10,s3,x6/2,s14,x8/14,s5,x4/2,s15,x11/12,pb/p,s7,x1/4,s5,x6/13,s9,x4/11,s3,x7/5,pd/l,s6,x15/1,s1,x3/8,s14,x9/12,s1,pn/f,x2/4,s3,x0/9,s15,x1/12,pg/j,x13/8,s6,x12/5,s7,x11/8,s5,x7/5,s2,x13/6,pi/p,x15/0,s6,x3/8,pl/k,x12/4,s14,x7/2,s6,x0/6,pm/c,x5/11,pj/g,s3,x8/13,s14,x12/14,s6,x11/7,s15,x9/3,s4,x15/10,s3,x11/8,s10,x1/10,s4,x15/9,pk/l,s2,x7/8,s3,x9/10,pi/d,x7/12,pl/j,x11/5,s4,x4/14,pm/n,x3/7,s10,x1/6,pf/p,x5/14,s14,x12/2,s7,x3/7,s6,x12/9,pk/e,x0/10,s4,x6/5,pc/i,x1/3,s8,x14/11,s1,x3/12,s4,pg/d,x4/9,s8,x5/0,pb/i,x10/7,s7,x15/8,s9,x12/11,s14,x4/2,s11,x1/13,s9,x12/9,pg/c,x15/8,s10,x0/4,s10,x5/10,s13,x3/9,pp/f,x14/13,pa/n,x15/5,s10,pp/i,x13/10,po/m,x2/7,pe/g,x10/11,pk/m,x0/1,pl/h,x6/2,pa/e,x9/8,s5,x2/6,pc/i,x10/12,s3,x14/3,ph/a,x13/11,pj/p,s14,x14/8,pi/d,x13/5,pf/j,x1/10,pg/i,x15/11,s3,x10/14,s10,x0/9,s5,x5/11,s8,x2/12,ph/f,x1/5,s10,x13/10,pl/j,x8/3,s12,x6/0,s13,x5/7,s15,x9/12,s9,x14/1,s5,x7/6,s6,x13/11,pc/g,x6/5,pd/n,x11/0,pk/p,s1,x2/3,s3,x11/10,s14,x14/0,s2,x15/11,s3,x6/14,pc/g,x4/3,s14,x10/7,s1,x13/11,s1,x7/2,pb/m,x14/10,s5,x13/8,s1,pk/p,x12/0,s3,x11/4,s8,x10/1,s2,x11/9,s12,x1/2,pb/j,x7/10,pp/d,s2,x0/11,s4,x1/10,pa/l,x7/13,s3,x12/1,s9,x7/10,s13,x5/9,po/e,x11/1,s13,x7/9,s1,x4/14,s1,x10/6,pf/l,s7,x8/1,pb/c,x6/3,s6,x4/13,s1,x5/0,s1,pi/f,x4/7,s15,x9/15,s5,x10/6,s14,x12/15,pm/n,x14/10,pp/o,x6/3,pd/j,x12/9,pe/c,x15/6,s2,x7/8,s3,x1/4,pl/a,x9/2,ph/f,x12/4,pj/g,x7/5,pf/h,x1/8,s7,x0/7,s12,x6/14,s4,x15/11,pc/g,x12/0,ph/i,x7/8,po/e,x4/10,pf/p,s6,x5/2,s11,pg/i,x9/7,po/p,x0/10,s14,x7/11,s3,x12/5,ph/j,x9/15,s3,x3/13,pb/o,x15/10,pd/c,s4,x0/2,s2,x6/12,s12,x7/8,pf/l,x13/12,s1,x11/15,s10,x4/0,s2,pc/i,x7/1,pd/g,x5/4,pe/b,x9/7,s7,x8/3,s5,x0/13,s12,x10/2,pa/l,x14/7,pb/g,s10,x11/2,s8,x5/9,s6,x12/0,s9,x13/4,s3,x3/14,s11,x11/9,pp/o,x15/0,s13,x10/3,pb/i,x0/9,s9,x11/6,s12,x10/3,s10,x6/14,s13,x2/9,s11,x7/15,pl/m,x2/6,pp/d,x14/7,s4,pl/k,s1,x12/9,s10,x3/7,pd/p,x8/5,s14,x12/1,pn/o,x11/3,s11,x2/4,pj/b,x6/10,pd/a,x11/8,s7,x10/3,s2,x12/4,pl/e,x10/13,pn/p,x14/0,s8,pm/g,x3/6,s11,x12/15,s10,x1/9,s10,x12/14,s4,x5/2,pn/e,x10/8,s10,x12/0,s10,x7/1,s5,pb/a,x2/14,s6,x10/12,pd/j,x0/8,po/i,x13/9,pm/j,x4/8,s6,x6/3,pe/a,s5,x11/0,s13,x8/12,pd/k,x13/4,po/p,x10/7,s11,x1/9,s4,x14/4,s14,x10/3,s5,x7/0,pd/f,s1,x1/5,pb/l,x11/3,pg/j,x13/10,s1,x8/7,s14,pp/m,x4/5,s12,x2/13,pj/n,x12/0,pl/e,x1/14,pg/n,x4/8,pl/d,x1/14,pf/c,x8/15,pi/n,x11/1,pm/j,x3/4,s5,x15/13,pg/a,x2/12,pl/b,x14/0,s6,x4/1,pp/m,x0/6,s6,x13/4,s8,x0/8,s7,x3/13,s13,x4/6,pg/c,x13/7,pp/l,x9/14,pc/i,x7/10,s7,x6/3,s8,x5/15,s10,x3/4,s12,ph/n,s7,x2/6,pc/f,s7,x4/9,pd/b,x15/13,pi/h,x3/6,s11,x10/14,pe/p,x13/1,pg/f,x5/11,s7,x14/2,s11,x11/7,s8,x13/9,s12,x8/12,s8,x15/1,pe/c,x4/5,s8,x8/6,ph/n,s9,x0/13,pd/i,x10/9,ph/k,s2,x2/4,s7,x11/7,s1,x10/3,pa/o,x2/13,s12,x9/5,s2,x2/12,s9,x7/8,pi/m,x14/10,s8,x8/11,s7,x9/0,pl/n,x14/1,s5,x7/5,s11,x11/3,s14,x14/0,pf/b,x11/6,s10,pj/l,x10/5,s1,x13/2,s13,x14/7,pc/n,x8/15,s11,x12/4,pk/a,x7/3,pj/i,x13/1,s11,x10/14,pd/b,x15/13,pc/e,x1/5,pi/o,s11,x12/3,pa/k,x1/15,pf/g,x11/5,s10,pn/l,x4/6,pg/i,x13/9,s8,x0/14,pf/h,x9/2,po/j,s11,x10/3,s8,x4/15,s10,pl/b,x5/9,s5,x4/1,pi/g,x14/8,s11,x12/7,pc/o,x0/13,pn/m,s10,x6/9,s5,x14/12,s11,x7/0,pi/a,x8/14,s15,x7/5,pm/o,x2/10,pb/n,x15/14,s13,x5/8,s7,x0/11,pl/p,x7/13,pb/i,x1/11,s7,x10/12,s15,x14/9,pl/f,x4/5,s2,x3/7,s15,x5/13,ph/d,x8/0,s8,x12/4,s11,pn/f,s6,x11/1,s1,x3/8,s4,x6/9,s15,x12/0,pi/d,s3,x15/5,pa/o,x0/14,pn/p,x2/8,s2,x15/12,s2,x6/13,pa/e,x14/11,pg/l,s13,x9/2,pn/m,x6/10,s12,x3/8,s11,pc/k,x14/10,s15,x2/11,s12,x1/5,s14,x4/13,s5,x14/15,pl/d,x13/12,pn/h,x4/9,pg/l,x6/7,s4,x0/1,s3,x4/2,s1,x1/0,pe/i,x12/15,ph/d,x6/0,pg/k,x5/9,po/p,x14/13,pn/i,x12/15,s6,x13/3,pb/p,x8/6,s8,x14/2,pf/n,x6/10,s5,x11/1,pj/a,x7/15,s7,x4/3,pg/h,x9/6,s1,x13/0,s1,x10/11,s14,x6/5,s7,x1/15,pb/d,x8/11,pc/h,x15/14,s10,x2/8,pl/o,x3/9,pf/p,x13/0,pg/j,x4/12,pf/l,x14/7,s12,x0/3,ph/p,x8/14,pl/m,x10/7,s13,x3/9,pb/p,x8/10,s5,x9/2,s9,x10/13,pj/a,x6/3,pe/b,x7/9,s12,x14/6,s11,x15/13,pk/m,x7/4,s4,x12/9,s15,po/n,x2/15,s6,x11/5,pm/g,x10/2,s3,x13/15,pb/c,x11/7,s14,x2/5,pk/g,s6,x0/15,pl/f,x3/13,pa/i,x7/0,s13,x9/11,pf/o,s2,pg/a,s3,x5/14,s8,x10/4,pm/o,x7/15,s10,x12/10,s6,x3/1,s7,x6/7,pk/i,s1,x2/11,s4,x7/0,po/c,x14/9,s9,x10/6,s14,x14/1,pf/m,x8/11,po/l,x7/15,s11,x11/5,pf/g,x10/13,s5,x0/1,s2,x4/8,pp/i,x7/0,s7,x1/14,s6,x8/5,s13,x1/11,s7,x5/8,s7,x14/2,s5,x12/0,s1,pk/e,x11/14,s6,x12/2,pm/d,x8/3,s4,x6/4,pn/e,s15,x1/9,pa/d,x2/12,po/c,x8/6,s2,x2/4,pg/a,x12/10,s15,x0/6,pb/d,x10/13,pk/i,x8/4,s6,x10/12,s2,x11/7,pl/e,x0/12,pd/b,x13/9,pj/k,x0/1,s13,x7/8,s7,x0/5,ph/n,x2/14,pc/l,x13/3,s8,x2/11,pb/p,x12/1,pf/g,x15/5,pc/n,x10/7,pf/i,x4/1,s6,x12/3,s3,x9/11,pk/p,s12,x5/10,s4,x11/0,pi/c,x9/4,s9,x7/12,pm/a,x13/9,s2,x1/14,s7,pp/c,x12/7,s15,x8/15,s8,x3/14,ph/i,s1,x6/10,s14,x9/8,s12,x14/2,s11,x6/8,s11,x1/7,s5,x5/13,s10,x11/3,pj/g,x15/2,s15,x11/3,s2,x8/12,s13,x0/3,s2,x12/9,pm/p,x2/11,pl/j,x1/15,pe/o,s9,x7/5,pn/c,x2/0,s10,x8/3,s14,x2/1,s7,x11/15,pk/p,x14/12,po/f,s6,pl/a,x11/9,s11,x10/0,s8,ph/m,x12/9,pn/d,x6/2,s6,x14/13,s1,x11/10,s9,x4/0,pa/m,x11/12,pc/j,x10/3,pp/b,x4/14,s13,po/g,x10/9,s15,x1/12,s8,x3/8,s15,x9/0,s8,x1/4,pa/k,s3,x3/8,s5,x7/10,s7,x13/12,s14,x5/8,s1,x11/13,pb/i,x6/5,pd/a,x2/7,s3,x13/4,pc/j,x15/2,s13,pi/n,x13/3,pf/g,x6/15,s2,ph/l,x13/4,pn/g,x2/8,s12,x4/10,s13,pk/j,x1/9,pl/o,s8,x12/11,s5,x2/5,s9,x13/8,s9,x14/5,pg/d,x13/9,s8,x7/14,s11,x3/2,pa/e,x0/10,pc/n,x15/1,s5,x7/9,pi/o,s4,pj/c,x15/2,s1,x11/13,pe/h,s1,x0/10,s14,x2/8,s4,pa/f,x0/3,pg/k,x5/11,pa/i,x9/8,pb/c,x15/10,s6,x0/12,pf/o,s1,x7/3,pc/a,x5/8,s12,x12/10,s13,x14/6,s5,x10/3,s5,x9/13,s10,x0/8,s14,x4/7,ph/k,x5/1,pf/a,x13/8,pi/d,x3/10,s9,x15/7,s3,x8/4,pl/p,x14/3,s6,x15/5,pm/e,x0/1,pk/f,x15/5,s3,x6/12,ph/d,x3/10,s13,x15/14,pa/c,x9/8,pf/d,x0/4,s14,pa/p,x5/3,ph/f,x1/15,s5,x14/10,s4,x6/8,s3,x15/10,s11,x11/8,s5,x0/5,s8,x15/1,s15,x3/13,s11,x9/4,s15,pe/i,x12/15,s5,pn/d,x7/2,pp/m,x11/15,pa/k,x7/1,s14,x12/0,s12,x11/1,s2,x9/7,s5,x10/13,s6,x7/8,pb/d,x3/9,pf/m,x4/11,pc/p,x8/2,s7,x12/14,s12,x10/15,pm/k,x11/6,pc/h,x9/4,pk/m,x3/1,pi/g,x7/12,pk/p,x10/8,s12,pe/j,x13/2,s15,x6/5,s3,x1/3,pl/a,x11/8,s15,x4/7,pg/f,x3/1,s15,x2/11,s12,x10/0,s9,x3/11,s8,x8/14,s5,x3/9,s3,x0/4,s8,x15/14,pa/i,x12/7,s8,x3/8,pp/m,x6/5,pj/c,x13/14,s10,x6/4,s3,pe/o,x14/15,s9,x8/4,pk/l,x3/10,s2,x0/6,pe/a,s12,x14/5,s10,x0/7,pl/c,x8/6,s2,x11/12,pk/e,x4/13,s7,x3/10,s12,x9/1,s9,x8/0,pj/a,x14/2,pg/h,x9/0,s13,x10/11,pc/f,x8/4,s5,x11/14,s14,x6/15,s10,po/d,x12/2,s5,x13/0,pi/l,x2/5,pj/n,x4/10,s1,x15/12,pp/a,x9/7,s15,x12/3,pe/h,x2/10,s15,x14/15,s15,x12/11,s2,pg/o,x3/5,pm/n,x7/6,s11,pj/b,x0/15,pn/d,x5/14,pf/a,x0/15,pe/k,x11/10,pn/c,s2,x6/15,pf/j,x11/7,s14,x6/14,s2,x5/15,s13,x6/0,s9,pg/n,x11/10,s10,x5/4,s15,x9/6,s6,x4/1,s5,x13/2,s4,pm/f,x8/12,s13,pp/j,x9/6,s9,x0/14,pa/e,x11/12,s6,x14/2,pd/k,s6,x15/7,s8,x9/3,s4,x6/5,s15,x7/13,s6,x6/2,s15,x4/11,s13,x3/8,s9,x2/7,pn/a,x4/1,s7,x11/10,s7,x15/0,s13,x7/10,s3,pg/e,s8,x9/2,s3,x5/8,s6,x14/7,s3,x9/2,s2,x4/7,s6,x15/10,s7,pn/l,x2/14,s11,x3/1,s9,x6/12,ph/m,x4/8,pg/i,x5/12,s4,x4/0,pn/o,x13/10,pc/f,x8/2,s8,x11/14,po/p,x13/6,s5,x12/0,s7,pb/h,x11/4,pd/p,x8/15,s6,x14/10,s9,x5/1,s6,x12/6,pc/g,x1/10,po/h,x4/7,pj/e,x5/12,pn/p,x0/14,s1,x10/11,s5,x12/0,s14,x5/3,s9,pg/h,x7/12,s9,x6/15,s13,x10/13,s13,x8/9,s15,x14/6,s12,x1/11,po/f,x15/5,s6,x7/1,s10,x11/12,pb/d,x5/3,s3,x11/12,pk/l,x4/10,s9,x3/14,pn/d,s1,x6/12,pa/e,x14/0,s15,x2/5,s1,x4/12,s4,x10/15,pb/k,x12/7,po/h,x11/6,pd/l,x4/5,ph/k,x14/3,pj/f,x5/10,pc/b,x3/0,pj/g,s15,x6/2,s15,x9/0,s9,x8/4,s5,pi/m,x15/11,s1,x9/1,s8,x15/5,s12,x9/0,s9,x13/8,s8,x2/9,pl/e,x14/0,pi/b,x6/5,s7,x8/11,pf/g,x7/2,s10,x10/9,s5,x8/5,pi/j,x4/2,s2,x9/15,s2,x4/12,pb/o,x8/14,pc/i,x7/15,s4,x10/2,s5,x8/14,s11,x7/1,pl/a,x4/12,pm/n,x14/3,s8,x11/13,pb/f,x1/8,s14,x9/15,pd/n,x6/11,pa/j,x13/8,s12,x1/6,s6,pe/c,x4/5,pb/d,s2,x9/6,pm/h,x1/2,s9,x0/10,s12,x9/13,s1,po/j,x5/3,s1,x2/4,s4,x10/0,ph/n,x14/5,s9,x11/0,s1,x14/6,s11,x15/10,pg/b,x1/13,s8,pd/h,x11/9,po/g,x12/13,s7,x1/7,s3,x14/10,pb/d,x0/11,s11,x14/1,s6,pn/k,x12/15,s9,x4/7,pg/h,x10/14,s10,pi/c,x15/9,s3,x14/1,pk/h,s9,x3/10,pi/l,x13/14,pe/n,x7/9,s4,pp/d,x12/1,s3,x15/10,pl/n,x9/1,pm/k,x14/3,s15,x0/1,s15,x15/11,pf/g,x13/2,s15,x3/14,s1,x6/10,pj/e,x5/15,pg/c,x10/4,pp/l,x11/1,pj/o,x14/15,pm/a,s5,x6/5,pp/f,x10/11,s10,x1/12,po/k,s11,x5/11,s4,x14/12,s8,x8/11,s15,pl/a,x10/14,pk/o,x15/7,s2,x11/5,s5,x2/7,s5,x6/8,s10,x11/1,pp/j,s13,x5/0,po/a,x9/6,s8,x7/5,s2,x2/13,pj/b,x1/0,pa/d,x4/7,pp/k,x12/14,pi/l,x15/7,po/d,x5/11,pa/h,x0/2,s2,x6/5,pe/k,x11/9,s1,x8/1,s2,x5/6,s14,x7/3,s7,x6/14,po/b,x12/4,pm/h,x9/0,s9,x15/2,s10,x0/8,s1,x1/14,s11,x3/11,s14,x10/1,s1,x4/15,pi/d,s15,x9/11,s10,x0/2,pb/k,x4/3,s11,x0/10,pa/p,x9/4,s9,x10/7,s9,x0/13,s11,x9/14,s10,x6/11,pd/j,x8/13,s12,x14/12,s5,x6/0,s5,x10/11,s3,pn/a,s9,x5/8,s12,x11/7,s8,x9/6,s8,x7/8,s7,x4/1,s2,x9/15,s7,x4/12,s6,x8/3,s3,x9/1,s3,x12/3,s2,x8/4,s5,pc/f,x3/12,pn/m,s6,x13/2,s7,pf/b,x3/7,s9,x4/11,s13,x7/5,pl/n,x13/0,pb/g,x2/7,s12,x9/6,s11,x8/13,pm/h,s2,x1/12,s15,x11/4,pe/j,x6/7,pi/g,x12/15,pk/a,x1/2,pf/e,x4/6,s11,x15/13,pj/a,x6/2,s11,x9/12,s7,pi/m,x3/2,s4,x15/10,s14,pj/e,x13/7,pb/m,x6/3,ph/i,x11/15,s14,x12/7,pg/b,x4/5,s2,x1/13,s5,x9/0,s1,x7/5,s11,x15/1,s6,pp/d,x3/9,s4,x6/5,pi/m,x11/7,s1,x10/15,pc/h,x14/0,s5,x12/15,s5,x9/2,s13,x13/10,s4,x1/12,s8,x13/0,s15,x1/3,s2,x7/13,s9,x2/9,pd/b,x6/10,ph/e,x5/9,s11,pp/d,s15,x2/11,pl/a,x15/4,s10,x2/0,s12,x7/15,pe/k,x9/4,s3,pc/o,x0/12,pn/i,x5/3,s9,x0/8,pd/e,x10/11,s4,x9/14,s3,x13/4,pj/f,s10,x8/1,po/h,x4/0,pb/a,x3/5,s10,x4/13,pd/i,x1/14,pl/o,x7/11,pa/m,x0/15,po/l,x14/7,pj/c,x15/9,pn/k,x7/8,s12,x0/10,pl/c,s15,pi/e,x4/2,s1,pl/n,x8/5,s4,pm/p,x6/9,pb/o,x0/11,pa/e,x3/13,pb/d,x1/15,s2,x11/6,s6,x3/9,s9,x8/1,s11,x7/0,pf/i,x2/15,s9,pm/l,s7,x4/6,pc/n,s6,x0/12,pm/i,x11/13,pj/e,s15,x8/7,pd/n,x11/3,s15,x1/4,pi/b,x11/15,s9,x14/0,s7,x2/8,pa/n,x3/0,s14,x9/6,pd/p,x5/15,pf/g,x7/9,pb/d,x2/11,s7,ph/j,x1/15,pa/n,s14,x4/6,s13,x5/3,s1,x6/15,pf/d,x13/9,s8,pk/j,x6/2,s1,x7/14,pl/o,x1/4,s3,pn/d,x3/7,pa/m,x14/6,po/e,x3/10,s1,pp/b,x0/9,pi/o,x5/13,s13,x4/1,s15,x8/7,s10,x15/4,s14,x0/14,pp/c,x9/11,pg/o,x6/2,s1,x1/7,pn/a,x0/12,pe/c,x4/7,pn/h,x13/9,s9,x2/6,pl/g,x10/7,s12,x0/8,pp/f,x15/3,s15,x6/14,s10,x9/1,pc/n,s2,x3/2,s9,x0/10,s14,x8/6,s11,x3/15,pp/j,s7,x8/6,s2,x7/0,s11,pd/a,x13/5,s14,x7/9,s6,x5/13,pk/b,x8/4,s5,x0/12,pn/e,x9/15,pb/d,x2/7,s5,x3/5,s15,x13/12,s3,x5/2,s4,x9/10,s12,x14/4,pf/j,x9/15,s6,x7/2,s10,x14/0,s10,x15/1,pd/p,s12,x10/12,pj/a,x7/8,pn/f,x1/0,pg/p,x14/6,pd/i,s7,pg/b,x0/9,s13,x11/2,s5,x9/15,pi/f,x13/4,s3,x8/2,s4,x13/0,pn/h,x5/9,s7,pm/f,s15,x4/3,pn/c,x1/8,pl/a,x3/0,pg/k,x13/11,s12,x2/7,s9,x12/11,s11,x5/6,pi/p,s12,x1/9,s5,x0/10,pf/k,s15,x13/14,s13,x1/10,s3,x6/0,s13,pg/d,x10/11,ph/n,s5,x8/3,pc/b,x12/10,s14,x5/3,pm/p,s4,x13/14,pk/b,x2/3,s10,x4/15,pp/e,x7/11,pj/c,x3/1,s4,x10/2,pb/g,x1/14,po/j,s14,x12/8,s15,x6/14,s10,x15/3,pk/f,x1/12,s3,x4/0,s11,x1/11,s7,x7/10,s9,x1/2,pl/h,s3,pd/e,x6/0,s14,x1/11,pi/p,x2/15,s2,x3/4,s13,x1/5,s4,x14/15,s2,x7/3,s11,x10/8,s2,x0/2,s15,x3/11,s6,x14/7,pj/a,s3,x3/4,pe/p,x15/2,pa/i,x10/0,s1,x2/1,s9,x4/6,s9,pf/e,x13/3,s14,x5/8,pc/h,x1/7,s6,x10/3,pg/f,x6/9,pj/e,x4/12,s2,pp/n,x14/5,pc/a,x6/2,pf/e,x3/7,pj/a,x12/5,pp/h,s10,x9/4,s2,x15/3,pd/c,x14/6,pp/j,x5/1,s8,x14/9,s12,x0/4,pb/e,x10/13,s12,x1/3,s13,pj/m,x5/11,s11,x6/8,s1,x9/15,s13,x1/13,s13,pe/c,x10/2,pm/n,s8,x4/1,s3,x11/5,pd/h,s3,x6/15,s7,x2/5,pj/k,s10,x15/12,s15,x2/0,s10,x7/6,ph/i,x14/0,s7,x8/3,pj/k,x1/9,pp/i,x14/15,s11,x10/1,s12,x14/0,s2,x10/7,s10,x11/8,pk/b,x14/4,po/e,x15/13,s11,x8/1,pi/m,x5/0,s7,x9/2,s13,x8/0,pn/d,x7/1,s10,x13/8,pm/l,x11/15,pe/d,x7/10,s4,x12/11,s14,x1/0,s12,x14/13,pk/f,x11/15,s4,x9/5,ph/m,x10/0,pg/o,x3/8,pj/p,x6/13,s14,x3/2,s2,x0/11,s7,x4/13,pa/l,s6,x3/12,s4,x7/5,s12,x10/14,s13,x4/0,pc/d,x2/6,pj/g,x5/8,s4,x3/2,pm/h,x0/6,s4,x15/13,s6,x12/11,s9,x7/1,s8,x9/15,s12,x10/12,pa/c,x14/4,s11,x8/5,s11,x13/9,pb/n,x5/12,pd/c,s1,x8/3,s3,x11/9,s3,x3/2,s8,x11/1,s4,x10/0,s2,x7/4,pm/p,x12/2,s15,x8/10,po/f,x15/1,pe/h,x0/4,pm/c,x1/11,pj/k,x8/13,s1,x15/10,s9,x4/3,s9,x11/6,ph/p,x0/15,pb/g,x10/2,s3,x14/0,s3,pc/e,x1/11,pl/p,x5/13,s8,x0/3,s7,x4/15,pb/n,x7/8,pa/j,s12,pl/k,x15/13,s6,pd/i,x10/7,s5,x14/13,s4,x1/11,s4,x6/10,s1,x4/13,pn/f,x0/12,s6,x10/14,pd/e,x15/2,s6,x14/0,s2,x8/2,pf/i,x7/4,pp/e,x5/13,pa/l,s10,x6/10,s4,x0/14,s8,x2/13,pk/i,x1/0,pd/l,x9/3,s10,x10/7,s12,x15/8,s4,x1/0,s15,x12/6,s12,x1/11,ph/j,x10/2,s5,pc/f,s3,pe/h,x3/0,s14,x4/13,s9,x7/3,pk/c,x5/1,pm/n,x12/4,s3,pe/f,x10/15,pd/g,x6/12,pb/o,x13/11,pk/n,x6/8,pj/d,x3/0,s9,x8/15,s7,x14/11,pa/c,x5/9,s2,x4/12,pk/l,x11/3,s11,x12/15,s3,x8/5,s11,x11/6,s13,x7/2,s15,x13/6,s5,x1/15,s5,x5/11,s1,x1/15,pp/i,x9/13,s7,x4/8,s13,x15/6,s4,x13/7,s7,x6/5,pd/c,x4/1,s5,x0/9,s5,x4/13,pa/g,x15/8,pi/b,x0/7,s15,x2/5,pj/a,x13/9,s3,po/h,x7/5,pm/a,x12/1,pc/p,x15/9,pf/l,x10/8,pk/e,x6/2,s12,x7/12,s4,x15/10,s2,x9/8,s6,x3/7,s1,pd/n,x13/2,pj/o,x1/4,pa/n,x12/14,s6,x11/0,s4,x8/2,s7,x14/3,s8,x7/13,pb/k,x0/11,pl/o,x9/15,pa/b,x14/12,s4,x0/9,s3,x6/13,s9,x15/5,s3,x13/2,pj/i,x4/3,s1,x8/12,s12,x6/14,s15,pb/p,s2,x1/12,s11,x11/13,pn/h,s2,x0/9,s12,x12/5,pi/j,x6/14,s7,x12/8,s2,x14/11,s9,x9/10,s4,x3/1,s2,x8/14,s7,x2/11,s14,x6/8,pl/k,s12,x7/1,s4,x15/11,s1,x4/9,s9,x2/6,pd/o,x10/12,s9,x3/13,pc/a,x0/10,s15,x12/9,s3,x1/5,po/e,s13,x4/12,s5,x1/11,s1,x10/9,s11,x7/14,s2,x15/13,pp/j,x2/10,s15,x6/15,pg/m,x13/1,s7,x10/12,s4,pl/n,s15,x4/2,s15,x11/12,s14,x8/3,s14,x7/12,s6,x9/15,pa/d,x3/0,s8,x14/6,pp/c,s13,x1/15,s6,x5/2,s3,x10/13,pd/m,x11/9,ph/n,x12/6,pg/m,x4/1,s9,x8/13,s9,x9/11,s9,x10/13,po/a,x12/6,s12,x14/3,s7,x4/15,s11,x7/8,s1,x12/10,s5,x6/14,s11,x4/7,pp/n,x9/8,s4,x15/2,s10,pm/f,x6/9,s11,x15/12,s6,x5/7,s10,x0/1,pb/i,x2/12,s13,pk/l,x5/6,s11,x7/1,pe/d,x12/14,s10,x10/3,pc/p,s2,x0/12,pn/h,x5/4,s10,x10/7,s4,x9/6,s7,x15/13,s2,x14/0,s15,x13/9,s3,x8/3,s7,x12/4,s3,x15/11,pd/o,x6/0,s11,x3/13,s12,x2/7,pn/g,x14/15,s2,pd/b,s12,x6/11,s7,x13/4,s2,x15/10,s7,x14/6,s2,pi/o,s13,pj/c,x3/2,s2,x12/9,s10,x14/5,pa/l,x1/15,pj/m,x14/9,pf/o,x2/0,s3,x3/10,s3,x14/13,s3,x8/11,pg/h,x1/10,pn/a,x4/13,po/m,x6/15,pg/a,x10/2,s3,x4/13,s7,x1/14,s1,x6/4,ph/i,x13/8,pf/j,x6/4,pd/m,x1/3,s7,x8/13,s13,pk/o,x2/3,s11,x13/14,pe/d,x6/0,pa/o,s9,x12/14,pb/d,s4,x9/11,pl/h,x10/13,s15,pn/m,x12/9,s13,x11/2,pg/a,x0/5,pk/p,x15/11,pa/i,s10,x6/0,s14,x11/7,s6,x0/9,s9,x15/6,pg/l,x5/13,s10,x6/7,s4,x12/10,s13,x0/8,s13,pf/o,x10/5,pa/b,x3/0,pc/p,x8/2,pd/h,x14/0,pn/j,x9/12,pd/o,x2/4,pk/b,x5/11,s2,x14/7,ph/j,x10/5,s8,x8/14,s10,x7/9,s8,x3/1,s9,pp/m,x9/2,pa/e,s4,x4/13,ph/d,x2/12,s10,x5/3,s14,pl/o,x15/4,s1,x7/14,s14,x10/3,s9,x13/5,pi/e,x1/4,s9,x15/11,s5,x0/13,s10,x2/6,s15,x15/14,s5,x3/1,s6,pl/k,x9/11,s6,x12/7,po/b,x2/0,pf/c,x6/8,s13,x0/13,s14,x8/7,s2,x3/12,s9,x4/7,s3,x10/11,s1,x1/3,s13,pl/b,x9/2,pg/p,x8/11,s1,pl/j,x13/12,pa/o,x8/3,pp/f,x9/5,s4,pg/j,x7/4,pi/p,x11/5,s2,x2/3,s12,x0/8,pk/g,x1/12,s12,x11/14,pl/e,x1/2,s13,x11/7,pd/g,x4/12,s8,x2/1,s1,pc/a,x15/11,s12,x8/2,s1,x4/1,s15,x5/15,s5,x4/8,pk/h,x7/2,pf/n,x1/9,pj/m,x11/13,s15,pi/f,x5/0,po/k,x11/14,s12,x3/13,pb/c,x8/2,ph/d,s9,x7/11,s14,x15/4,pm/b,x11/10,s4,x0/13,po/d,x10/6,pg/i,x7/15,pl/c,x6/13,pb/i,x0/15,pm/n,s15,x1/12,s6,x8/9,s9,x4/5,pa/g,s6,x12/10,s13,x8/3,s7,x10/15,s13,x7/8,s3,x10/12,s8,x0/9,pf/p,x12/3,po/a,x6/15,s14,x14/11,s10,x9/13,pd/p,x11/3,s9,pa/c,x15/10,pb/f,x13/4,po/i,x3/10,s9,x13/4,pm/a,x10/0,pd/i,x6/7,pe/h,s15,x5/12,s8,x2/4,pb/g,x11/6,pi/h,x12/5,s4,x8/4,pp/n,x9/10,s1,x12/2,pj/c,x13/8,s10,x4/5,s14,x0/13,pi/e,s7,x6/7,s6,x3/10,s4,x11/13,s14,pa/p,x8/1,po/c,x13/6,s5,x9/11,s7,x13/8,s1,x11/4,pg/d,x3/0,s15,x1/11,s10,x12/9,pf/n,x8/1,s4,x2/5,s8,x11/7,pl/m,x9/4,pe/b,x0/7,s15,x13/6,s1,x1/14,pm/p,s10,x10/2,s8,x15/0,pd/e,x8/14,s2,x12/1,s14,x9/8,s2,x14/6,pn/k,x13/11,pg/c,x7/15,s14,x0/6,s4,x4/2,s9,x13/10,pd/h,x2/6,pg/n,x1/9,s14,x13/0,pi/m,s8,x10/7,s7,x3/5,pl/b,x12/2,pg/e,x8/6,po/d,x0/3,s3,x11/9,s1,x0/1,pb/a,x7/14,s12,x6/1,ph/k,x5/10,pm/b,x13/4,s13,x0/9,pd/k,x1/11,s4,x5/13,s13,x0/8,s4,x11/4,s4,x1/13,ph/g,x4/10,pa/e,x11/3,s1,x5/4,ph/c,s7,x13/14,s2,x8/7,s8,x0/4,s8,x3/10,s1,x14/1,s14,x9/0,s5,x5/10,pg/k,x6/13,s14,x8/1,pa/j,x0/4,pf/n,x12/9,pb/j,x0/5,s2,x15/8,s3,x4/12,s3,x2/11,pg/i,x6/12,s12,x7/15,s11,x5/13,s9,x2/9,s13,x10/12,s2,x6/5,pf/k,x9/15,pe/a,x4/7,s3,x0/11,pd/i,x4/12,s5,x6/7,s8,x14/9,s1,x13/4,s1,x8/2,s6,x11/6,s15,x14/8,pj/o,x6/3,pc/m,x10/7,s14,x13/6,s11,pd/p,x12/10,s3,x0/5,s2,x11/14,pg/c,x15/6,s9,x1/10,po/i,x7/0,pm/g,x5/11,s1,x3/13,s12,x9/2,pl/f,x14/4,s3,x2/3,po/h,x0/14,s4,x11/3,s2,x12/2,s5,x5/6,pk/g,x10/1,s5,x5/6,s9,x15/0,pd/a,s11,x2/12,s14,x7/15,pg/b,x3/0,po/n,x2/8,s4,x4/5,pj/d,s3,x1/2,s7,x5/13,s8,x10/9,s1,x15/7,s4,x10/3,po/g,x5/12,s3,x6/11,s7,pa/f,x8/12,pp/l,x3/6,s6,x4/0,po/i,x6/2,s12,x4/3,s9,x11/0,pa/f,x9/7,s12,pc/o,x11/0,pa/k,x3/8,s13,x14/13,pc/n,x1/8,s15,x14/6,s7,x5/2,pi/o,s1,x0/9,s11,x1/13,s9,x5/9,s8,x7/3,pp/f,x1/13,pc/d,x2/3,s11,x0/1,s12,pl/g,x5/11,s3,x9/10,s15,x3/5,s15,x10/1,pm/e,x5/13,pf/b,x4/9,s14,x6/3,s6,x12/15,s4,x8/7,s15,x1/15,pd/l,x6/11,po/b,x4/10,s9,x15/6,s15,x12/5,pk/g,x13/6,pe/a,x2/15,pb/i,x14/13,s4,x9/1,s8,x14/10,pj/m,x12/4,s6,x2/13,s8,x11/8,s12,x7/15,s7,x5/11,s13,x0/1,s1,x5/9,pa/p,x1/12,s14,x9/2,s10,x10/7,s9,x2/5,s11,x14/9,s6,x5/7,pn/j,x9/8,s12,x2/0,ph/b,x12/7,s1,x14/15,pe/l,x11/9,s13,x2/14,s3,x6/1,pj/o,x12/15,s15,x6/9,pf/c,x10/1,s11,x11/12,s6,x10/3,pa/l,x7/12,s7,x8/2,pc/o,s10,x4/9,pj/d,x1/11,s15,x0/8,s7,x2/4,s11,x0/8,s4,pe/h,x9/1,s13,x11/4,s15,x1/9,pn/l,x6/8,s2,x11/10,pp/c,s12,x8/1,s9,x5/4,pa/d,x10/7,pm/e,x11/2,s8,x15/0,s5,x2/11,s5,x13/8,po/p,x0/10,s14,x2/14,pk/j,s8,x6/3,s12,x7/11,pi/a,x9/5,pl/k,x12/7,s2,x6/11,pd/c,x4/0,s1,x7/10,pl/g,x12/9,pp/c,x1/2,pg/l,s3,x7/3,s8,x14/0,pk/m,x15/13,s13,x12/4,pg/o,s12,x11/15,s7,x8/7,s2,x5/13,pm/f,x12/6,s12,x0/5,s14,x13/4,ph/j,x10/2,s1,x8/6,s9,x11/9,pn/i,s4,x15/10,pm/l,x7/3,s14,x4/2,s4,pe/h,x7/1,s6,x9/13,s7,x14/1,pi/l,s15,x15/7,pp/h,x5/14,pi/g,x2/3,s10,pb/a,x5/15,po/g,x11/9,pp/f,x2/10,pc/n,x9/6,s2,x1/11,pj/i,x9/0,s3,x10/12,s5,x3/4,pg/k,x1/0,pj/i,x3/7,pl/c,x1/11,s12,x3/14,s13,x6/10,s6,x11/14,pd/n,x5/13,s6,x12/4,s15,x2/6,s8,pj/l,x4/1,s8,x7/13,s3,x1/3,pb/h,x5/9,pd/f,x0/15,s14,x1/7,pg/n,x4/11,po/d,x14/13,pk/j,s6,x5/8,s3,x13/14,pe/m,x2/12,s1,x14/11,pb/a,x13/8,pe/d,x11/1,pl/k,x15/13,s1,x5/14,s5,x4/0,s2,x3/2,s15,x14/12,pc/b,x1/11,s15,x6/8,s5,x10/1,s2,x9/7,s1,pf/k,x4/6,ph/c,x2/11,pd/o,x9/10,s10,x7/1,s1,x0/8,s8,x4/9,pp/f,x1/12,s14,x9/6,s11,x14/7,s12,x8/5,s14,x2/14,pa/d,s10,x15/8,s5,x3/4,pc/e,x6/2,pb/g,x3/13,pa/d,x4/5,pp/e,x2/10,s2,x7/9,pb/a,x0/3,s13,x6/13,s2,x15/7,pc/l,x6/3,pk/g,x2/11,pf/i,x6/12,pj/p,x2/4,s2,pn/i,x14/8,s3,x0/4,s9,x8/10,pp/c,s4,x3/9,s2,x1/0,s12,x8/5,s2,pn/j,x7/9,s14,x11/14,s2,x15/8,s6,x1/13,s15,x5/2,s9,x1/7,s10,x3/11,pl/i,x10/5,s8,pd/p,s10,x2/6,s12,x0/8,s5,x11/4,s8,x7/13,s15,x3/5,s14,x15/10,pf/m,x2/11,pe/d,x14/12,s15,x1/10,s5,x9/11,pc/a,x0/2,ph/m,x14/7,s10,pd/k,x11/8,pm/l,s11,x1/9,pc/h,x4/3,s12,x15/0,pl/i,x11/2,pc/n,x5/14,s10,x3/9,s5,x14/10,pa/p,x12/0,po/b,x15/10,s9,x9/12,pm/p,x0/1,pj/i,x2/4,s9,x6/10,s14,x13/0,pd/c,x9/14,pm/e,x15/5,s3,x8/14,s6,x4/7,s8,x9/11,s9,x0/14,po/g,x6/15,pj/d,x1/5,pe/h,x15/13,s4,x9/12,s13,x6/13,pk/p,x5/14,pl/i,x6/11,s11,x10/15,s5,x13/12,s12,x6/4,s9,x11/10,s10,x1/15,s7,pp/m,x12/7,pj/e,s4,x1/0,pb/k,x13/6,s6,x1/7,s1,x15/11,pg/m,x6/3,s13,x13/7,s7,x10/5,s12,x1/0,s14,x6/5,po/j,x10/13,s5,x14/12,s8,x5/2,s12,x10/12,pc/l,x1/9,s13,x5/4,s6,x8/11,s13,x12/10,po/j,s11,x15/14,s11,pa/k,x3/5,pm/p,x4/14,pn/a,x7/5,ph/d,x2/0,pm/c,x15/7,s11,pn/j,x0/10,s9,x8/15,pe/l,x1/13,pb/n,x12/10,ph/o,x8/9,s11,x10/1,s6,x8/7,pj/b,x10/0,s2,x5/3,s13,x4/13,s4,x9/1,s4,x10/13,ph/e,x0/6,s6,x15/5,s10,x8/3,s8,x14/13,s6,pg/b,x0/11,s2,x10/5,s7,x12/9,s12,x10/3,pa/d,x15/14,s15,x9/10,s1,x13/12,pe/o,s12,x8/1,s1,pk/m,x11/4,s5,x10/6,pp/a,x0/3,s13,x13/1,po/n,x3/5,s12,x7/2,s13,x15/6,s10,x11/7,s6,x1/15,pl/e,x6/2,s6,x8/7,s5,po/c,x6/12,pl/f,x8/7,s2,x0/1,pd/j,x11/4,s14,x15/13,pe/g,x1/5,pa/h,x10/11,s13,x8/14,s3,po/p,x15/3,pc/a,x14/1,pi/m,x10/13,s5,x12/11,s8,x10/5,s15,x12/7,s15,x3/6,pa/g,x4/0,pn/c,x14/12,s3,x3/4,pa/p,x9/11,s10,x8/0,po/e,x10/3,pm/b,x11/4,pd/e,s5,x5/13,s6,x10/8,pa/k,s11,pg/d,x4/7,s10,x15/12,pl/a,x3/1,pk/b,x8/9,ph/e,x1/7,s12,x14/10,s9,x8/6,pk/p,x0/4,s4,x13/3,po/i,x7/4,s3,x10/3,s14,x0/7,s2,x9/15,s1,x0/7,s11,x3/13,s12,x0/8,pc/g,x11/12,pb/d,x8/3,pp/j,x5/10,s1,x7/2,s10,x5/6,s9,x9/12,s11,x3/8,s9,x15/10,s7,x8/4,pc/h,x14/2,s15,x15/3,s15,x14/5,s5,x6/15,s7,x9/11,s3,x1/13,s6,x3/7,s12,x11/6,pa/g,x0/9,s4,x8/11,s4,x2/7,s2,x10/14,s14,x8/9,s15,x1/4,s15,x8/14,s6,x13/4,s12,x15/1,ph/j,x13/2,s7,x14/10,s5,x1/2,s15,x11/13,s10,x9/12,pg/f,x0/10,pi/c,x13/8,pe/p,x0/9,pa/m,x13/5,pp/k,x0/10,pa/c,x7/13,s4,x1/4,ph/f,x0/8,po/k,x2/7,s2,x9/1,s6,x5/8,s10,pi/g,x7/11,s7,x0/4,s11,x7/3,pe/j,x0/2,po/k,x14/3,s14,x15/8,s5,x14/12,s12,x10/2,pp/h,x0/15,s12,x6/13,s8,x3/1,pe/c,x0/2,s15,x14/12,s9,x10/4,pj/p,x1/7,s2,x3/2,pn/k,s5,x6/15,s12,pp/e,x7/5,s14,pj/m,s15,x14/11,s9,x4/5,s4,x13/2,s1,x7/5,pp/i,s11,x14/12,s7,x8/9,pa/j,x10/6,pg/o,x13/8,pb/n,x7/0,pj/i,x6/12,s1,x2/15,pm/g,x10/9,po/c,x2/1,s15,x8/4,pk/i,x12/3,pg/a,x0/6,pp/f,x14/5,pl/c,x3/1,po/h,x6/13,s14,x14/4,s13,x9/15,s3,x14/11,pa/n,s7,x3/10,pm/h,x9/11,pp/a,x2/7,s12,x3/11,pb/e,x14/1,pp/g,x11/9,s14,pe/k,s9,x3/12,ph/d,x7/10,s2,x11/13,s9,x6/3,po/m,x11/13,pe/g,x8/0,pa/o,x1/14,pg/m,x5/2,pc/j,x14/0,pn/k,x13/3,s3,x8/5,s14,x1/3,s5,x5/9,s10,x8/15,s5,x6/3,s14,x2/0,pb/e,x12/7,pm/c,x4/2,s1,x5/3,pk/b,x1/7,s13,x8/0,s2,x12/3,pp/f,x6/9,s5,x15/12,pi/l,x3/6,s2,x10/14,s15,x0/4,s5,x11/14,s15,x15/8,s9,x12/0,pe/n,x7/2,pb/p,x3/6,s2,x8/7,s13,x11/6,pl/d,x4/1,pj/b,x13/9,pi/e,x0/11,s5,x2/15,pl/b,x10/13,pm/h,x4/7,s8,pf/k,x14/12,s11,x3/8,s11,pj/n,x1/0,s13,x14/11,s2,x7/1,s11,x8/2,s13,x9/11,s8,x10/3,s13,x13/14,s1,x4/12,pm/p,x6/5,s6,x13/10,pe/i,x12/11,s13,x1/15,s2,x5/3,pc/a,x6/9,s12,pd/h,x5/8,s11,x7/12,pn/i,s6,x8/4,s15,x7/9,s3,x12/4,s6,pf/e,s12,x15/0,s10,x2/3,s13,po/a,x6/9,s10,x7/11,s12,x9/10,pg/m,s9,x12/5,s9,x2/15,s10,x3/14,s8,x4/12,s6,x0/13,s10,x3/2,ph/a,x12/14,s2,x8/6,s10,x3/5,pi/n,x15/9,pc/h,s9,x0/4,s2,x1/13,s14,x15/11,s1,x5/2,s1,x10/3,pd/j,x9/0,s1,x10/14,s9,x12/2,pb/m,x3/8,s3,x7/6,pl/n,s9,x3/14,s14,x4/1,s4,x8/12,pk/g,x3/13,pn/d,x10/11,s2,x13/14,pb/i,x10/15,pp/n,x4/11,s4,x0/9,po/f,x13/3,s7,pd/b,x9/8,s14,pa/n,x0/1,s3,x5/4,s7,x13/8,s9,x11/7,pp/d,x4/9,s7,x14/3,pf/j,x11/9,s4,x2/4,s1,x1/5,pd/l,x15/2,pe/n,x14/1,s12,x0/13,pc/p,x5/12,pb/k,x11/13,s8,x5/1,s10,pn/c,x6/14,po/d,x7/3,s7,x0/8,pa/k,x3/7,s6,x14/15,ph/f,x1/5,s6,x9/6,pk/l,x15/11,pf/d,x2/5,pl/i,x7/13,pj/g,x15/4,pf/b,s5,x2/11,s4,x15/10,s4,x1/3,pk/o,x14/6,s13,x13/5,pa/f,x11/12,s6,x1/13,s2,x6/11,pk/j,x9/13,s1,x4/3,s2,x2/9,pi/d,x10/15,s8,x12/11,s11,x9/8,s6,x14/7,pc/b,x4/0,s9,x1/8,s12,x14/2,s11,x1/8,s13,x3/12,ph/p,x0/13,pf/n,s11,x9/4,pg/e,x3/11,s2,x4/9,pa/p,x2/13,s1,x12/4,s11,po/e,x10/1,pn/p,x9/5,s11,x1/4,pg/k,x8/2,s5,x9/10,s10,x11/8,pi/n,x4/2,s2,po/l,x14/3,pm/j,x8/11,po/a,x14/4,pk/l,x2/9,ph/e,x3/1,s15,x0/5,s14,x8/10,s8,x5/1,pk/j,x4/9,s4,pi/h,x1/10,pc/j,x5/4,s5,x12/8,s11,x3/10,s12,x5/15,s4,x11/9,s8,x13/2,s10,x3/8,s9,x12/1,s2,x13/5,s8,x15/10,s2,x12/11,s8,x2/3,s2,x11/15,pe/k,x12/9,s9,x0/8,s10,x14/9,s7,x2/12,pl/b,x6/14,s7,x15/8,s10,x13/9,pd/p,x1/0,ph/k,x2/8,s7,x14/0,s7,x11/13,s7,x4/10,pj/e,s14,x6/8,s11,x1/5,s2,x11/6,pk/o,x12/0,s2,x10/14,s9,x0/4,s2,x7/8,s8,pa/p,x15/9,s5,x4/7,s4,x3/13,ph/e,x1/5,s1,x8/9,pa/i,s1,x12/14,s14,x2/8,s10,x10/0,s11,x3/13,s15,x4/8,pd/n,x14/7,pi/h,x10/0,s7,pk/j,s5,x7/8,pl/n,x14/2,s8,x6/11,s10,x1/13,pb/e,x4/14,pl/k,x13/8,pp/m,x1/11,pn/i,x12/8,s13,x5/14,pc/m,x6/9,s9,x4/7,s10,x0/10,s8,x8/4,pg/b,x13/2,pe/f,x11/5,s8,x7/3,pc/j,s12,x0/10,s12,x6/11,s6,pa/p,x5/3,s1,x10/0,pg/k,x2/11,s8,x13/14,s5,x3/4,s8,pm/l,x14/8,s5,x13/12,pf/d,x1/3,ph/b,x15/14,po/k,s4,pa/j,x10/6,ph/c,x9/0,pn/a,x2/6,s4,x0/3,pk/g,x14/10,s8,x7/13,s7,x11/14,pm/e,x12/13,pj/h,x0/7,s10,x11/3,pg/b,s14,x8/12,s6,x9/0,s6,x15/14,ph/l,x6/2,pi/m,x12/10,s13,x14/5,s12,x7/1,s10,x2/3,s1,x10/11,s4,ph/b,s10,x3/7,pg/m,x2/8,po/k,x3/5,pb/n,x6/11,s3,x12/4,s4,x13/8,pf/e,x2/11,s9,pg/o,x13/15,s14,x5/6,s15,x4/8,pb/h,s5,x15/3,pf/o,x2/8,s10,x4/9,s9,x12/15,s15,ph/b,x2/8,pp/i,s2,x7/1,s6,pk/l,x4/11,pg/i,x7/2,s8,x3/12,pp/n,x13/14,s2,x2/1,s5,x11/9,s3,x6/0,po/l,x9/3,pc/f,x0/12,s1,x2/4,pl/d,x12/5,s8,x4/3,pe/o,x2/12,pc/b,x13/5,pj/l,x12/4,s6,x3/15,s5,x0/4,pk/o,x10/2,s3,x15/14,pf/b,x6/0,pl/i,x7/3,pg/n,x1/2,s9,x3/12,s1,x9/15,s9,x11/7,pb/o,x6/9,s2,x0/7,ph/k,x4/3,s10,x8/2,s13,pi/c,s9,x9/13,s7,x4/2,s13,x0/10,ph/k,x15/13,s12,x2/9,pc/e,x5/14,pk/h,x11/3,po/e,s1,x10/1,s15,x12/3,pb/k,x5/0,s3,x6/7,s15,x14/4,s7,x6/9,s14,x1/10,pa/f,x14/13,s6,x6/9,pi/p,x10/5,pg/f,x3/7,pd/m,x8/5,pi/b,s8,x11/13,s7,x1/14,s8,x15/10,s10,po/l,x2/0,ph/d,x12/5,pl/a,x11/10,s10,x13/4,s4,x0/15,s7,x9/13,s7,ph/g,x6/2,pa/o,x12/14,s9,x2/11,pe/n,x9/3,s15,x13/1,s2,x9/15,s12,x5/12,s11,x7/9,pc/f,x10/12,s5,pl/p,x1/15,pi/b,s11,x4/3,s5,x13/11,pe/c,x10/12,s1,ph/k,x6/13,pp/g,x14/8,s7,x2/5,pa/i,x13/9,s4,x4/3,pj/o,s12,x15/11,ph/l,s7,x3/10,s14,x12/13,pe/c,x10/11,pm/h,x4/9,s15,x5/14,s10,x6/7,pc/a,x0/2,ph/k,x13/9,pd/n,x0/12,pg/j,x3/8,pb/f,x0/1,s3,x14/9,pi/n,x5/11,pe/j,x3/8,s8,pc/g,x9/11,s1,x7/1,pa/j,x13/15,s9,x4/5,s9,x7/2,pg/d,x12/3,s7,x10/1,s1,x14/8,pb/e,x1/5,s10,x6/7,pc/j,s7,x15/8,pm/k,x14/9,pn/h,x8/6,po/m,x10/11,pa/p,x14/9,pj/n,x6/13,s15,x7/15,s5,x2/0,s13,x1/9,pk/b,s2,x0/2,s12,x8/1,s5,x10/5,s11,x11/6,pn/m,x9/12,s4,x3/1,s11,x8/15,pb/e,x6/5,s10,x4/11,pc/l,x8/6,s2,x10/7,pe/j,x4/6,s4,x14/9,s3,x1/13,s10,x10/5,s1,x3/2,s4,x5/8,s3,x7/11,s4,x3/6,s13,x10/12,s2,pb/k,x6/13,pc/e,x9/1,pp/o,x0/5,ph/j,x11/2,pm/n,x7/15,s3,x14/1,s2,x5/12,pg/c,x11/0,pb/a,x12/7,pf/d,x15/6,s7,x3/11,pi/g,x8/2,pm/l,x12/0,s8,x10/13,pf/h,s15,x11/2,s10,x8/14,pc/n,x3/0,pa/p,x1/4,s8,x7/10,s15,x15/4,s13,x13/8,pm/k,x0/3,s12,x12/7,pl/a,s10,x15/11,pg/f,x0/1,s1,pm/j,x9/4,s12,pk/c,x10/7,s9,x14/15,pn/o,x0/10,s9,x15/4,s6,x12/6,pk/j,x9/14,s13,x10/2,s15,x14/12,s3,x8/5,pg/a,x11/10,s12,x4/14,s15,x11/7,s9,x2/9,s14,x14/5,po/n,x1/8,pl/g,x10/2,s9,x13/4,s1,x11/9,s13,x8/2,s5,x3/13,pp/h,x5/2,s1,x9/3,pd/k,x1/4,po/g,x2/7,s4,x9/10,s3,x12/8,pp/j,x2/10,s4,x4/7,s4,x0/13,s4,x5/3,s6,x1/10,pg/b,x15/5,s3,x4/14,pd/h,x6/5,pa/e,s2,x2/0,s9,x1/8,s6,x5/12,s14,x8/6,s4,x7/14,po/g,x8/0,s8,x12/5,pa/n,s2,x15/9,s7,pf/h,x2/7,s7,x4/10,pp/l,s3,x6/8,pj/a,x12/10,s12,pf/l,x14/2,s12,x12/8,pp/d,x7/2,s12,x10/14,s13,x3/1,pn/i,x13/15,s10,x10/7,s3,x13/1,pb/d,s4,x0/12,po/n,x3/13,pf/b,x12/6,pd/o,x10/13,s4,x4/12,s12,x10/0,s8,x8/6,pj/i,x12/7,s12,x13/3,s4,x7/10,s9,x11/0,pf/h,x2/5,pk/j,x6/8,s11,x11/14,s11,x0/4,pm/e,x3/11,s7,x4/13,s15,pn/o,x8/15,s5,x7/10,pd/h,x5/2,pe/i,x11/13,pl/m,x3/12,pn/g,s12,x11/2,s7,x5/13,s11,x14/7,s2,x3/12,pl/p,x10/9,s15,x4/14,pa/b,x15/0,s10,x6/7,s1,x0/5,s7,pe/l,x6/13,s1,x7/1,s15,x3/4,pc/k,x6/11,s2,x13/12,pi/a,x0/11,s6,x12/1,pn/h,x7/11,s7,x15/5,pc/i,x13/9,pf/a,x8/5,pi/l,x14/3,pd/g,x10/15,s7,x1/3,s14,x15/14,s1,x2/4,pp/e,x0/10,s12,x15/4,s14,x7/11,s14,x6/2,s13,x15/4,s9,x1/10,ph/j,x14/3,s1,x4/2,s14,x13/7,s10,x2/6,s4,x12/5,pm/l,x2/1,s10,x5/13,pf/d,x14/3,s9,x5/10,s8,pb/g,x7/0,s12,x9/13,pk/h,x3/0,s8,x5/8,s6,x6/15,pf/c,x4/12,pi/b,x1/0,po/p,x15/10,s11,x5/13,s15,pl/d,x2/11,s7,x6/9,pg/k,x8/1,s4,x0/3,s13,pf/a,x15/14,s5,x2/8,s8,x13/15,s6,x2/12,s9,x11/10,s15,x3/8,s11,x6/9,pi/n,x5/15,s15,pk/a,x12/9,s3,x4/7,s7,x1/9,s9,x5/15,s4,x12/2,s12,x4/7,s14,pd/b,x15/13,ph/p,x5/2,s13,x10/3,s13,x9/0,s6,x7/11,pa/i,x1/10,s3,x12/7,s14,x1/5,s9,x7/9,pg/e,x1/13,s6,x4/12,pl/o,x14/9,s6,x8/15,pj/d,s12,x11/1,s4,pc/h,x4/13,pi/l,x12/8,po/h,x2/15,s1,x14/6,pc/a,x4/5,pd/p,x7/1,pa/l,x9/6,pn/f,x15/2,s13,x12/1,s1,x14/5,pm/d,x3/7,s5,x2/9,pb/a,x6/3,s15,x8/12,s10,x10/7,s14,x1/5,s6,x11/3,pd/g,x9/7,s9,x11/0,pk/f,x4/12,s6,x2/6,pd/l,x4/9,pg/i,x15/3,s2,x14/8,s11,x13/0,pe/o,x1/5,s15,x3/10,s1,x2/7,s11,x10/13,s2,x4/9,pc/p,x0/12,s8,x1/8,pf/g,x11/6,s15,x5/15,pn/k,x0/13,pi/f,x3/5,pd/h,x15/2,s1,x9/5,s4,x0/15,s6,x9/13,s4,x10/2,s13,x15/7,s6,x1/9,pi/f,x7/14,s1,x0/6,s12,x7/3,s15,x10/2,pg/m,x1/6,s13,pf/b,x14/9,s5,x15/0,pm/o,x5/8,pg/c,x4/15,s8,x10/9,pd/j,x15/7,s2,pp/l,x9/13,s3,x2/7,s3,x6/9,s10,x0/14,pe/f,x5/2,s6,x4/1,pl/c,s2,x7/5,s3,x8/0,po/h,x13/15,pk/a,x4/6,s9,x2/15,s2,x7/5,s13,pb/n,s1,x3/4,pi/d,x11/0,s14,x1/4,s14,x8/5,s4,x12/10,s10,x5/1,ph/b,x10/13,s6,x3/5,s11,x15/4,s4,x11/12,s11,x14/8,pm/l,x13/11,s9,x2/10,pk/b,x4/12,s2,x8/0,s15,pj/g,x14/4,pl/n,x7/11,s2,x6/4,pm/i,s15,x5/2,s5,pl/b,s9,x3/6,pk/e,x11/9,s11,x1/7,s13,x14/15,pj/d,x9/11,s12,x7/1,s2,x8/13,s14,x5/7,pc/k,x12/8,pj/h,x2/4,pl/o,x7/15,s9,x14/9,pg/f,x10/5,s9,x15/8,s15,pi/c,x9/1,pe/h,x12/2,pj/p,x15/14,s2,pa/b,s12,x0/9,s1,x10/11,pk/p,x13/14,s15,pf/n,x6/10,s8,x3/2,s11,pe/c,x13/6,s8,x11/10,pf/a,x12/0,s5,x1/11,s1,pd/g,x8/2,s7,x12/0,s4,x4/5,s15,x13/14,pc/o,x0/5,s4,x15/13,s7,x8/10,s11,x13/15,s7,x12/6,s7,pj/i,x15/8,s7,x11/4,s3,x9/0,s7,x7/15,s3,x14/5,s7,x4/13,s14,x1/2,s2,x11/0,pn/o,s10,x12/10,s15,x1/3,pa/p,x15/0,s1,x9/2,pe/f,x11/13,pn/g,x2/3,s12,x6/4,s1,x11/1,s11,x8/14,s5,x15/0,pm/o,x2/9,s7,x15/6,s12,x13/7,pl/k,x4/1,s14,x7/6,s13,x4/9,po/i,x14/2,pn/p,x1/8,pe/a,x5/12,s7,x15/6,s2,x9/12,pm/j,x5/13,s6,x6/10,pb/g,x0/12,s3,x10/13,pa/f,x11/7,pg/j,x5/15,s3,pd/k,x8/0,pm/a,x2/5,pf/o,s3,x15/6,pi/g,x9/7,s13,ph/a,x4/14,s3,x2/11,s1,pd/p,x14/1,pc/a,x7/10,s5,pl/h,x12/14,pc/k,x4/13,s4,x11/6,ph/o,x5/2,s15,x13/7,s2,x8/14,s1,x11/12,s7,x9/7,s11,x12/1,s9,x3/10,pb/k,x1/13,pn/l,x6/12,s8,x7/14,pp/g,x3/5,s15,x0/7,ph/e,x1/10,s6,x7/2,s7,x14/6,pk/c,x12/9,s4,x6/5,pj/g,x0/8,s14,x9/11,pe/h,x5/3,s15,x4/15,pk/m,x5/11,s15,x8/15,s7,x7/5,s11,x9/8,pg/n,x0/11,pa/o,s2,x1/4,pp/h,x9/7,pe/i,s14,x12/10,pp/f,x7/5,s15,x9/6,s6,x5/1,pm/d,s6 diff --git a/data/advent2017/input18.txt b/data/advent2017/input18.txt new file mode 100644 index 0000000..ea1762c --- /dev/null +++ b/data/advent2017/input18.txt @@ -0,0 +1,41 @@ +set i 31 +set a 1 +mul p 17 +jgz p p +mul a 2 +add i -1 +jgz i -2 +add a -1 +set i 127 +set p 826 +mul p 8505 +mod p a +mul p 129749 +add p 12345 +mod p a +set b p +mod b 10000 +snd b +add i -1 +jgz i -9 +jgz a 3 +rcv b +jgz b -1 +set f 0 +set i 126 +rcv a +rcv b +set p a +mul p -1 +add p b +jgz p 4 +snd a +set a b +jgz 1 3 +snd b +set f 1 +add i -1 +jgz i -11 +snd a +jgz f -16 +jgz a -19 diff --git a/data/advent2017/input19.txt b/data/advent2017/input19.txt new file mode 100644 index 0000000..f18900e --- /dev/null +++ b/data/advent2017/input19.txt @@ -0,0 +1,201 @@ + | + +-+ +-----------------------------+ +---+ +-------+ +-+ +-+ +-+ +-------+ +-+ + | | | | | | | | | | | | | | | | | + +-------------+ | +-+ +-------------------------------|---|---|---------------------------------------------------------+ | | | | | | | | +-+ | | + | | | | | | | | | | | | | | | | | | | | | + | | | | | | +-+ +---+ | | | +-------------------------------------------------|-------------+ | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | + +-------|-------------------|-|-+ | | +---+ I +-|---|-|---+ | | +-------------------------------------------------------------------|-|-----|---+ +-------+ + | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +---------|-------------|---------+ +-|---------|---------|-----------+ | | | +---------|-|-------------------------------|-----+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +---|-------------|-------|---|-|-------------+ | | | +-------|-+ | | | +---------------------|-----|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | +---|---------|-----------|-------|---------------------|-------|-----------|-------------------------|-------|-------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +-----|---|-------|-------|-----|-----------------------------------------|---------|-------+ | +---------------------|-|-------------|---+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | +-|-|---------------|-|-----|-----|-|---+ | | | | | | | | | | | | +-------------+ +-------|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---------------------+ +-------|-----|---------------|-|-----|-----|-|-----------+ | | | +-----------------|-----|-----|---------------------------|-----|-----+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | +-|---|-------|---------------------|-------------------|---------|-----|-------|---|-|-------|-----------------------+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | +-----|---+ +-------|-----------------|-----------|-------+ | | +---|-------------|---------------------|---------|-|-----+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-+ +-|-----------|-------------|-|-|---------------------+ | | +-|-----------------|-----------|---+ +---------|---------------|-|-|-----------------|-------------|-----|-----|---|---------+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | +-|-|-+ | | | | | | | | | +---|-----+ | | | | | | | | | | +-----|-----|-----|---+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +---+ | | | | | | | +-|---|---|-|-----+ | +-------------|-----------|---+ | | | | | | | | | | | | | +-----------------------|-+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------------------------------|---|---|---|---------------------|-------------------+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|-+ | +-----|-----------|---|-|-|-------------+ +---|-+ | | | +-----+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | +-|-|-|---+ | | | | | | | | | | +-------------|-----------------|-|---|-|-|---|---------------|-|-|-|-----+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +---------|-|-----|-+ | | | | | | | | | +-------------------|----------------------C--|---------------+ | | | | | | | | | +-------|-----|-----+ | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +-----------------|-------|-|---|-|-----------|-----|-|-|-|-----|-----------------|---|---------------------|-----|-----------|-------|-------|-----------|-----------|-----+ | | | | +-|-+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|-+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | +---------------------|---|---------|---------+ | | | | +---+ | | | | | | | | | | +-|-----------------+ | | | +-------+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---------|-----|-|---+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | +---|---|-+ | | | +---+ | | | | | | | +-----|-----|---|-|-----------------|-----|---+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | +-|---|-------+ | | | | | | | | | | | | | | | | | | | | | | | | +-|-|---------+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | +-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-|---|-----|---|-|-+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | +-----+ +---------|---+ | | | | | | | | | | | | | | | | | | | +-|---+ | +-----|---+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------|-|---------------------------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------|-----------------------|---------------|-|-----|-----|-|-|-+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|-|-+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|-------------|-----|-----|-----|---------|---------|-|-|-|-------|-----|-+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-------|-----|---|---|-----|-----|-----------|---|-|---|-|-|-----|-----|---------------|-|-----------|-----|-----|-----|---------|-----|-----|-|-|-----|-|-----|---|-|-------+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +-|---|---------|---|-------------------|-|-|---|-|---|-|-----------------|-----------|-|-----------|-----|-----|---------------------|-----------|---------|-----|---|---------|-+ + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +---|---------|---|---|-----------|-----------------|---|---|------L----|-|-------+ | | | | | | | | | | | +-|-|-|---|-|---|-----|-|---+ | +---+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------------|-|-----|-----------|-------|---+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | +-|-----------|-|---+ | +-------------|-----------------|---|-----|-|---|-|-----|---|-|---+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | +-------------|---|-------|-----|---------|---|-|-----|-----------+ | | | +-|-------|-------|-----|---+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------|-|-------------|---|-+ | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | X | | | | | | | | | | | + | | | | | +---|-------|-----------------|---|-|-------------------|---------+ +-----|-------------|-----|-----|-----------------------|-|-------|---|-|---|-|-|-|-------+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +--B--|---------+ | | | | | | | | | | | | | | | | | | | | | | +-|-----------|---+ | | | | | | | | | | +-|---|---------+ | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +---|-|-----------|---------|-------------|-------|-----|-|-|-----|---|-----------------------|-------|-|-------|-|-----|---|-----|-----|---|-----|-----|-|-----|---+ | +-|-|-|---+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | +-----------------------|-------|-|-|---------------|-------|-|-------+ | | | | | +-+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | +-----|-|-----------|-|---|-------------|---|-------|-----|---|-|---|-----|---------------|-----|-|-|-------|-|-------+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-------------|-|-|---------|---+ | | | | | | | | | | | | | +-|-----------------|-------+ | | | | | | | | | | | | | +---|---------|-----+ | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +---|-|-|---------|---------------------|---|-------|-----|-|-----|---+ +---|-------------|---|-------------------------|-|-|-----------|---|---------|-|-|---|-|---|---+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | +---|---------------------------------------|---------|-|---|-|---|-----|-----------|-|-----+ | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | +-|-|-----|-|-----------|-------------|-|-|---------|---|-----|-------|-----------|---|-------------+ | | | | | | | | | | | +-----|-|---+ | | +-|-|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-------|-|-------|-------------------------|---------|---|---------------------------------|---------------------|-|---|-|---|-----|-----|-------------|-|-----|-|-|---|---+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | +---------------------|---|-----------------|---------|-|---|---------------|---------|-------|---|---|-----------+ | + | | P | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +-------------|-----|---|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | +-----|-|-|-|---|---|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | +-----|-----|-------|---|-----------------|-------------------------|---------------|-|---|-------|---|-----|---------|-+ | | | +-----|-|-|---|---------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-|-----|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +---------|---+ | +---|-----|---|-|-------------|-----|-------|-|---------|---+ | +-----|-----|-----|-|-|-------------+ | +---------|-------|---|-|-|-----|-+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +-+ | | | | | +---------|-----|-|-------|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | +-----------|-----------|-----|-----|---|-|-----|---------|-----|-|-|-------|-|-+ | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | +-------------------|-----|---|-|-|-------------|-----------|---|-----|---+ | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-|-------------------|---------|-|---------------|-----|-|-----|-------|-|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +-----|------H------+ | | | | | | | | | | +-|-----|---|-+ | | | +-+ | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|---|---------+ | | +-|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-----|-----|---------+ | | | | | | | | | | | | | | | | | | | +---------------|-----|-|---|-------------|---|-----|-|-----|-----------------+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | V | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-|-------------|-------+ | | | | | | | | | | | | | | | | | | | | +---------------|-------|-+ | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | +-------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-+ | | | | | | | | +-------------|-------|---|-------+ | | | | +---|-|-|-----------|-|-------+ | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-----|-|-------------|---|---------------|-------|---|-------|---|-----|---|---------------------|---|---|-------------------|-----|---|-|-------|-------|-------|-+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | +---|-------------------|---------+ | | | | | | | +---+ | | +-|-+ | | | | | | | | | | | | +---|---------|-|-----+ | | +---------+ | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | +-------|-------------------+ +---------+ | | +-----|---|---|-+ | | | | | | | | | | +---------|---|---------|---|-+ | | | | | | | +-+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +-|-------|---|---+ +---------|-------------|-|-|-|-----|---|---|-|---------+ +-----|-----------------------------------|-----------|---|---|---|-|-------|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | T | | | | | | | | | | | | | | + +---|-----|-|-------|-------|---------------------------------|---|---------|-|-----|---|-----------------------|---------------|-|-----|---+ | | | | | | | | | | | +-+ | | +-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | +-----|-|-|-----|---|---------|---|-----------------------|-------|-|-----------|-|-|----------E------|-------|---|---+ | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-------|-----------|---------------------------|-|-|---|---|-----------|---|-----+ | | | | | | | | | | | | | +---|-----------|---------|---+ | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | +-|-|-------------------------------|-|-|-------|-|---|---------|---------------+ | +---------------|---|---------|---------------------|---+ | | | | +-+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | +---------------------------------|-|-|---|---|-|---|-|-------|-----------|-------|-----------|---|-------------|---|-----|---|---|-----|-|-------|---+ | +-+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----+ +-----+ | | | | | | | | | | | | | | | | | | +---|-+ | | | | | | +-----|-------|---------|-----------|-----+ | +---|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---------------------------|---+ | | | | | | | | | | +-------|-------|-----------|-------|---|-----------|-|---------------------|-----|-|---+ | +-------|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +---|-----------|---|-|-----|-------|---|-|-----+ | | +-|---------|---|---------|-|---|-+ | | +-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----------|-----|-------|---|---------------------------------|-------|---|-------|---------------|-----------|---+ | | | | | | | | | +-----|-+ | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---------------|-|-|---------|-----------------------------|-----|-|-------|-|---|-|---|---|-------|---------------|-------|---|-|-|---------|---+ | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +-|---|-+ +-------------------------------+ | | | | | +-----|---|-------|---------------|-------|-------|---+ | | | +-----|-|---|-----------|-|---------------|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----------|-----|-|---|-|---|-|---+ | | | | | | | | | | | | | | +---|---|---|-|-|-+ | | | | | +---|---------|-|-----|-|---|---+ +-----|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | +---------------|---|-------|---|-|-----|---|-----------|---|-|---------|-------|-|-|---+ | | +---+ | | | | +-+ | +---|-------------+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | +-------+ +-------|-----------------------------|---+ +-|-----------|-------+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---+ | | +-----|---------|---------|---------------|-------|-----|-+ | | | | | +---------|-----|-------|-------------|---------|-|-----------|-----|---+ | +-|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---|-----+ | | | | | | | | | | | | | | | +-|---|-----|---|-----------|-------+ +-----|---|-----------------|-----|-------|-|---------------|-------|---+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | +---|---|-|-----|---+ | | | | | +---------|---|-------------------------------------|-|-------------------------|-|---+ | | | | +-------|-|-------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +---------|---------------|-----------|---|-------------|---------------|-----|-----------|---------+ | +-+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----|-----|---------+ | | | | +---+ | | | +-----------------------|-----------------+ | | | | | | | | | | | | | +---------|---+ +-----|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +---|-------|---|-+ | | +-------|---------------|-----------------------|---|---|-------------|-|-----------+ | | | | +-------|---|-|-+ | | +---|-----|-----------|---|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | +-|-----------------------+ | +-----------|---------------+ | | | +-|-----|-|-------+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----|-----------|-------|-------|---------------|-------|-------------+ | +---+ +-|-----|-------------------|-------------|-|-----|---+ +-+ | | | | | | | +---+ +-+ | | +---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +---+ | | | | | | | +---------------|-----|-----------------------------------------|---------+ | | | +-------|-----------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-----------|-------|---------------|-|-----|-------------------------------------|-------------------|-----------+ | +-----+ +-----------------------+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | + | +---------------------------|-----|-------------------------------|-------|-----------------|-------------+ +-------------|-------------+ +-------|---+ | | | + | | | | | | | | | | | | | | | | | | | | | | + +-------------------|-----------------------|-|-----|---------------------------------------------+ +---------|---------------------------+ | | | +---|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | + +-------+ +-+ +---------+ +-------------+ +---------|---------------------------|-----|---------------|-----------+ +---|-+ + | | | | | | | | | | + +-------------------------------------+ +-----------------+ +-----|-------------------------------+ | | + | | | | | | | | + +-------------------------------------------------------------------------------------------+ +-+ +---------------+ +-+ + From 9fe15e5415c712e11367dce88c1f214a42b3b2e8 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Wed, 20 Dec 2017 00:27:32 -0800 Subject: [PATCH 36/55] Add files via upload --- data/advent2017/input1.txt | 1 + data/advent2017/input20.txt | 1000 +++++++++++++++++++++++++++++++++++ 2 files changed, 1001 insertions(+) create mode 100644 data/advent2017/input1.txt create mode 100644 data/advent2017/input20.txt diff --git a/data/advent2017/input1.txt b/data/advent2017/input1.txt new file mode 100644 index 0000000..b7e8ce6 --- /dev/null +++ b/data/advent2017/input1.txt @@ -0,0 +1 @@ +3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763 diff --git a/data/advent2017/input20.txt b/data/advent2017/input20.txt new file mode 100644 index 0000000..391fca8 --- /dev/null +++ b/data/advent2017/input20.txt @@ -0,0 +1,1000 @@ +p=<1199,-2918,1457>, v=<-13,115,-8>, a=<-7,8,-10> +p=<2551,2418,-1471>, v=<-106,-108,39>, a=<-6,-5,6> +p=<-73,1626,1321>, v=<58,-118,-8>, a=<-6,2,-9> +p=<-3297,-894,-551>, v=<183,31,-61>, a=<3,3,11> +p=<-1425,4298,617>, v=<32,-166,-32>, a=<7,-12,-1> +p=<-3718,877,1043>, v=<114,7,-20>, a=<10,-6,-4> +p=<-2089,-239,1142>, v=<52,12,3>, a=<7,0,-7> +p=<782,994,3311>, v=<16,-28,-32>, a=<-6,-3,-16> +p=<-937,2596,-109>, v=<-12,-117,-13>, a=<7,-3,2> +p=<-865,-2930,-1387>, v=<60,76,-56>, a=<-1,9,14> +p=<1196,-3308,2564>, v=<-26,59,0>, a=<-4,13,-15> +p=<-271,1957,-2944>, v=<8,-15,40>, a=<1,-10,13> +p=<-964,1228,1583>, v=<18,16,-12>, a=<4,-9,-8> +p=<-1639,1174,1970>, v=<84,-114,-138>, a=<1,5,3> +p=<-1840,1679,-1764>, v=<44,-20,91>, a=<8,-10,2> +p=<1104,-233,140>, v=<-21,-11,-28>, a=<-6,3,2> +p=<1136,-361,-3100>, v=<-40,14,98>, a=<-4,1,11> +p=<1480,-265,-1412>, v=<-36,42,18>, a=<-7,-3,8> +p=<144,-1217,-660>, v=<39,25,56>, a=<-6,6,-2> +p=<360,295,276>, v=<-51,-95,-11>, a=<3,9,-1> +p=<-2656,487,1228>, v=<78,12,-11>, a=<10,-5,-8> +p=<-1400,2295,-204>, v=<-9,-67,53>, a=<11,-9,-5> +p=<-1016,-769,-52>, v=<1,14,120>, a=<7,4,-14> +p=<1536,4167,-940>, v=<-99,-201,82>, a=<0,-7,-3> +p=<2398,3917,2412>, v=<-69,-51,-81>, a=<-3,-10,-2> +p=<-3283,536,733>, v=<46,72,-32>, a=<8,-8,0> +p=<-247,1180,-2901>, v=<46,-52,-18>, a=<-3,0,12> +p=<-2984,-499,-1475>, v=<-3,57,-8>, a=<11,-3,6> +p=<-431,2008,-3890>, v=<54,-40,49>, a=<-3,-4,10> +p=<2904,-775,-3614>, v=<5,-3,97>, a=<-11,3,5> +p=<2697,-1074,3401>, v=<38,70,-28>, a=<-13,-2,-10> +p=<-1259,1456,595>, v=<42,8,34>, a=<1,-6,-5> +p=<-1293,5020,-2110>, v=<-12,-199,93>, a=<7,-5,1> +p=<-1753,-1520,-320>, v=<-10,44,14>, a=<9,3,0> +p=<-2143,1040,-2220>, v=<83,-42,109>, a=<2,-1,0> +p=<-203,3210,-530>, v=<-56,-98,35>, a=<6,-6,-1> +p=<3017,-3820,290>, v=<-154,96,-6>, a=<0,9,-1> +p=<-1195,-180,-289>, v=<93,-30,-2>, a=<1,6,4> +p=<371,1368,953>, v=<-18,-16,-125>, a=<-2,-16,7> +p=<-1777,-426,-523>, v=<187,-16,24>, a=<-6,7,3> +p=<-2635,690,-1177>, v=<148,-83,59>, a=<11,3,6> +p=<431,-366,-1333>, v=<-62,18,124>, a=<4,1,-2> +p=<-2311,-750,143>, v=<147,11,-51>, a=<7,7,6> +p=<-151,354,-85>, v=<97,-29,-84>, a=<-13,-1,14> +p=<-325,-1602,779>, v=<-25,56,-13>, a=<8,11,-8> +p=<-385,-204,467>, v=<-7,37,0>, a=<6,-4,-6> +p=<665,-1272,-1195>, v=<-10,35,80>, a=<-7,10,3> +p=<-2525,7592,-6216>, v=<43,-14,0>, a=<1,-9,8> +p=<-68,4433,8721>, v=<-120,-113,-63>, a=<6,0,-8> +p=<-6971,-91,-561>, v=<-43,3,15>, a=<11,0,0> +p=<-2876,806,-8478>, v=<72,-60,58>, a=<0,2,8> +p=<-7907,4004,258>, v=<61,-42,-46>, a=<7,-3,2> +p=<-4358,6773,5523>, v=<50,-73,39>, a=<3,-5,-9> +p=<1941,1823,224>, v=<-102,-73,-54>, a=<1,-1,4> +p=<-1440,-1768,224>, v=<70,87,67>, a=<0,0,-7> +p=<-1776,3125,2870>, v=<20,-58,-4>, a=<6,-8,-12> +p=<1437,-697,-5635>, v=<-12,25,115>, a=<-5,1,14> +p=<-3603,-151,2366>, v=<30,-89,31>, a=<13,9,-13> +p=<-264,4805,3857>, v=<3,-105,-40>, a=<1,-11,-13> +p=<-831,-823,140>, v=<52,-35,5>, a=<-1,7,-1> +p=<2970,-634,1085>, v=<-52,110,-18>, a=<-8,-7,-3> +p=<1755,-4503,-1198>, v=<-18,102,8>, a=<-4,6,3> +p=<-4945,572,1727>, v=<42,-101,-5>, a=<12,6,-5> +p=<-70,5047,-2023>, v=<3,45,54>, a=<0,-19,2> +p=<-2845,4372,-2598>, v=<75,-110,116>, a=<3,-5,-1> +p=<-345,-228,-1898>, v=<-38,61,88>, a=<4,-4,-1> +p=<-2720,3622,1727>, v=<109,-2,-83>, a=<0,-11,1> +p=<-4045,-3228,-2448>, v=<-7,116,-7>, a=<13,1,8> +p=<580,3347,802>, v=<-10,48,19>, a=<-1,-14,-4> +p=<-1910,2875,1236>, v=<71,-54,88>, a=<-1,-1,-6> +p=<-2963,-6485,2406>, v=<-102,86,-42>, a=<9,4,-1> +p=<-18875,7633,-7890>, v=<86,-76,82>, a=<20,-6,6> +p=<391,9505,4980>, v=<-8,76,-108>, a=<0,-16,-1> +p=<-935,5800,-1533>, v=<-114,-129,59>, a=<7,-1,-1> +p=<-272,-7733,12858>, v=<69,18,10>, a=<-3,9,-17> +p=<-7292,613,12741>, v=<49,-116,-47>, a=<7,5,-14> +p=<3550,-518,-15339>, v=<51,33,73>, a=<-7,-1,16> +p=<4213,-8123,-2157>, v=<14,88,55>, a=<-6,6,0> +p=<-7721,418,-17250>, v=<80,69,2>, a=<6,-4,22> +p=<1738,-2831,-158>, v=<40,35,8>, a=<-12,10,0> +p=<2598,399,782>, v=<-66,10,45>, a=<-6,-3,-8> +p=<3068,129,-1558>, v=<-58,13,57>, a=<-9,-2,2> +p=<-1782,4139,-3628>, v=<-99,-93,171>, a=<18,-11,1> +p=<-1082,-3161,-498>, v=<55,83,67>, a=<0,7,-4> +p=<-5302,-1291,772>, v=<98,42,-70>, a=<16,2,3> +p=<808,979,232>, v=<-50,2,-1>, a=<1,-5,-1> +p=<-152,1479,-8>, v=<-86,61,11>, a=<9,-13,-1> +p=<1292,1700,-858>, v=<-72,-94,96>, a=<-4,-5,-4> +p=<304,-640,-455>, v=<53,-12,72>, a=<-11,9,-5> +p=<486,1063,-689>, v=<-52,-66,27>, a=<2,-2,4> +p=<993,-1823,182>, v=<-84,30,-47>, a=<1,16,5> +p=<-1230,-1615,-312>, v=<52,182,96>, a=<6,-8,-10> +p=<-268,1297,728>, v=<20,-105,-40>, a=<0,1,-2> +p=<1476,1697,875>, v=<5,-87,-71>, a=<-15,-5,1> +p=<1476,1193,-1813>, v=<-85,-51,46>, a=<-3,-5,11> +p=<932,-6376,-4019>, v=<-47,24,-82>, a=<1,12,14> +p=<-12763,29,8401>, v=<177,-19,-62>, a=<16,1,-14> +p=<5087,6059,1936>, v=<-139,-65,76>, a=<-2,-9,-9> +p=<-853,-721,-4889>, v=<28,6,40>, a=<0,1,8> +p=<-1288,329,-11219>, v=<58,33,96>, a=<-1,-3,18> +p=<1352,-286,4051>, v=<-61,38,-10>, a=<1,-2,-8> +p=<2477,-271,-4649>, v=<41,-40,32>, a=<-8,3,8> +p=<-1783,-376,-6944>, v=<59,41,155>, a=<0,-2,5> +p=<-8728,2204,-1514>, v=<27,48,-26>, a=<17,-8,5> +p=<2987,-7276,-1829>, v=<-100,54,-31>, a=<0,12,6> +p=<-86,2277,1643>, v=<48,-108,-103>, a=<-4,0,2> +p=<-1640,-726,3722>, v=<45,24,-48>, a=<3,1,-12> +p=<334,-4947,761>, v=<-82,71,-28>, a=<6,15,-1> +p=<2686,1290,572>, v=<-106,16,-41>, a=<-2,-7,1> +p=<1153,3663,152>, v=<-110,35,45>, a=<5,-19,-5> +p=<-3257,-957,-2620>, v=<45,35,-32>, a=<10,1,14> +p=<-4958,4524,-2179>, v=<16,-127,13>, a=<20,-8,8> +p=<-1913,2844,-898>, v=<47,-135,40>, a=<4,0,0> +p=<-3826,-5200,5502>, v=<-27,-24,31>, a=<8,10,-11> +p=<50,-7529,4380>, v=<34,27,-6>, a=<-2,11,-7> +p=<-362,3,273>, v=<20,20,-5>, a=<3,-4,-4> +p=<-927,-577,-887>, v=<82,89,56>, a=<2,-6,6> +p=<-942,-727,1133>, v=<78,-6,-102>, a=<3,14,-2> +p=<-92,-817,-222>, v=<-73,80,17>, a=<15,0,1> +p=<-1062,-87,-642>, v=<68,7,59>, a=<7,0,1> +p=<-532,-1332,-537>, v=<4,27,65>, a=<9,19,-2> +p=<8,888,968>, v=<-17,-19,-58>, a=<3,-13,-7> +p=<-1188,-1222,249>, v=<-13,12,39>, a=<5,3,-4> +p=<-672,-814,1713>, v=<28,45,3>, a=<0,-1,-6> +p=<612,-4354,3273>, v=<87,30,-87>, a=<-9,12,-4> +p=<3048,-2098,-3435>, v=<-27,86,80>, a=<-8,0,5> +p=<2556,3434,1137>, v=<31,-32,2>, a=<-11,-9,-4> +p=<-372,710,-1851>, v=<-47,-31,-61>, a=<5,0,11> +p=<-648,-2698,705>, v=<2,136,20>, a=<2,-2,-4> +p=<564,146,-2007>, v=<-36,-70,108>, a=<1,5,-2> +p=<2040,662,-6411>, v=<-85,-29,129>, a=<0,0,11> +p=<-5642,-1168,-495>, v=<101,-74,-40>, a=<7,8,4> +p=<-3724,-3058,-1279>, v=<-11,-21,-41>, a=<10,9,6> +p=<-1540,-5046,-2875>, v=<56,79,74>, a=<0,7,2> +p=<336,-3506,345>, v=<47,82,17>, a=<-4,3,-2> +p=<5432,3088,2375>, v=<39,-52,-99>, a=<-16,-4,1> +p=<1792,1716,-2749>, v=<-63,55,26>, a=<0,-8,5> +p=<-1274,316,723>, v=<148,76,-40>, a=<-7,-6,1> +p=<924,-104,4223>, v=<-32,4,-49>, a=<0,0,-7> +p=<1484,-832,107>, v=<-168,30,-18>, a=<8,0,1> +p=<-8594,3021,4906>, v=<21,28,4>, a=<14,-7,-9> +p=<10084,-1137,-5786>, v=<-86,35,90>, a=<-13,0,5> +p=<-5030,5628,-2420>, v=<-2,-170,73>, a=<9,0,0> +p=<-2324,-2952,220>, v=<1,124,44>, a=<4,-2,-3> +p=<2857,2757,55>, v=<-3,2,-36>, a=<-5,-5,2> +p=<3319,-2523,2497>, v=<-34,26,26>, a=<-4,3,-6> +p=<5256,903,-1020>, v=<76,11,65>, a=<-12,-2,-2> +p=<8028,5151,-1038>, v=<-1,-33,84>, a=<-12,-6,-3> +p=<3690,-4065,1266>, v=<-47,75,57>, a=<-3,2,-5> +p=<6606,5403,7026>, v=<-17,-40,-66>, a=<-9,-6,-7> +p=<-1638,1383,1338>, v=<11,-86,-51>, a=<14,-2,-6> +p=<896,1026,-622>, v=<-5,-98,-1>, a=<-8,3,6> +p=<763,1425,309>, v=<-78,-134,0>, a=<3,4,-3> +p=<1001,-619,113>, v=<55,72,44>, a=<-17,-4,-7> +p=<1191,109,1991>, v=<-116,-48,-8>, a=<5,3,-4> +p=<3453,-1718,-5230>, v=<136,60,46>, a=<-17,0,9> +p=<-2666,-2646,-4621>, v=<32,47,40>, a=<4,3,8> +p=<1436,-2829,1966>, v=<-51,-16,-45>, a=<-2,15,-5> +p=<696,2161,-2404>, v=<-35,-108,100>, a=<0,0,2> +p=<2486,2401,-1224>, v=<-9,48,20>, a=<-11,-16,4> +p=<3046,261,1116>, v=<-37,71,-139>, a=<-11,-8,8> +p=<-104,2751,2326>, v=<-121,-85,-42>, a=<12,-5,-7> +p=<-1044,-249,496>, v=<73,-19,-45>, a=<-2,3,2> +p=<556,-289,1826>, v=<-28,-59,67>, a=<0,7,-15> +p=<-274,1131,-44>, v=<-18,-46,45>, a=<3,-1,-4> +p=<2266,1141,-504>, v=<-19,-78,26>, a=<-9,2,0> +p=<-891,-129,1722>, v=<-121,92,-73>, a=<15,-8,-1> +p=<243,-2439,3276>, v=<23,70,-158>, a=<-3,4,0> +p=<-72,-339,399>, v=<-17,3,-10>, a=<2,1,-1> +p=<1461,-759,2205>, v=<-57,-109,-30>, a=<-1,13,-7> +p=<-597,-1536,882>, v=<30,-39,-33>, a=<0,10,-1> +p=<2469,-1683,1533>, v=<49,-10,-152>, a=<-15,8,7> +p=<957,3441,1428>, v=<-143,-1,106>, a=<9,-15,-16> +p=<-2487,-927,-5271>, v=<32,-35,194>, a=<8,7,5> +p=<915,585,1701>, v=<-97,-8,-83>, a=<5,-2,0> +p=<-1975,2665,-1727>, v=<138,-30,49>, a=<-4,-9,3> +p=<-2122,-23,-2945>, v=<24,76,74>, a=<7,-7,6> +p=<150,1353,672>, v=<36,-115,-12>, a=<-5,4,-3> +p=<2139,-1299,1437>, v=<-144,-4,-93>, a=<2,9,1> +p=<-955,3036,298>, v=<74,-79,-8>, a=<-2,-11,-1> +p=<2156,-1418,-1640>, v=<-46,84,34>, a=<-9,0,7> +p=<-938,-1418,808>, v=<82,66,25>, a=<-3,2,-8> +p=<-2179,-109,-382>, v=<146,25,-31>, a=<-2,-2,6> +p=<2139,1727,-280>, v=<-63,-74,-46>, a=<-7,-3,7> +p=<-1006,622,-59>, v=<77,-54,-5>, a=<-2,2,1> +p=<235,894,349>, v=<-113,-79,43>, a=<11,3,-7> +p=<2258,452,1624>, v=<-88,37,-32>, a=<-5,-7,-7> +p=<6485,8607,10076>, v=<-46,61,-99>, a=<-6,-14,-8> +p=<15533,4551,638>, v=<-78,-55,-57>, a=<-16,-3,2> +p=<128,6540,4148>, v=<-3,114,-67>, a=<0,-14,-2> +p=<11555,3186,2081>, v=<-116,0,-114>, a=<-9,-4,3> +p=<9371,-3015,-6031>, v=<20,79,54>, a=<-13,0,5> +p=<-12586,339,-7786>, v=<3,-7,59>, a=<16,0,7> +p=<-2056,-7383,-4705>, v=<-67,11,0>, a=<6,9,6> +p=<1025,2796,-13480>, v=<-126,-70,-15>, a=<5,0,18> +p=<-11416,-1962,-766>, v=<-47,12,39>, a=<17,2,-1> +p=<1103,-558,3212>, v=<-88,-24,-83>, a=<3,2,0> +p=<-56,-3584,3008>, v=<78,86,-151>, a=<-6,5,2> +p=<1072,-5108,-1720>, v=<-44,112,71>, a=<0,8,0> +p=<-1256,1936,-1384>, v=<28,-69,57>, a=<2,-1,0> +p=<1996,-992,1472>, v=<-120,-22,-12>, a=<3,5,-4> +p=<3376,1324,908>, v=<-140,-31,-101>, a=<0,-2,5> +p=<3604,412,6920>, v=<-62,-43,-189>, a=<-7,2,-8> +p=<-176,4384,2204>, v=<-17,-21,-80>, a=<2,-13,-1> +p=<-992,-1196,-3616>, v=<42,49,50>, a=<0,0,8> +p=<-353,-1549,-1122>, v=<-72,-82,26>, a=<6,10,1> +p=<727,-3169,-2337>, v=<0,6,-97>, a=<-2,8,13> +p=<-1973,-1387,-3282>, v=<44,-60,92>, a=<2,8,2> +p=<1159,-118,2712>, v=<96,75,-46>, a=<-10,-5,-4> +p=<-974,260,-2553>, v=<-105,-51,37>, a=<10,3,4> +p=<1645,2069,2388>, v=<50,22,-20>, a=<-8,-7,-5> +p=<1726,2420,-3930>, v=<-79,-19,46>, a=<1,-5,7> +p=<1564,4364,1740>, v=<53,-91,-38>, a=<-8,-5,-2> +p=<6496,8583,-2797>, v=<-129,-57,50>, a=<-4,-12,2> +p=<919,-6234,4727>, v=<74,188,9>, a=<-6,0,-9> +p=<2272,-2736,7796>, v=<-1,-3,-67>, a=<-4,5,-10> +p=<-9674,-558,9809>, v=<72,-52,-26>, a=<13,4,-16> +p=<8542,3765,-124>, v=<-55,89,20>, a=<-12,-12,-1> +p=<1909,3138,1790>, v=<-41,74,-21>, a=<-1,-10,-2> +p=<-1419,1399,-3011>, v=<42,-26,-27>, a=<0,-1,7> +p=<1716,-4244,5569>, v=<-53,-178,-32>, a=<0,18,-8> +p=<6270,211,-10931>, v=<-38,78,60>, a=<-9,-5,16> +p=<-5181,-3452,-338>, v=<71,36,62>, a=<5,4,-3> +p=<-6105,-8402,-5915>, v=<31,-1,27>, a=<9,15,9> +p=<-1848,310,-1097>, v=<4,92,17>, a=<3,-6,1> +p=<2803,-1755,-532>, v=<-71,13,2>, a=<-5,6,2> +p=<691,2348,-785>, v=<48,-24,71>, a=<-7,-7,-3> +p=<-233,4779,-994>, v=<-48,-31,0>, a=<5,-16,4> +p=<119,-4021,238>, v=<-41,93,-10>, a=<3,8,0> +p=<-1168,-3647,-3392>, v=<52,76,132>, a=<0,8,2> +p=<-1845,-443,-822>, v=<-24,-30,1>, a=<11,5,4> +p=<2315,1487,4428>, v=<-64,-53,-83>, a=<-5,-2,-13> +p=<3255,-2683,-772>, v=<-132,82,-12>, a=<-3,5,5> +p=<-1405,487,108>, v=<-25,-45,70>, a=<9,2,-7> +p=<-2315,1877,-1142>, v=<73,1,38>, a=<4,-9,2> +p=<-1975,-2143,-3372>, v=<-28,13,13>, a=<12,9,15> +p=<1945,3157,2138>, v=<28,-147,21>, a=<-12,-1,-12> +p=<-3555,977,708>, v=<114,-59,-2>, a=<6,1,-3> +p=<5865,5127,-4422>, v=<-105,-67,118>, a=<-18,-18,10> +p=<-3264,2343,-3273>, v=<79,-72,127>, a=<11,-6,6> +p=<3387,-2301,1992>, v=<-53,129,15>, a=<-14,0,-13> +p=<2295,5276,1762>, v=<-104,-67,-57>, a=<0,-15,-2> +p=<-2072,-774,1036>, v=<37,-22,68>, a=<5,5,-10> +p=<447,865,1300>, v=<-20,-39,-36>, a=<0,0,-2> +p=<-1467,-1852,2323>, v=<90,50,-117>, a=<-2,3,1> +p=<4473,-664,-1241>, v=<-157,-4,45>, a=<-4,3,1> +p=<1580,-1621,-2572>, v=<32,5,48>, a=<-9,6,6> +p=<9680,-3138,-4267>, v=<-41,22,-84>, a=<-14,4,12> +p=<-4107,4648,2023>, v=<32,3,-59>, a=<5,-8,0> +p=<-673,1860,7004>, v=<36,-55,-48>, a=<-1,0,-9> +p=<8337,7453,2516>, v=<-159,-132,84>, a=<-5,-5,-9> +p=<2276,-3123,-1445>, v=<-62,44,37>, a=<-6,12,4> +p=<-1885,-64,1576>, v=<27,33,-12>, a=<7,-3,-7> +p=<-7265,156,268>, v=<89,-23,-25>, a=<6,1,1> +p=<-9137,3036,826>, v=<104,8,-133>, a=<8,-5,6> +p=<-6167,-1770,-4592>, v=<77,86,73>, a=<5,-2,3> +p=<-1685,-2976,2824>, v=<45,27,-22>, a=<0,3,-3> +p=<5821,-870,5740>, v=<3,-13,-29>, a=<-9,2,-7> +p=<331,1596,232>, v=<-11,-100,-135>, a=<0,3,7> +p=<-1230,1100,-8455>, v=<87,-67,165>, a=<-3,2,6> +p=<-1470,5772,3641>, v=<-21,-81,18>, a=<4,-6,-8> +p=<7026,-2852,1913>, v=<-6,106,6>, a=<-13,-1,-4> +p=<-5422,5132,-5575>, v=<-13,-160,42>, a=<11,0,8> +p=<3792,1660,-43>, v=<-175,-121,15>, a=<-9,1,-2> +p=<42,-620,-778>, v=<3,39,24>, a=<0,0,3> +p=<-318,-1370,1697>, v=<11,137,-85>, a=<2,-6,-4> +p=<1842,130,-613>, v=<-69,-11,-19>, a=<-6,0,7> +p=<-963,3070,-2218>, v=<30,-151,144>, a=<5,-7,0> +p=<2847,-2795,1532>, v=<-112,80,-74>, a=<-9,13,-4> +p=<747,-875,197>, v=<12,56,-17>, a=<-7,0,0> +p=<627,-80,1022>, v=<-36,27,-128>, a=<0,-3,7> +p=<2667,655,1427>, v=<-108,-14,-91>, a=<-8,-4,-1> +p=<1002,-215,962>, v=<35,-28,-108>, a=<-12,5,5> +p=<-849,-4500,291>, v=<-67,65,22>, a=<6,5,-2> +p=<6405,4180,5499>, v=<-125,9,-18>, a=<-5,-9,-10> +p=<4576,-4128,1562>, v=<-66,53,-3>, a=<-5,5,-3> +p=<391,4738,-2189>, v=<37,-89,70>, a=<-3,-4,0> +p=<-1004,863,12>, v=<82,-108,15>, a=<-3,5,-1> +p=<1352,1514,-4390>, v=<-10,-49,13>, a=<-2,0,8> +p=<360,-4748,-81>, v=<-26,73,50>, a=<1,5,-3> +p=<-7297,2320,-6157>, v=<-3,-75,22>, a=<15,0,11> +p=<918,-780,229>, v=<68,-55,-8>, a=<-6,5,0> +p=<422,-7135,5871>, v=<-12,86,-62>, a=<0,9,-8> +p=<2921,-2245,1495>, v=<-93,55,-15>, a=<0,1,-2> +p=<1417,-4757,1367>, v=<-79,84,22>, a=<2,4,-4> +p=<2137,-4133,-5545>, v=<-118,-117,40>, a=<3,15,8> +p=<2761,-3685,-2329>, v=<-121,67,-44>, a=<2,3,7> +p=<3145,3851,3831>, v=<-199,-53,-22>, a=<6,-4,-6> +p=<-807,-1909,-8809>, v=<40,-71,10>, a=<-1,8,16> +p=<-3001,-1007,-4300>, v=<-11,2,69>, a=<11,3,9> +p=<2291,3961,-2416>, v=<-19,-30,28>, a=<-6,-11,6> +p=<1571,-3143,-2428>, v=<-14,66,41>, a=<-4,5,5> +p=<683,3001,6056>, v=<73,-90,-200>, a=<-8,-3,-4> +p=<-205,-759,517>, v=<108,44,50>, a=<-8,-1,-6> +p=<-642,1863,3622>, v=<31,-58,23>, a=<0,-2,-15> +p=<-1562,1449,-4405>, v=<83,8,-12>, a=<-1,-6,17> +p=<853,-1242,3668>, v=<14,-67,-51>, a=<-4,10,-9> +p=<-757,46,-6061>, v=<0,-15,156>, a=<3,1,9> +p=<-3287,-1403,-564>, v=<38,0,-35>, a=<9,5,5> +p=<-849,1840,3001>, v=<124,-33,-106>, a=<-7,-4,-2> +p=<1566,2806,-1162>, v=<43,-39,15>, a=<-9,-7,3> +p=<5706,3174,-5141>, v=<-77,-67,44>, a=<-14,-6,15> +p=<-1444,-4807,1648>, v=<-55,150,-100>, a=<6,0,3> +p=<-2596,2137,-7664>, v=<-19,-67,92>, a=<6,0,9> +p=<-4324,1577,-5456>, v=<35,0,23>, a=<6,-3,9> +p=<-1428,2121,1568>, v=<-39,82,-48>, a=<5,-9,0> +p=<-4884,-7063,-1168>, v=<36,-27,-12>, a=<7,15,3> +p=<-2612,-2871,2352>, v=<-35,-26,43>, a=<7,7,-7> +p=<2492,7737,4832>, v=<-13,22,-51>, a=<-4,-16,-6> +p=<3228,-2455,880>, v=<-102,-39,-10>, a=<0,7,-1> +p=<620,-4183,0>, v=<29,15,1>, a=<-3,7,0> +p=<1549,1698,2535>, v=<-94,-85,-179>, a=<-2,-5,0> +p=<-1643,1068,-202>, v=<29,-25,-66>, a=<12,-7,11> +p=<-229,697,-1756>, v=<48,-51,30>, a=<-4,0,13> +p=<1724,39,1219>, v=<-129,-49,-85>, a=<1,6,0> +p=<361,2678,211>, v=<21,-76,46>, a=<-6,-15,-8> +p=<291,410,3284>, v=<-19,-19,-166>, a=<0,-1,-9> +p=<-1711,-2642,-1098>, v=<79,109,72>, a=<6,11,1> +p=<-12485,-3505,-8183>, v=<17,14,59>, a=<16,4,8> +p=<2449,-351,-4877>, v=<92,9,-28>, a=<-8,0,8> +p=<-2377,1435,1241>, v=<63,40,-72>, a=<0,-4,2> +p=<397,7496,462>, v=<146,-22,46>, a=<-8,-9,-3> +p=<4672,-180,1621>, v=<-25,-15,-121>, a=<-5,1,4> +p=<-667,2442,1165>, v=<57,-45,-31>, a=<-2,-1,0> +p=<-97,-7210,6523>, v=<-75,53,-55>, a=<4,7,-6> +p=<-5911,-5329,-5941>, v=<0,62,39>, a=<8,4,6> +p=<-5132,4133,1583>, v=<38,-31,-42>, a=<5,-4,0> +p=<-797,-449,1945>, v=<68,51,-76>, a=<-2,-3,-7> +p=<2203,496,-620>, v=<-28,-20,55>, a=<-15,-2,-2> +p=<-512,286,-725>, v=<17,-14,46>, a=<2,-1,0> +p=<-317,2701,2845>, v=<92,-135,-88>, a=<-9,-6,-13> +p=<2488,-839,10>, v=<-95,13,-19>, a=<-9,5,2> +p=<-32,-584,-1805>, v=<1,68,54>, a=<0,-4,8> +p=<-1487,841,25>, v=<106,-59,12>, a=<-1,0,-2> +p=<9711,3803,1142>, v=<-7,36,3>, a=<-15,-8,-2> +p=<3306,-1797,722>, v=<-4,34,-183>, a=<-5,1,9> +p=<2050,-1523,1668>, v=<-33,42,148>, a=<-3,1,-15> +p=<2914,-227,-2544>, v=<-9,8,66>, a=<-7,0,2> +p=<4507,-227,-1977>, v=<-152,22,-25>, a=<-1,-1,7> +p=<5452,448,777>, v=<-75,-87,-43>, a=<-9,5,1> +p=<-1217,-3197,-2922>, v=<18,76,-102>, a=<2,3,15> +p=<-1703,-2738,-6>, v=<-6,-39,0>, a=<5,10,0> +p=<-29,-6410,453>, v=<16,83,-73>, a=<-1,11,4> +p=<1591,313,-5028>, v=<40,16,102>, a=<-7,-2,6> +p=<1753,-4823,2921>, v=<-46,-88,-58>, a=<0,11,-1> +p=<3672,-6932,2617>, v=<79,26,-89>, a=<-9,8,1> +p=<-1534,8477,2883>, v=<-135,30,21>, a=<9,-13,-5> +p=<-3187,5532,7994>, v=<45,-29,23>, a=<2,-6,-12> +p=<5249,-776,-2988>, v=<-21,59,-39>, a=<-6,-2,6> +p=<-774,-339,-7244>, v=<1,106,112>, a=<1,-5,4> +p=<-2104,-17268,1420>, v=<-3,64,118>, a=<3,20,-8> +p=<-1306,4335,-24>, v=<15,22,0>, a=<1,-7,0> +p=<-972,2893,110>, v=<-133,420,13>, a=<7,-27,1> +p=<1906,-490,2091>, v=<271,-62,298>, a=<-18,9,-21> +p=<-1422,-2788,323>, v=<-200,-398,44>, a=<14,27,-3> +p=<1079,-21,-2677>, v=<156,-2,-384>, a=<-9,-1,22> +p=<-513,1027,-2732>, v=<-71,147,-392>, a=<5,-13,29> +p=<472,-76,-2799>, v=<67,-14,-399>, a=<-6,5,28> +p=<-478,1841,2426>, v=<-69,269,351>, a=<5,-20,-26> +p=<2254,1465,-1528>, v=<324,211,-218>, a=<-19,-13,17> +p=<-277,1286,2981>, v=<-39,181,423>, a=<-1,-8,-24> +p=<71,2026,2683>, v=<5,285,383>, a=<-3,-20,-25> +p=<-581,-2942,-73>, v=<-79,-423,-11>, a=<4,33,-4> +p=<65,2932,137>, v=<7,418,19>, a=<-1,-29,-1> +p=<-401,582,-3050>, v=<-59,88,-434>, a=<1,-4,30> +p=<2976,-590,-108>, v=<421,-80,-12>, a=<-26,2,4> +p=<-2303,-645,-1751>, v=<-329,-91,-251>, a=<21,6,14> +p=<1140,-2857,662>, v=<164,-410,91>, a=<-11,27,-10> +p=<-2532,-643,1350>, v=<-363,-84,191>, a=<29,4,-20> +p=<1816,1234,-2316>, v=<261,177,-329>, a=<-18,-12,23> +p=<499,-2878,-236>, v=<71,-410,-38>, a=<-2,25,6> +p=<2553,-1482,-988>, v=<361,-214,-139>, a=<-24,14,9> +p=<-2086,-2102,-211>, v=<-300,-301,-31>, a=<12,23,-2> +p=<-256,-1962,-2187>, v=<-38,-280,-313>, a=<1,19,20> +p=<-1353,-1829,1849>, v=<-197,-264,260>, a=<15,19,-18> +p=<2427,-1169,1408>, v=<345,-170,206>, a=<-30,5,-17> +p=<-681,372,-3521>, v=<-98,58,-512>, a=<12,-3,39> +p=<-525,-322,-2723>, v=<-71,-46,-387>, a=<9,-2,33> +p=<-1485,2370,-939>, v=<-212,340,-138>, a=<19,-18,11> +p=<2629,23,1333>, v=<375,2,191>, a=<-24,-1,-13> +p=<-962,2687,-565>, v=<-140,383,-78>, a=<8,-20,5> +p=<990,3391,-1021>, v=<144,480,-152>, a=<-9,-32,8> +p=<-1608,2476,39>, v=<-229,351,3>, a=<17,-24,0> +p=<2455,44,-1459>, v=<350,3,-209>, a=<-26,0,19> +p=<3240,154,-210>, v=<457,20,-33>, a=<-31,1,6> +p=<-2171,-88,-1778>, v=<-309,-8,-254>, a=<19,0,15> +p=<-2277,-926,-1445>, v=<-325,-131,-207>, a=<24,5,11> +p=<-589,-1148,2928>, v=<-80,-170,418>, a=<9,12,-29> +p=<-2241,-1063,1406>, v=<-316,-152,197>, a=<24,16,-19> +p=<2092,-955,950>, v=<298,-136,132>, a=<-24,8,-7> +p=<-466,-2201,-1279>, v=<-62,-310,-180>, a=<-1,23,12> +p=<-468,-2983,-1861>, v=<-66,-425,-260>, a=<8,28,23> +p=<-1070,-2706,-272>, v=<-149,-388,-38>, a=<8,27,0> +p=<-2009,-1830,1787>, v=<-291,-264,248>, a=<20,22,-17> +p=<2822,-85,659>, v=<403,-14,89>, a=<-33,0,-10> +p=<-2363,-1805,-611>, v=<-337,-257,-89>, a=<24,16,12> +p=<-2598,2035,-674>, v=<-373,287,-95>, a=<28,-22,8> +p=<1173,2573,243>, v=<164,367,40>, a=<-14,-23,1> +p=<-836,3312,206>, v=<-118,475,29>, a=<8,-34,-2> +p=<1688,-381,2533>, v=<236,-57,357>, a=<-15,3,-25> +p=<143,1759,-2463>, v=<22,249,-355>, a=<0,-14,27> +p=<-2683,2007,980>, v=<-389,283,140>, a=<25,-23,-12> +p=<-670,-1250,-2411>, v=<-97,-178,-347>, a=<6,15,24> +p=<-1136,2357,985>, v=<-164,334,139>, a=<16,-27,-11> +p=<2096,-1737,638>, v=<298,-251,86>, a=<-20,22,-6> +p=<-2631,-271,1623>, v=<-375,-37,230>, a=<29,1,-18> +p=<2424,1243,1437>, v=<348,177,200>, a=<-26,-10,-19> +p=<2060,1385,938>, v=<294,197,134>, a=<-25,-14,-15> +p=<1331,2651,-818>, v=<193,381,-116>, a=<-13,-30,9> +p=<776,1916,1714>, v=<112,274,249>, a=<-5,-18,-17> +p=<-811,427,-2299>, v=<-117,63,-328>, a=<6,0,27> +p=<1354,2492,-186>, v=<191,355,-27>, a=<-16,-24,2> +p=<474,3023,-673>, v=<69,434,-92>, a=<-4,-25,10> +p=<1520,-2352,670>, v=<215,-334,94>, a=<-16,19,-7> +p=<-1149,-2556,-1447>, v=<-166,-360,-206>, a=<11,23,13> +p=<-37,2330,1867>, v=<-5,328,265>, a=<-2,-22,-14> +p=<-2861,-590,507>, v=<-413,-82,70>, a=<27,1,-2> +p=<3202,-250,647>, v=<462,-35,92>, a=<-24,2,-6> +p=<-2286,-833,-1219>, v=<-326,-122,-173>, a=<22,4,15> +p=<-2215,-1793,861>, v=<-321,-252,125>, a=<18,22,-4> +p=<-156,1321,2884>, v=<-21,191,413>, a=<1,-11,-30> +p=<-804,2418,-838>, v=<-114,340,-125>, a=<8,-26,6> +p=<-1121,-1781,-1869>, v=<-157,-256,-265>, a=<12,19,17> +p=<-1529,565,-2482>, v=<-217,86,-354>, a=<15,-5,29> +p=<87,1773,2467>, v=<17,253,356>, a=<0,-12,-24> +p=<-1370,2134,2591>, v=<-195,304,367>, a=<14,-20,-25> +p=<-14,2076,1747>, v=<-4,294,249>, a=<4,-12,-17> +p=<1935,-1618,1382>, v=<281,-226,197>, a=<-18,19,-13> +p=<-2297,1551,77>, v=<-331,223,10>, a=<16,-13,-2> +p=<-1952,-1430,82>, v=<-276,-199,12>, a=<14,13,0> +p=<-1987,-1518,-1457>, v=<-280,-216,-208>, a=<14,15,17> +p=<-1359,-1392,2060>, v=<-196,-199,295>, a=<12,15,-26> +p=<691,-2517,1578>, v=<98,-359,224>, a=<-9,26,-15> +p=<2671,965,580>, v=<381,131,81>, a=<-31,-14,-7> +p=<-243,614,2906>, v=<-31,84,421>, a=<3,-6,-30> +p=<-1052,646,3333>, v=<-149,95,476>, a=<12,-3,-37> +p=<510,1846,2487>, v=<72,264,351>, a=<-9,-20,-24> +p=<-1990,-1380,1739>, v=<-282,-193,248>, a=<18,9,-15> +p=<133,-2661,-1829>, v=<18,-382,-264>, a=<1,28,18> +p=<815,2490,1020>, v=<122,351,144>, a=<-8,-20,-4> +p=<2465,-1704,-1056>, v=<348,-243,-150>, a=<-24,16,12> +p=<-711,-1825,2020>, v=<-107,-263,293>, a=<3,18,-20> +p=<2090,1861,-455>, v=<295,266,-65>, a=<-16,-18,8> +p=<-76,2995,-1382>, v=<-11,422,-196>, a=<2,-32,12> +p=<2104,-1799,1488>, v=<298,-260,207>, a=<-24,19,-13> +p=<63,2542,2053>, v=<10,365,295>, a=<0,-26,-15> +p=<1575,1481,-1420>, v=<224,211,-200>, a=<-11,-18,14> +p=<-2166,-345,-1387>, v=<-306,-49,-201>, a=<17,-1,10> +p=<-945,2623,29>, v=<-132,371,3>, a=<12,-23,-1> +p=<2590,878,-717>, v=<370,129,-102>, a=<-22,-15,9> +p=<2515,-1076,-679>, v=<357,-154,-101>, a=<-23,6,6> +p=<-1338,-2273,-1604>, v=<-186,-328,-231>, a=<14,22,18> +p=<-353,-2665,-1229>, v=<-46,-379,-172>, a=<3,24,12> +p=<-83,2448,-822>, v=<-13,353,-116>, a=<4,-23,8> +p=<-523,2472,1345>, v=<-73,355,192>, a=<8,-26,-15> +p=<-2443,1609,-1552>, v=<-349,231,-216>, a=<27,-17,22> +p=<1999,-1105,2090>, v=<285,-162,296>, a=<-17,10,-20> +p=<1954,2345,1492>, v=<277,339,213>, a=<-19,-23,-14> +p=<2221,-1016,1120>, v=<316,-141,158>, a=<-24,12,-10> +p=<-3168,-1304,44>, v=<-455,-186,10>, a=<27,16,1> +p=<1622,-980,-2335>, v=<231,-145,-337>, a=<-15,13,21> +p=<2185,209,2262>, v=<311,34,326>, a=<-27,2,-22> +p=<-2551,-307,1547>, v=<-364,-42,223>, a=<22,2,-16> +p=<-908,-1546,2694>, v=<-129,-219,384>, a=<11,12,-29> +p=<3364,248,363>, v=<481,35,47>, a=<-30,-4,3> +p=<-417,2230,1781>, v=<-60,320,254>, a=<5,-24,-15> +p=<-1902,-30,-1618>, v=<-265,-1,-228>, a=<20,0,13> +p=<-693,3041,-63>, v=<-100,434,-9>, a=<1,-29,-2> +p=<-1400,565,-2175>, v=<-200,80,-310>, a=<15,-6,17> +p=<-1416,-2376,-1590>, v=<-205,-341,-226>, a=<17,23,12> +p=<1484,-2148,1957>, v=<212,-311,279>, a=<-18,22,-16> +p=<573,2306,-702>, v=<84,331,-100>, a=<-8,-20,4> +p=<2271,1826,646>, v=<317,255,92>, a=<-21,-19,-6> +p=<-1405,1090,2686>, v=<-200,154,380>, a=<16,-7,-25> +p=<1115,-2148,-2264>, v=<161,-308,-323>, a=<-15,18,22> +p=<1491,2294,-1052>, v=<215,330,-149>, a=<-14,-22,8> +p=<2596,1010,885>, v=<374,145,124>, a=<-24,-8,-10> +p=<-1795,1860,-1144>, v=<-257,267,-164>, a=<24,-20,9> +p=<1277,687,-2336>, v=<184,94,-333>, a=<-7,-6,28> +p=<-347,1880,2125>, v=<-49,269,301>, a=<0,-18,-22> +p=<-18,-2622,-1537>, v=<-2,-370,-219>, a=<-2,29,19> +p=<-1855,-2054,1009>, v=<-264,-297,140>, a=<21,17,-14> +p=<-326,-2183,2149>, v=<-40,-311,306>, a=<0,18,-17> +p=<-980,-864,-2259>, v=<-141,-118,-318>, a=<14,10,17> +p=<-1809,905,-2722>, v=<-258,133,-391>, a=<17,-12,26> +p=<592,1196,-2413>, v=<88,171,-351>, a=<-1,-7,26> +p=<2073,1542,2188>, v=<300,220,318>, a=<-19,-15,-18> +p=<-557,-2458,1007>, v=<-79,-350,142>, a=<11,22,-12> +p=<-2392,2150,1346>, v=<-342,309,192>, a=<24,-23,-12> +p=<994,-2356,833>, v=<142,-338,119>, a=<-9,31,-3> +p=<299,2668,-290>, v=<46,382,-41>, a=<-5,-25,2> +p=<1626,-692,-2134>, v=<238,-101,-303>, a=<-14,6,19> +p=<1605,-1643,-682>, v=<228,-238,-98>, a=<-16,19,6> +p=<2925,-496,-312>, v=<419,-74,-44>, a=<-28,3,5> +p=<1803,-1874,1905>, v=<259,-265,271>, a=<-11,18,-19> +p=<-2236,415,-1699>, v=<-319,57,-246>, a=<22,-6,16> +p=<1843,-488,1798>, v=<259,-69,257>, a=<-26,5,-20> +p=<-2754,1655,331>, v=<-392,240,47>, a=<26,-16,-8> +p=<-834,251,-2722>, v=<-116,33,-386>, a=<3,-5,21> +p=<1021,-1266,3203>, v=<146,-185,456>, a=<-8,12,-36> +p=<-3008,-317,1005>, v=<-426,-45,145>, a=<27,1,-11> +p=<-2940,246,-187>, v=<-420,35,-22>, a=<34,-1,-1> +p=<1801,-1599,-1446>, v=<256,-221,-208>, a=<-15,12,14> +p=<-682,-3221,-349>, v=<-93,-456,-50>, a=<10,31,6> +p=<1654,207,-2009>, v=<238,33,-287>, a=<-20,-10,26> +p=<361,131,3200>, v=<51,15,455>, a=<-4,-1,-32> +p=<-633,-781,-2968>, v=<-91,-114,-422>, a=<5,6,29> +p=<-2215,-1455,1996>, v=<-315,-209,290>, a=<21,17,-15> +p=<-1296,-1166,2232>, v=<-185,-166,322>, a=<10,8,-22> +p=<-506,1002,-2804>, v=<-67,140,-401>, a=<7,-10,31> +p=<886,713,3210>, v=<125,97,458>, a=<-11,-11,-31> +p=<473,1814,2234>, v=<67,258,320>, a=<-6,-21,-19> +p=<-1602,1619,2001>, v=<-225,230,285>, a=<21,-16,-20> +p=<-742,-2555,288>, v=<-107,-365,42>, a=<7,26,-2> +p=<-3147,-1191,643>, v=<-445,-169,93>, a=<36,11,-8> +p=<1263,214,2752>, v=<180,30,395>, a=<-9,-2,-29> +p=<-2143,2199,1241>, v=<-310,308,175>, a=<23,-24,-8> +p=<-2553,928,-1224>, v=<-364,125,-172>, a=<25,-7,9> +p=<-2136,-2245,-1378>, v=<-307,-323,-195>, a=<24,23,13> +p=<889,-1593,2244>, v=<129,-222,323>, a=<-8,17,-23> +p=<-1520,-1646,1398>, v=<-223,-235,199>, a=<21,13,-11> +p=<2628,1000,-86>, v=<374,139,-16>, a=<-27,-16,1> +p=<-2376,-283,-2193>, v=<-336,-38,-314>, a=<29,7,24> +p=<1742,2026,408>, v=<247,292,55>, a=<-17,-23,1> +p=<-2191,-1544,-527>, v=<-312,-215,-75>, a=<20,15,7> +p=<-1704,-1827,1891>, v=<-241,-263,273>, a=<19,22,-18> +p=<-1270,-49,3352>, v=<-181,-13,478>, a=<12,2,-32> +p=<-2569,901,331>, v=<-369,129,47>, a=<26,-4,-4> +p=<1141,2256,1587>, v=<163,320,220>, a=<-13,-22,-18> +p=<1137,-2605,-1860>, v=<159,-373,-265>, a=<-10,24,14> +p=<-34,-1139,-2680>, v=<-3,-162,-383>, a=<0,10,26> +p=<2205,-1859,-418>, v=<318,-263,-57>, a=<-23,19,9> +p=<2263,-885,731>, v=<323,-127,101>, a=<-19,10,-7> +p=<747,-1743,-2548>, v=<107,-251,-360>, a=<-8,19,28> +p=<-2858,-1478,-787>, v=<-404,-214,-111>, a=<31,16,10> +p=<-2627,342,956>, v=<-375,45,136>, a=<26,-6,-12> +p=<-2234,2105,357>, v=<-319,303,51>, a=<19,-20,-4> +p=<1027,-2032,1325>, v=<153,-292,186>, a=<-7,20,-9> +p=<1283,-1286,2609>, v=<185,-183,373>, a=<-10,7,-23> +p=<1360,1947,2379>, v=<197,277,339>, a=<-17,-15,-23> +p=<-860,-679,2987>, v=<-122,-97,427>, a=<3,9,-24> +p=<-1647,2787,-244>, v=<-232,401,-37>, a=<17,-30,1> +p=<837,3170,1198>, v=<119,454,170>, a=<-4,-24,-11> +p=<1266,-1460,2161>, v=<179,-200,308>, a=<-14,10,-21> +p=<1648,1562,-2437>, v=<235,226,-350>, a=<-14,-12,24> +p=<-570,2209,-1513>, v=<-85,316,-215>, a=<1,-21,20> +p=<330,-2321,-199>, v=<47,-329,-28>, a=<-3,24,4> +p=<-2067,1180,1813>, v=<-299,169,263>, a=<20,-8,-15> +p=<-78,-2126,2288>, v=<-5,-307,321>, a=<-2,21,-25> +p=<-1626,281,1926>, v=<-232,40,277>, a=<23,3,-20> +p=<-235,3009,-77>, v=<-32,428,-16>, a=<1,-26,1> +p=<-345,3015,279>, v=<-52,430,42>, a=<0,-21,-1> +p=<2896,-2028,-978>, v=<416,-288,-138>, a=<-32,20,9> +p=<-3125,-612,759>, v=<-449,-87,108>, a=<31,5,-12> +p=<2888,2,384>, v=<414,0,57>, a=<-32,1,-6> +p=<-731,1698,2115>, v=<-106,244,305>, a=<7,-13,-21> +p=<2036,-736,-1453>, v=<294,-107,-208>, a=<-20,6,11> +p=<1652,-2222,234>, v=<236,-319,33>, a=<-18,15,-3> +p=<-515,-3243,235>, v=<-72,-462,30>, a=<3,33,1> +p=<7,-2446,2313>, v=<-3,-346,330>, a=<4,28,-21> +p=<1566,2106,1297>, v=<223,298,187>, a=<-13,-21,-15> +p=<2773,-241,-1939>, v=<393,-34,-277>, a=<-23,3,19> +p=<-1981,-951,1585>, v=<-286,-137,221>, a=<20,8,-18> +p=<-14,2752,627>, v=<-2,392,88>, a=<2,-21,-6> +p=<-2752,-498,2256>, v=<-393,-70,317>, a=<27,1,-23> +p=<-2795,-853,-603>, v=<-406,-121,-86>, a=<25,5,2> +p=<631,-2038,-1425>, v=<90,-293,-206>, a=<-4,20,12> +p=<125,2224,1993>, v=<18,316,291>, a=<4,-21,-25> +p=<-2231,489,-1563>, v=<-322,70,-224>, a=<23,-3,15> +p=<-2139,746,-1996>, v=<-302,109,-279>, a=<21,-5,18> +p=<992,-1201,-2833>, v=<145,-172,-408>, a=<-8,15,24> +p=<-1702,-2598,-45>, v=<-247,-371,-5>, a=<17,28,-2> +p=<-2590,-960,482>, v=<-369,-137,68>, a=<28,7,2> +p=<3216,-233,416>, v=<461,-31,61>, a=<-34,6,-4> +p=<-1121,692,2728>, v=<-162,101,391>, a=<13,-8,-27> +p=<-2671,-146,2193>, v=<-383,-24,313>, a=<22,-3,-22> +p=<763,-241,-3416>, v=<107,-32,-482>, a=<-9,-2,33> +p=<-671,-3065,126>, v=<-94,-437,16>, a=<13,31,-4> +p=<564,-2454,1713>, v=<75,-350,244>, a=<-5,24,-17> +p=<-1735,-2340,-460>, v=<-247,-334,-62>, a=<14,23,4> +p=<6,-2515,1136>, v=<0,-359,163>, a=<0,26,-10> +p=<2952,-18,724>, v=<424,1,103>, a=<-33,2,-9> +p=<-1425,729,2352>, v=<-206,107,337>, a=<17,-7,-23> +p=<-2551,-193,-2026>, v=<-365,-31,-289>, a=<25,3,17> +p=<1329,-2258,-1434>, v=<189,-322,-206>, a=<-18,18,14> +p=<1211,2337,-829>, v=<173,332,-120>, a=<-15,-20,8> +p=<-1528,-2029,2196>, v=<-218,-290,315>, a=<18,18,-19> +p=<2764,2067,855>, v=<391,290,119>, a=<-23,-16,-7> +p=<50,-2547,1000>, v=<8,-363,140>, a=<-1,27,-10> +p=<-1843,-740,-2538>, v=<-258,-105,-364>, a=<20,8,24> +p=<2901,-143,-287>, v=<416,-19,-40>, a=<-32,-3,3> +p=<-745,3115,-349>, v=<-111,448,-51>, a=<7,-34,-3> +p=<1591,264,-2030>, v=<222,37,-288>, a=<-16,-6,19> +p=<166,-48,3636>, v=<23,-10,516>, a=<-1,2,-30> +p=<319,1678,-2277>, v=<46,237,-320>, a=<0,-18,23> +p=<-2171,614,-1695>, v=<-310,87,-242>, a=<21,-4,11> +p=<-1126,665,-2761>, v=<-157,93,-392>, a=<14,-6,29> +p=<1741,2247,1663>, v=<246,324,234>, a=<-17,-16,-20> +p=<1650,-1865,-1148>, v=<236,-268,-164>, a=<-17,14,11> +p=<319,-1899,-1553>, v=<45,-274,-219>, a=<0,18,12> +p=<-319,321,-3639>, v=<-42,45,-518>, a=<5,0,31> +p=<-863,-2811,20>, v=<-123,-397,4>, a=<9,31,-2> +p=<2645,-31,542>, v=<373,-5,73>, a=<-23,1,-4> +p=<-228,-1990,2353>, v=<-35,-287,336>, a=<5,22,-21> +p=<3382,828,-998>, v=<482,123,-143>, a=<-35,-9,7> +p=<-681,-2015,-1438>, v=<-89,-285,-208>, a=<6,19,12> +p=<-2127,-1613,-1494>, v=<-308,-234,-212>, a=<19,16,11> +p=<65,2762,-1780>, v=<9,395,-254>, a=<2,-26,17> +p=<-798,-2143,754>, v=<-112,-311,104>, a=<12,25,-10> +p=<1936,1826,927>, v=<277,263,131>, a=<-15,-20,-10> +p=<-720,-1926,-1387>, v=<-103,-275,-198>, a=<8,16,11> +p=<-2584,-1286,524>, v=<-371,-180,74>, a=<28,15,-9> +p=<286,-3580,426>, v=<39,-510,60>, a=<0,34,-7> +p=<-1940,-1873,-414>, v=<-277,-269,-56>, a=<19,14,6> +p=<2631,-809,-1547>, v=<376,-116,-229>, a=<-30,10,16> +p=<673,2160,-1825>, v=<102,308,-257>, a=<-4,-23,17> +p=<2169,-2413,-1194>, v=<307,-344,-170>, a=<-20,25,16> +p=<603,-3052,-393>, v=<89,-434,-53>, a=<-11,33,1> +p=<-1690,1909,1134>, v=<-241,272,169>, a=<15,-18,-15> +p=<-623,1217,1954>, v=<-93,172,275>, a=<10,-16,-15> +p=<-1697,-316,2170>, v=<-242,-45,310>, a=<20,-3,-19> +p=<-1516,2344,1308>, v=<-216,333,185>, a=<18,-20,-17> +p=<1853,-1625,701>, v=<261,-229,105>, a=<-20,19,-4> +p=<1542,-522,-2138>, v=<220,-70,-305>, a=<-20,8,20> +p=<-1835,-1148,-887>, v=<-257,-165,-126>, a=<22,13,5> +p=<3238,-2064,302>, v=<460,-292,47>, a=<-32,20,0> +p=<1003,-2638,-162>, v=<146,-372,-23>, a=<-10,26,5> +p=<-2709,1375,804>, v=<-385,196,120>, a=<24,-9,-9> +p=<-184,555,2572>, v=<-30,79,367>, a=<1,0,-29> +p=<-754,2751,-299>, v=<-110,393,-47>, a=<9,-28,2> +p=<2362,713,-1616>, v=<332,104,-227>, a=<-23,-7,15> +p=<254,732,-2598>, v=<38,104,-368>, a=<-8,-7,19> +p=<-2364,-799,1470>, v=<-344,-112,211>, a=<23,7,-16> +p=<2519,1937,-284>, v=<360,274,-40>, a=<-32,-22,3> +p=<2368,828,-1323>, v=<333,118,-182>, a=<-27,-5,12> +p=<-1443,-1799,2182>, v=<-204,-257,310>, a=<18,22,-23> +p=<-2230,320,1535>, v=<-319,47,219>, a=<21,-1,-15> +p=<-2176,1006,1711>, v=<-314,138,241>, a=<15,-10,-17> +p=<-2359,-1764,735>, v=<-341,-252,107>, a=<20,19,-6> +p=<-2255,2133,478>, v=<-318,303,67>, a=<21,-23,-4> +p=<1838,2021,-2030>, v=<262,293,-291>, a=<-22,-22,24> +p=<676,2730,-1581>, v=<98,391,-222>, a=<-7,-25,18> +p=<1654,1705,1873>, v=<233,240,270>, a=<-20,-22,-18> +p=<2899,-1228,-768>, v=<414,-171,-110>, a=<-29,10,12> +p=<-1106,-2603,-1038>, v=<-160,-376,-152>, a=<13,33,10> +p=<-2486,-1591,1417>, v=<-352,-223,202>, a=<23,14,-15> +p=<-224,-2723,405>, v=<-31,-392,57>, a=<-4,30,-2> +p=<-990,-385,2834>, v=<-141,-51,401>, a=<11,1,-30> +p=<2393,-1847,-12>, v=<343,-271,-1>, a=<-24,18,0> +p=<897,-1971,2676>, v=<126,-282,379>, a=<-11,19,-26> +p=<-1382,828,2465>, v=<-197,118,354>, a=<12,-11,-24> +p=<2715,-636,-95>, v=<383,-92,-10>, a=<-23,5,2> +p=<-1672,1496,1384>, v=<-238,215,196>, a=<13,-12,-8> +p=<-695,2864,430>, v=<-96,408,66>, a=<13,-28,-9> +p=<-890,2879,152>, v=<-128,419,18>, a=<11,-25,-1> +p=<1150,854,2388>, v=<160,127,344>, a=<-10,-10,-23> +p=<-1328,304,2387>, v=<-189,44,346>, a=<19,0,-20> +p=<1911,1030,2606>, v=<274,147,372>, a=<-21,-5,-22> +p=<-153,1935,1425>, v=<-17,277,204>, a=<-6,-18,-15> +p=<-563,-39,-3152>, v=<-85,-5,-449>, a=<4,0,31> +p=<1376,-434,2342>, v=<194,-58,337>, a=<-11,7,-24> +p=<1328,-3274,1577>, v=<188,-464,224>, a=<-13,32,-11> +p=<-1483,2780,842>, v=<-211,394,122>, a=<14,-27,-4> +p=<-2579,-50,157>, v=<-368,-5,18>, a=<22,0,-2> +p=<-2233,-1101,1703>, v=<-326,-156,244>, a=<23,11,-19> +p=<1576,-2527,660>, v=<225,-364,94>, a=<-14,29,-6> +p=<-920,-2797,-447>, v=<-128,-399,-63>, a=<7,22,4> +p=<-2430,2192,873>, v=<-347,313,128>, a=<25,-21,-11> +p=<616,2820,-591>, v=<84,402,-86>, a=<-5,-28,5> +p=<-544,-1235,2995>, v=<-78,-179,428>, a=<6,12,-29> +p=<-2103,152,1778>, v=<-297,15,262>, a=<21,2,-18> +p=<1499,276,3011>, v=<213,37,435>, a=<-14,-7,-31> +p=<-1913,2443,611>, v=<-270,345,87>, a=<15,-24,-4> +p=<-398,2956,72>, v=<-56,417,10>, a=<1,-31,5> +p=<-1863,1996,-1348>, v=<-266,285,-195>, a=<18,-15,14> +p=<-2302,-248,1303>, v=<-325,-38,181>, a=<17,1,-17> +p=<-591,-341,2548>, v=<-89,-52,364>, a=<4,5,-27> +p=<906,-1426,-2591>, v=<129,-206,-368>, a=<-7,14,19> +p=<-1733,-1479,1564>, v=<-251,-213,222>, a=<18,9,-13> +p=<2526,1103,78>, v=<357,157,11>, a=<-24,-9,-2> +p=<745,1626,2823>, v=<111,228,409>, a=<-6,-17,-23> +p=<-818,43,-2240>, v=<-118,11,-320>, a=<13,1,25> +p=<1837,993,1492>, v=<260,148,213>, a=<-17,-10,-16> +p=<-1099,1353,-2333>, v=<-162,193,-333>, a=<8,-9,22> +p=<467,2292,2372>, v=<66,332,340>, a=<-10,-18,-20> +p=<2035,1594,-773>, v=<290,227,-112>, a=<-18,-8,9> +p=<1663,-1377,1996>, v=<237,-196,283>, a=<-20,14,-16> +p=<-1151,1892,1053>, v=<-163,270,143>, a=<8,-21,-9> +p=<-1985,-1355,-1070>, v=<-283,-192,-151>, a=<22,10,9> +p=<880,-1024,-2847>, v=<121,-146,-401>, a=<-6,10,37> +p=<-2506,-941,-1276>, v=<-359,-141,-182>, a=<25,14,14> +p=<448,-3321,-1237>, v=<65,-469,-174>, a=<-4,31,10> +p=<1082,-384,2456>, v=<154,-55,343>, a=<-4,1,-21> +p=<583,-1175,2602>, v=<80,-167,370>, a=<-5,8,-26> +p=<-2143,1051,-2228>, v=<-306,150,-321>, a=<16,-11,26> +p=<-1351,1113,2530>, v=<-195,156,360>, a=<16,-11,-23> +p=<1289,2415,1068>, v=<186,345,157>, a=<-13,-31,-9> +p=<1829,-441,-2369>, v=<261,-59,-331>, a=<-20,4,25> +p=<-1181,2801,-1204>, v=<-168,406,-169>, a=<11,-25,15> +p=<1789,111,2716>, v=<253,16,391>, a=<-12,-1,-28> +p=<1188,-2396,-1168>, v=<173,-343,-166>, a=<-18,21,11> +p=<-624,-2348,1872>, v=<-87,-331,263>, a=<6,23,-17> +p=<974,2046,1600>, v=<141,293,228>, a=<-10,-20,-20> +p=<1087,-3,2753>, v=<157,4,393>, a=<-10,1,-31> +p=<-1696,2565,1439>, v=<-242,365,200>, a=<15,-21,-14> +p=<-2139,1264,1625>, v=<-308,186,239>, a=<21,-16,-17> +p=<-808,-2806,706>, v=<-116,-402,100>, a=<10,31,-7> +p=<-3344,-671,-1309>, v=<-477,-89,-186>, a=<31,4,12> +p=<-3120,-1016,-1164>, v=<-445,-145,-169>, a=<33,9,11> +p=<-392,1935,-1765>, v=<-54,277,-256>, a=<7,-20,20> +p=<-2772,50,-724>, v=<-398,7,-103>, a=<22,-2,1> +p=<-1135,909,-2293>, v=<-162,123,-325>, a=<11,-2,17> +p=<-2854,-66,-601>, v=<-402,-8,-82>, a=<29,-3,6> +p=<1651,760,1457>, v=<233,111,209>, a=<-16,-9,-14> +p=<-1771,-1151,-2641>, v=<-254,-160,-378>, a=<17,14,27> +p=<-1065,-2133,-2022>, v=<-152,-309,-293>, a=<12,24,14> +p=<1476,2335,-246>, v=<211,333,-32>, a=<-7,-22,0> +p=<-1903,461,2772>, v=<-268,58,396>, a=<21,-2,-25> +p=<765,-2802,769>, v=<112,-398,106>, a=<-3,33,-5> +p=<-3176,954,-234>, v=<-450,133,-36>, a=<29,-9,3> +p=<2177,-558,-2053>, v=<316,-78,-293>, a=<-21,5,19> +p=<394,1915,-2164>, v=<59,277,-313>, a=<-5,-20,21> +p=<1111,2949,1071>, v=<155,421,153>, a=<-10,-29,-12> +p=<-1787,102,2329>, v=<-254,13,332>, a=<14,-3,-20> +p=<-1253,-2502,-882>, v=<-176,-356,-124>, a=<15,24,7> +p=<1524,2539,-1037>, v=<216,362,-148>, a=<-15,-21,5> +p=<1881,745,2344>, v=<266,106,334>, a=<-14,-5,-24> +p=<-824,2492,1274>, v=<-117,355,187>, a=<2,-27,-11> +p=<-2672,-391,-718>, v=<-377,-60,-103>, a=<26,2,7> +p=<1706,-2502,613>, v=<248,-357,87>, a=<-19,23,-9> +p=<2838,442,349>, v=<400,63,52>, a=<-33,-4,-3> +p=<271,1719,-2620>, v=<42,245,-371>, a=<-5,-23,22> +p=<-1158,-1793,1596>, v=<-165,-258,225>, a=<6,10,-14> +p=<2491,-195,-2133>, v=<353,-23,-304>, a=<-22,-4,21> +p=<-119,2896,-1592>, v=<-14,413,-227>, a=<-2,-25,14> +p=<886,-685,2791>, v=<130,-97,398>, a=<-8,6,-26> +p=<1066,-2652,1270>, v=<152,-374,179>, a=<-10,28,-19> +p=<2080,1437,-1544>, v=<290,206,-216>, a=<-23,-15,15> +p=<1863,410,2408>, v=<270,56,345>, a=<-18,-4,-18> +p=<-524,3071,96>, v=<-74,436,11>, a=<7,-33,-4> +p=<580,-948,-2576>, v=<88,-133,-367>, a=<-12,11,22> +p=<-1103,1711,1858>, v=<-154,246,264>, a=<11,-15,-16> +p=<607,-2998,-745>, v=<79,-428,-101>, a=<-11,33,7> +p=<-1900,-1037,-1936>, v=<-269,-150,-275>, a=<16,12,15> +p=<-1155,-491,-2983>, v=<-164,-71,-431>, a=<11,-2,30> +p=<-2544,887,-742>, v=<-363,124,-109>, a=<23,-6,9> +p=<-731,2162,-1216>, v=<-102,311,-170>, a=<7,-19,16> +p=<-2202,-1939,1089>, v=<-320,-277,157>, a=<25,20,-10> +p=<-28,1561,2087>, v=<2,223,300>, a=<0,-16,-20> +p=<-1911,-1149,-1625>, v=<-271,-165,-230>, a=<15,10,12> +p=<-2869,-1090,310>, v=<-414,-155,49>, a=<26,15,-1> +p=<-695,-2254,-1859>, v=<-100,-321,-266>, a=<11,26,13> +p=<-2840,-674,1527>, v=<-405,-95,220>, a=<28,0,-17> +p=<-647,2949,1149>, v=<-91,421,164>, a=<8,-32,-11> +p=<2811,-1286,624>, v=<400,-179,89>, a=<-29,12,-3> +p=<1281,-380,-2752>, v=<182,-55,-391>, a=<-16,8,24> +p=<-2162,-1503,-1690>, v=<-306,-212,-240>, a=<21,15,14> +p=<2629,761,206>, v=<373,108,34>, a=<-27,-7,-7> +p=<-2021,620,2109>, v=<-288,90,301>, a=<20,-12,-22> +p=<-368,-2701,-164>, v=<-52,-380,-20>, a=<6,21,2> +p=<421,-3240,-681>, v=<60,-463,-96>, a=<-5,30,6> +p=<1919,-2148,-570>, v=<273,-304,-84>, a=<-24,24,5> +p=<1869,91,2715>, v=<264,13,389>, a=<-17,-5,-28> +p=<653,2752,1283>, v=<91,393,186>, a=<-3,-26,-15> +p=<-1085,-2377,-504>, v=<-155,-343,-71>, a=<10,23,4> +p=<2790,-724,-1756>, v=<400,-103,-250>, a=<-27,7,20> +p=<2362,670,1049>, v=<341,95,149>, a=<-22,-6,-10> +p=<-3223,261,-688>, v=<-459,42,-99>, a=<29,3,6> +p=<-968,2692,726>, v=<-135,386,100>, a=<9,-27,-6> +p=<763,-873,3032>, v=<108,-128,433>, a=<-7,11,-30> +p=<-397,-2950,-1235>, v=<-54,-417,-179>, a=<-1,30,13> +p=<2644,506,2319>, v=<370,68,328>, a=<-25,-5,-21> +p=<226,1558,2032>, v=<28,223,290>, a=<-2,-18,-18> +p=<-96,-2863,420>, v=<-8,-411,59>, a=<2,29,-1> +p=<2753,-521,644>, v=<389,-74,94>, a=<-25,4,-6> +p=<-2535,604,1696>, v=<-363,84,240>, a=<23,-5,-16> +p=<-1475,-1868,-1676>, v=<-211,-271,-235>, a=<13,20,20> +p=<2257,-411,1855>, v=<326,-61,264>, a=<-19,-2,-19> +p=<2632,1836,822>, v=<376,266,120>, a=<-30,-16,-8> +p=<-1695,1905,-1631>, v=<-243,272,-238>, a=<14,-27,18> +p=<-1726,1459,-2018>, v=<-246,211,-289>, a=<22,-17,23> +p=<2307,2175,489>, v=<328,312,67>, a=<-23,-20,-6> +p=<-1861,2174,-527>, v=<-269,313,-75>, a=<18,-24,5> +p=<-208,1185,2569>, v=<-28,169,371>, a=<-1,-10,-25> +p=<-1923,-300,2216>, v=<-271,-48,315>, a=<19,8,-22> +p=<-428,3024,-1181>, v=<-61,432,-171>, a=<3,-34,14> +p=<549,-2670,-461>, v=<73,-387,-65>, a=<-5,26,3> +p=<-1556,326,-2238>, v=<-221,43,-316>, a=<10,-3,27> +p=<-598,-3422,-454>, v=<-86,-488,-64>, a=<1,35,4> +p=<2143,-443,1333>, v=<302,-66,193>, a=<-20,8,-11> +p=<286,231,2772>, v=<40,35,396>, a=<-7,-1,-30> +p=<362,-2668,9>, v=<51,-379,1>, a=<-1,27,0> +p=<1015,-2626,-85>, v=<142,-376,-11>, a=<-13,33,-2> +p=<-709,904,2451>, v=<-103,130,350>, a=<5,-8,-27> +p=<2081,408,-1170>, v=<298,58,-166>, a=<-15,-7,11> +p=<-482,-2973,-1081>, v=<-69,-420,-151>, a=<2,31,9> +p=<-818,-74,-2792>, v=<-118,-10,-402>, a=<14,-3,32> +p=<2999,-87,-960>, v=<427,-14,-136>, a=<-31,3,6> +p=<2885,-1265,-374>, v=<409,-181,-53>, a=<-29,12,3> +p=<-1572,2938,16>, v=<-221,415,0>, a=<12,-30,0> +p=<-2424,-669,-1204>, v=<-342,-92,-175>, a=<21,8,17> +p=<-1215,1266,-2099>, v=<-173,176,-300>, a=<14,-7,21> +p=<-202,-3331,202>, v=<-33,-475,25>, a=<-1,36,1> +p=<935,2601,-482>, v=<133,370,-68>, a=<-12,-26,4> +p=<-1796,-2630,-1179>, v=<-260,-374,-168>, a=<20,24,10> +p=<-1532,-596,-1900>, v=<-220,-82,-274>, a=<18,5,23> +p=<-1577,-720,-2161>, v=<-228,-100,-303>, a=<17,8,25> +p=<-1215,1584,1974>, v=<-178,226,278>, a=<17,-15,-22> +p=<-3480,-170,1515>, v=<-499,-19,213>, a=<38,-1,-14> +p=<-2436,-111,-929>, v=<-353,-14,-128>, a=<25,0,14> +p=<2047,1023,-2117>, v=<292,149,-304>, a=<-21,-10,21> +p=<1510,-3054,336>, v=<224,-436,55>, a=<-12,35,-2> +p=<-2860,74,1242>, v=<-408,10,177>, a=<29,-2,-11> +p=<423,2218,-2064>, v=<56,316,-290>, a=<-1,-23,19> +p=<-1523,391,2820>, v=<-216,54,401>, a=<16,-3,-25> +p=<2150,822,-2210>, v=<305,114,-314>, a=<-21,-10,22> +p=<980,-2578,716>, v=<140,-368,106>, a=<-13,25,-13> +p=<-2221,-1430,671>, v=<-319,-202,91>, a=<29,20,-6> +p=<71,585,-2438>, v=<13,84,-348>, a=<0,1,24> +p=<-2243,-2418,-28>, v=<-320,-339,-10>, a=<22,23,0> +p=<-1990,1907,1046>, v=<-283,274,147>, a=<14,-22,-10> +p=<646,-563,-2987>, v=<96,-80,-426>, a=<-6,11,28> +p=<1124,-2386,-2399>, v=<166,-340,-342>, a=<-12,28,23> +p=<1269,-527,-2292>, v=<184,-75,-331>, a=<-12,2,24> +p=<-1031,2489,-962>, v=<-147,354,-138>, a=<13,-21,14> +p=<723,-2658,-127>, v=<105,-380,-14>, a=<-6,27,2> +p=<2,1922,2219>, v=<0,278,321>, a=<3,-18,-23> +p=<-2842,1751,-150>, v=<-408,256,-21>, a=<26,-17,-4> +p=<45,-2950,-602>, v=<9,-419,-87>, a=<3,29,6> +p=<-1231,-1203,-2120>, v=<-176,-172,-302>, a=<8,13,18> +p=<1637,-356,-1921>, v=<234,-56,-273>, a=<-14,1,18> +p=<-1712,-1611,-1495>, v=<-246,-229,-213>, a=<16,22,14> +p=<3521,152,-943>, v=<503,23,-134>, a=<-35,6,7> +p=<-2104,-2243,-337>, v=<-302,-320,-51>, a=<19,23,3> +p=<2358,-595,-1456>, v=<336,-91,-213>, a=<-22,8,14> +p=<-525,-1627,2776>, v=<-69,-232,399>, a=<0,14,-32> +p=<1648,963,-1620>, v=<238,134,-231>, a=<-12,-6,15> +p=<-2751,363,-551>, v=<-391,54,-79>, a=<24,-3,9> +p=<300,1792,2155>, v=<47,251,307>, a=<-6,-17,-16> +p=<1106,-214,-2291>, v=<156,-35,-325>, a=<-3,0,23> +p=<-1964,-795,-2331>, v=<-286,-111,-333>, a=<19,15,18> +p=<137,-3166,-572>, v=<21,-452,-82>, a=<0,30,3> +p=<-2691,705,-999>, v=<-388,98,-139>, a=<26,-9,10> +p=<1203,343,-3272>, v=<174,54,-469>, a=<-12,2,32> +p=<3115,-432,-66>, v=<447,-61,-3>, a=<-30,4,0> +p=<2562,-1744,862>, v=<367,-252,123>, a=<-23,17,-5> +p=<1380,-1281,1622>, v=<196,-177,230>, a=<-17,9,-14> +p=<-1200,-844,-2301>, v=<-173,-120,-328>, a=<15,15,20> +p=<-792,-1599,2552>, v=<-111,-231,367>, a=<7,17,-25> +p=<307,2585,-1745>, v=<46,361,-252>, a=<-2,-32,17> +p=<-199,-1278,-2273>, v=<-26,-186,-327>, a=<1,17,22> +p=<1870,-2159,-899>, v=<264,-314,-123>, a=<-18,22,6> +p=<434,1298,2381>, v=<63,185,337>, a=<-4,-11,-23> +p=<-2150,-2011,1077>, v=<-311,-289,157>, a=<15,22,-10> +p=<2355,-966,31>, v=<334,-136,2>, a=<-21,13,1> +p=<880,2467,1228>, v=<131,350,176>, a=<-10,-18,-9> +p=<2696,301,951>, v=<383,47,138>, a=<-29,-3,-10> +p=<50,1466,2481>, v=<4,210,354>, a=<0,-13,-21> +p=<-46,1414,2588>, v=<-3,203,369>, a=<2,-15,-22> +p=<-1343,790,2128>, v=<-191,114,306>, a=<17,-8,-19> +p=<-1893,-320,1958>, v=<-271,-46,278>, a=<18,1,-19> +p=<3013,80,1731>, v=<433,10,244>, a=<-30,0,-12> +p=<-1561,-2177,-1020>, v=<-227,-314,-145>, a=<16,26,16> +p=<-1230,2247,-501>, v=<-169,320,-71>, a=<14,-22,4> +p=<527,-2245,1744>, v=<67,-319,248>, a=<-6,21,-17> +p=<-1513,-166,-2981>, v=<-211,-28,-425>, a=<15,0,29> +p=<440,-823,2548>, v=<63,-116,364>, a=<-4,10,-24> +p=<-1545,-2022,350>, v=<-217,-285,51>, a=<19,18,-6> +p=<-1920,-2099,1374>, v=<-271,-304,197>, a=<18,21,-12> +p=<-1984,2245,966>, v=<-283,325,138>, a=<22,-22,-5> +p=<1286,1145,1885>, v=<186,163,271>, a=<-7,-11,-18> +p=<-2077,-1678,1117>, v=<-294,-243,156>, a=<24,17,-9> +p=<-65,3081,988>, v=<-9,440,141>, a=<-1,-33,-13> +p=<1372,-2516,92>, v=<198,-361,17>, a=<-13,23,0> +p=<574,-2894,-2168>, v=<82,-413,-309>, a=<-1,28,22> +p=<2843,-746,1072>, v=<408,-108,156>, a=<-26,5,-8> +p=<-2673,2015,-608>, v=<-380,287,-87>, a=<29,-14,5> +p=<-1103,-1722,-1992>, v=<-157,-247,-289>, a=<14,19,18> +p=<-619,528,-2863>, v=<-88,75,-410>, a=<5,-7,28> +p=<-1977,2190,1193>, v=<-282,311,167>, a=<17,-19,-13> +p=<860,-3029,253>, v=<123,-433,41>, a=<-8,33,-2> +p=<-1719,1295,-1775>, v=<-245,183,-250>, a=<13,-13,19> +p=<-2978,1898,-292>, v=<-428,271,-47>, a=<30,-18,2> +p=<565,1062,-2232>, v=<80,152,-315>, a=<-4,-10,28> +p=<-1305,1305,-2694>, v=<-183,186,-382>, a=<14,-14,26> +p=<-2484,-273,-1989>, v=<-359,-35,-283>, a=<23,4,18> +p=<1136,-1048,-2857>, v=<166,-150,-410>, a=<-9,9,30> +p=<-442,2206,2090>, v=<-64,315,301>, a=<4,-22,-14> +p=<-23,2898,224>, v=<-3,412,30>, a=<0,-26,1> +p=<2138,959,-1982>, v=<306,140,-283>, a=<-19,-9,17> +p=<-1618,1775,-1360>, v=<-231,253,-191>, a=<22,-18,12> +p=<692,1924,-2492>, v=<99,278,-361>, a=<-6,-17,28> +p=<-1023,2364,-1752>, v=<-142,340,-247>, a=<10,-19,19> +p=<-1750,-2698,1145>, v=<-246,-382,167>, a=<17,25,-11> +p=<3258,1100,-180>, v=<470,158,-26>, a=<-32,-13,0> +p=<-1915,-679,-2235>, v=<-273,-97,-323>, a=<21,9,24> +p=<-1104,-2081,-786>, v=<-155,-297,-113>, a=<11,22,10> +p=<-2858,-640,-706>, v=<-406,-90,-100>, a=<29,5,4> +p=<712,1716,-1986>, v=<102,248,-284>, a=<-7,-17,19> +p=<832,2700,-390>, v=<120,385,-55>, a=<-5,-26,3> +p=<1587,-619,2627>, v=<223,-84,375>, a=<-17,4,-28> +p=<2298,470,2118>, v=<325,62,302>, a=<-16,-8,-19> +p=<-2057,-1407,-2233>, v=<-288,-204,-317>, a=<25,14,26> +p=<-112,-62,2758>, v=<-13,-5,397>, a=<1,-2,-23> +p=<-211,-2054,2162>, v=<-32,-291,309>, a=<6,20,-24> +p=<2083,836,1594>, v=<299,118,228>, a=<-18,-8,-17> +p=<-530,2090,1973>, v=<-76,302,278>, a=<4,-26,-24> +p=<-1080,1942,-1900>, v=<-158,279,-272>, a=<6,-19,19> +p=<-2074,1278,1789>, v=<-301,186,250>, a=<14,-11,-18> +p=<-520,2504,414>, v=<-74,354,60>, a=<-2,-25,-7> +p=<-1176,-2282,-1591>, v=<-170,-326,-228>, a=<16,15,15> +p=<102,2968,990>, v=<12,427,146>, a=<-7,-32,-10> +p=<-2709,1659,-316>, v=<-389,241,-39>, a=<31,-9,1> +p=<-2290,1919,773>, v=<-329,275,105>, a=<22,-16,-12> +p=<615,482,3245>, v=<85,69,463>, a=<-10,0,-27> +p=<1234,2456,-1243>, v=<178,346,-177>, a=<-9,-21,9> +p=<1114,1679,1730>, v=<164,240,248>, a=<-12,-15,-17> +p=<-1422,1522,-1711>, v=<-208,209,-244>, a=<9,-15,21> +p=<2007,-1374,485>, v=<285,-201,69>, a=<-22,17,-4> +p=<-12,2520,544>, v=<-1,362,74>, a=<0,-26,-10> +p=<-474,-1923,2315>, v=<-67,-270,334>, a=<2,18,-21> +p=<1517,-2248,-418>, v=<216,-314,-59>, a=<-14,22,3> +p=<1118,2532,-1334>, v=<159,361,-189>, a=<-12,-25,13> +p=<-1489,-1372,-2353>, v=<-219,-200,-337>, a=<15,18,21> +p=<1056,25,-2775>, v=<149,1,-398>, a=<-17,0,27> +p=<-2726,1082,-1224>, v=<-389,153,-169>, a=<27,-7,12> +p=<751,608,-2592>, v=<102,88,-374>, a=<-6,-7,24> +p=<1945,2317,-136>, v=<276,331,-18>, a=<-23,-24,4> +p=<-3253,69,-228>, v=<-462,11,-36>, a=<36,0,-1> +p=<1255,-2938,-313>, v=<183,-419,-45>, a=<-8,26,7> +p=<-2646,2011,-797>, v=<-380,287,-109>, a=<25,-21,2> +p=<50,-1406,-2557>, v=<5,-198,-362>, a=<6,15,24> +p=<348,-1005,2940>, v=<51,-140,420>, a=<-2,7,-29> +p=<-672,2846,-1419>, v=<-97,402,-207>, a=<6,-28,11> +p=<2859,1440,-24>, v=<408,201,-9>, a=<-27,-21,2> +p=<2157,-1843,429>, v=<313,-263,61>, a=<-22,19,-4> +p=<45,-1064,2940>, v=<6,-158,419>, a=<1,12,-29> +p=<1730,987,-1830>, v=<247,143,-264>, a=<-19,-7,17> +p=<-1122,-1149,2253>, v=<-165,-161,322>, a=<12,11,-25> +p=<2676,-601,-785>, v=<380,-86,-115>, a=<-30,5,8> +p=<2435,-555,-1288>, v=<348,-80,-183>, a=<-24,6,12> +p=<1305,-81,2894>, v=<185,-10,413>, a=<-13,-4,-30> +p=<954,-2008,1396>, v=<140,-292,199>, a=<-9,25,-10> +p=<-133,2590,984>, v=<-19,374,140>, a=<0,-23,-10> +p=<1389,-2086,-2054>, v=<194,-296,-293>, a=<-16,18,19> +p=<-296,-2831,566>, v=<-37,-404,82>, a=<-2,24,1> +p=<-2569,-802,-1287>, v=<-369,-113,-183>, a=<28,10,10> +p=<-1886,1812,-2154>, v=<-266,255,-307>, a=<15,-17,26> +p=<-1719,-1231,1420>, v=<-244,-174,204>, a=<20,14,-18> +p=<-2888,-1394,1274>, v=<-412,-202,183>, a=<28,13,-14> +p=<1984,1660,1284>, v=<287,237,179>, a=<-19,-18,-16> +p=<-41,200,2573>, v=<-4,31,370>, a=<-1,-2,-25> +p=<-3016,34,-1363>, v=<-429,1,-190>, a=<31,-5,13> +p=<-1286,-763,2011>, v=<-183,-107,287>, a=<11,1,-21> +p=<-1848,1908,-618>, v=<-265,274,-87>, a=<19,-22,11> +p=<-688,2384,-207>, v=<-98,336,-29>, a=<7,-22,0> +p=<281,847,-2885>, v=<40,121,-412>, a=<-1,-11,25> +p=<192,-2453,-1601>, v=<31,-355,-222>, a=<-1,24,17> +p=<491,2203,2548>, v=<68,315,367>, a=<-5,-21,-28> +p=<-2321,-624,-555>, v=<-336,-90,-81>, a=<23,6,-1> +p=<-432,-3152,-213>, v=<-63,-450,-31>, a=<-2,31,1> +p=<-1867,1915,-782>, v=<-266,270,-110>, a=<22,-19,7> +p=<-892,-2127,-2359>, v=<-122,-311,-337>, a=<5,25,26> +p=<-941,2518,-1279>, v=<-140,360,-182>, a=<10,-25,11> +p=<1469,340,-3429>, v=<209,48,-490>, a=<-13,0,38> +p=<673,3163,673>, v=<101,451,95>, a=<-8,-34,-1> +p=<800,1337,2614>, v=<114,193,371>, a=<-2,-15,-24> +p=<1261,1722,-2285>, v=<179,249,-326>, a=<-14,-19,19> +p=<1473,-2386,-1740>, v=<210,-340,-248>, a=<-13,21,17> +p=<1905,2345,936>, v=<269,330,128>, a=<-21,-27,-8> +p=<-9,-2986,506>, v=<2,-426,74>, a=<0,29,-4> +p=<1104,2001,1666>, v=<158,286,238>, a=<-11,-20,-14> +p=<-497,-2214,2033>, v=<-66,-314,293>, a=<5,22,-13> +p=<209,-2513,-1928>, v=<29,-361,-273>, a=<-3,23,23> +p=<3148,-137,-45>, v=<452,-16,-6>, a=<-34,1,1> +p=<-738,-382,3098>, v=<-105,-51,440>, a=<8,2,-30> +p=<1401,2701,793>, v=<200,387,112>, a=<-11,-26,-11> +p=<-2116,-937,-1839>, v=<-303,-136,-266>, a=<19,9,20> +p=<686,-763,-3088>, v=<104,-117,-443>, a=<-6,10,27> +p=<-1078,-2695,1808>, v=<-150,-381,252>, a=<7,28,-22> +p=<-1664,-680,2702>, v=<-238,-102,384>, a=<19,8,-26> +p=<-2971,-700,1101>, v=<-431,-98,157>, a=<25,6,-11> +p=<-403,-2013,-1424>, v=<-57,-286,-197>, a=<-1,18,14> +p=<-248,-2160,-1597>, v=<-35,-308,-228>, a=<3,22,15> +p=<-1239,983,-1956>, v=<-175,136,-272>, a=<12,-11,20> +p=<1358,2352,2015>, v=<192,333,283>, a=<-8,-18,-14> +p=<-513,-2703,-1005>, v=<-72,-384,-140>, a=<3,26,14> +p=<1677,2614,-393>, v=<239,372,-55>, a=<-15,-26,2> +p=<568,-2323,1735>, v=<77,-333,241>, a=<-4,20,-10> +p=<2487,1279,-308>, v=<353,188,-42>, a=<-24,-12,9> +p=<1009,316,2729>, v=<136,46,389>, a=<-7,-7,-26> +p=<2442,-775,2407>, v=<345,-111,344>, a=<-25,7,-21> +p=<-936,2174,2023>, v=<-134,305,289>, a=<12,-18,-18> +p=<-731,-714,-2746>, v=<-104,-100,-390>, a=<0,5,30> +p=<422,-3337,-414>, v=<63,-477,-61>, a=<-4,31,4> +p=<1873,1735,-1252>, v=<270,244,-174>, a=<-22,-15,15> +p=<-2135,-1673,-1094>, v=<-306,-239,-155>, a=<21,18,13> +p=<-327,-2234,1998>, v=<-44,-322,283>, a=<1,22,-22> +p=<1599,722,1794>, v=<228,102,260>, a=<-16,-7,-17> +p=<749,-3446,-111>, v=<114,-490,-13>, a=<-9,35,1> From 8a82f9afe493c9cff8c167a6aeb0ed38b24d2f0c Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Wed, 20 Dec 2017 00:33:59 -0800 Subject: [PATCH 37/55] Advent 2017 through Day 20 --- ipynb/Advent 2017.ipynb | 446 ++++++++++++++++++++++++++-------------- 1 file changed, 292 insertions(+), 154 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index c2db159..b67c5b6 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -49,6 +49,7 @@ "from itertools import (permutations, combinations, chain, cycle, product, islice, \n", " takewhile, zip_longest, count as count_from)\n", "from heapq import heappop, heappush\n", + "from numba import jit\n", "\n", "identity = lambda x: x\n", "letters = 'abcdefghijklmnopqrstuvwxyz'\n", @@ -66,21 +67,25 @@ "def Input(day, year=2017):\n", " \"Open this day's input file.\"\n", " return open('data/advent{}/input{}.txt'.format(year, day))\n", + "\n", + "def Inputstr(day, year=2017): \n", + " \"The contents of this day's input file as a str.\"\n", + " return Input(day, year).read().rstrip('\\n')\n", " \n", - "def array(lines):\n", + "def Array(lines):\n", " \"Parse an iterable of str lines into a 2-D array. If `lines` is a str, splitlines.\"\n", " if isinstance(lines, str): lines = lines.splitlines()\n", - " return mapt(vector, lines)\n", + " return mapt(Vector, lines)\n", "\n", - "def vector(line):\n", + "def Vector(line):\n", " \"Parse a str into a tuple of atoms (numbers or str tokens).\"\n", - " return mapt(atom, line.replace(',', ' ').split())\n", + " return mapt(Atom, line.replace(',', ' ').split())\n", "\n", - "def integers(text): \n", + "def Integers(text): \n", " \"Return a tuple of all integers in a string.\"\n", - " return mapt(int, re.findall(r'\\b[-+]?\\d+\\b', text))\n", + " return mapt(int, re.findall(r'-?\\b\\d+\\b', text))\n", "\n", - "def atom(token):\n", + "def Atom(token):\n", " \"Parse a str token into a number, or leave it as a str.\"\n", " try:\n", " return int(token)\n", @@ -160,6 +165,10 @@ " \"Count how many times the predicate is true.\"\n", " return sum(map(pred, iterable))\n", "\n", + "def length(iterable):\n", + " \"Same as len(list(iterable)), but without consuming memory.\"\n", + " return sum(1 for _ in iterable)\n", + "\n", "def shuffled(iterable):\n", " \"Create a new list out of iterable, and shuffle it.\"\n", " new = list(iterable)\n", @@ -194,7 +203,7 @@ " return range(start, end + 1)\n", "\n", "def floats(start, end, step=1.0):\n", - " \"Yields from start to end (inclusive), by increments of step.\"\n", + " \"Yield floats from start to end (inclusive), by increments of step.\"\n", " m = (1.0 if step >= 0 else -1.0)\n", " while start * m <= end * m:\n", " yield start\n", @@ -236,13 +245,13 @@ " (x-1, y), (x+1, y),\n", " (x-1, y+1), (x, y+1), (x+1, y+1))\n", "\n", - "def cityblock_distance(p, q=origin): \n", + "def cityblock_distance(P, Q=origin): \n", " \"Manhatten distance between two points.\"\n", - " return abs(X(p) - X(q)) + abs(Y(p) - Y(q))\n", + " return sum(abs(p - q) for p, q in zip(P, Q))\n", "\n", - "def distance(p, q=origin): \n", + "def distance(P, Q=origin): \n", " \"Hypotenuse distance between two points.\"\n", - " return math.hypot(X(p) - X(q), Y(p) - Y(q))\n", + " return sum((p - q) ** 2 for p, q in zip(P, Q)) ** 0.5\n", "\n", "################ Debugging \n", "\n", @@ -263,6 +272,10 @@ "class Struct:\n", " \"A structure that can have any fields defined.\"\n", " def __init__(self, **entries): self.__dict__.update(entries)\n", + " def __repr__(self): \n", + " fields = ['{}={}'.format(f, self.__dict__[f]) \n", + " for f in sorted(self.__dict__)]\n", + " return 'Struct({})'.format(', '.join(fields))\n", "\n", "################ A* and Breadth-First Search (tracking states, not actions)\n", "\n", @@ -310,10 +323,10 @@ "source": [ "def tests():\n", " # Functions for Input, Parsing\n", - " assert array('''1 2 3\n", + " assert Array('''1 2 3\n", " 4 5 6''') == ((1, 2, 3), \n", " (4, 5, 6))\n", - " assert vector('testing 1 2 3.') == ('testing', 1, 2, 3.0)\n", + " assert Vector('testing 1 2 3.') == ('testing', 1, 2, 3.0)\n", " \n", " # Functions on Iterables\n", " assert first('abc') == first(['a', 'b', 'c']) == 'a'\n", @@ -385,7 +398,7 @@ { "data": { "text/plain": [ - "2014" + "(2014, (3, 2, 9, 4, 1, 9, 9, 4, 7, 1))" ] }, "execution_count": 3, @@ -394,9 +407,10 @@ } ], "source": [ - "digits = mapt(int, '3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763')\n", + "digits = mapt(int, Inputstr(1))\n", "N = len(digits)\n", - "N" + "\n", + "N, digits[:10]" ] }, { @@ -465,7 +479,7 @@ }, "outputs": [], "source": [ - "rows2 = array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", + "rows2 = Array('''790\t99\t345\t1080\t32\t143\t1085\t984\t553\t98\t123\t97\t197\t886\t125\t947\n", "302\t463\t59\t58\t55\t87\t508\t54\t472\t63\t469\t419\t424\t331\t337\t72\n", "899\t962\t77\t1127\t62\t530\t78\t880\t129\t1014\t93\t148\t239\t288\t357\t424\n", "2417\t2755\t254\t3886\t5336\t3655\t5798\t3273\t5016\t178\t270\t6511\t223\t5391\t1342\t2377\n", @@ -946,8 +960,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 6.21 s, sys: 24.6 ms, total: 6.24 s\n", - "Wall time: 6.28 s\n" + "CPU times: user 6.15 s, sys: 19.9 ms, total: 6.17 s\n", + "Wall time: 6.19 s\n" ] }, { @@ -994,7 +1008,7 @@ }, "outputs": [], "source": [ - "banks = vector('4\t10\t4\t1\t8\t4\t9\t14\t5\t1\t14\t15\t0\t15\t3\t5')\n", + "banks = Vector('4\t10\t4\t1\t8\t4\t9\t14\t5\t1\t14\t15\t0\t15\t3\t5')\n", "\n", "def realloc(banks):\n", " \"How many cycles until we reach a configuration we've seen before?\"\n", @@ -1349,7 +1363,7 @@ "source": [ "# [Day 8](https://adventofcode.com/2017/day/8): Memory Reallocation \n", "\n", - "This one looks easy: a simple interpreter for straight-line code where each instruction has 7 tokens. It is nice that my `array` function parses the whole program." + "This one looks easy: a simple interpreter for straight-line code where each instruction has 7 tokens. It is nice that my `Array` function parses the whole program." ] }, { @@ -1369,7 +1383,7 @@ } ], "source": [ - "program8 = array(Input(8))\n", + "program8 = Array(Input(8))\n", "\n", "def run8(program):\n", " \"Run the program and return final value of registers.\"\n", @@ -1446,8 +1460,8 @@ } ], "source": [ - "text1 = re.sub(r'!.', '', Input(9).read()) # Delete canceled characters\n", - "text2 = re.sub(r'<.*?>', '', text1) # Delete garbage\n", + "text1 = re.sub(r'!.', '', Inputstr(9)) # Delete canceled characters\n", + "text2 = re.sub(r'<.*?>', '', text1) # Delete garbage\n", "\n", "text2[:70]" ] @@ -1781,7 +1795,7 @@ } ], "source": [ - "path = vector(Input(11).read())\n", + "path = Vector(Inputstr(11))\n", "\n", "def follow(path):\n", " \"Follow each step of the path; return final distance to origin.\"\n", @@ -1854,7 +1868,7 @@ "def groups(lines):\n", " \"Dict of {i: {directly_connected_to_i}\"\n", " return {lhs: {lhs} | set(rhs)\n", - " for (lhs, _, *rhs) in array(lines)}\n", + " for (lhs, _, *rhs) in Array(lines)}\n", " \n", "assert groups(Input(12))[0] == {0, 659, 737}" ] @@ -1988,7 +2002,7 @@ } ], "source": [ - "scanners = mapt(integers, Input(13))\n", + "scanners = mapt(Integers, Input(13))\n", "scanners[:5]" ] }, @@ -2127,16 +2141,18 @@ { "cell_type": "code", "execution_count": 61, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def Grid(key, N=128+2):\n", " \"Make a grid, with a border around it.\"\n", - " rows = [['0'] + list(bits(key, i)) + ['0'] \n", - " for i in range(128)]\n", - " empty = ['0'] * len(rows[0])\n", + " return border('0', (list(bits(key, i)) for i in range(128)))\n", + "\n", + "def border(fill, grid):\n", + " \"Surround a grid with a border of fill cells.\"\n", + " rows = [[fill] + list(row) + [fill] \n", + " for row in grid]\n", + " empty = [fill] * len(rows[0])\n", " return [empty] + rows + [empty]" ] }, @@ -2220,8 +2236,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 24.8 s, sys: 64 ms, total: 24.9 s\n", - "Wall time: 24.9 s\n" + "CPU times: user 15.2 s, sys: 18.4 ms, total: 15.3 s\n", + "Wall time: 15.3 s\n" ] }, { @@ -2236,6 +2252,7 @@ } ], "source": [ + "@jit # This was the slowest solution; @jit helps a bit.\n", "def gen(prev, factor, m=2147483647):\n", " \"Generate a sequence of numbers according to the rules; stop at 0.\"\n", " while prev:\n", @@ -2243,7 +2260,7 @@ " yield prev\n", " \n", "def judge(A, B, N=40*10**6, mask=2**16-1): \n", - " \"How many of the first N pairs from A and B agree in the last b bits?\"\n", + " \"How many of the first N numbers from A and B agree in the masked bits (default last 16)?\"\n", " return quantify(a & mask == b & mask\n", " for (a, b, _) in zip(A, B, range(N)))\n", "\n", @@ -2257,6 +2274,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "Notice I also decided to use `@jit` (i.e. `numba.jit`) to speed things up, since this is the slowest-running day yet.\n", + "\n", "**Part Two**\n", "\n", "A small change: only consider numbers that match the **criteria** of being divisible by 4 or 8, respectively;" @@ -2271,8 +2290,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 16.3 s, sys: 23.3 ms, total: 16.4 s\n", - "Wall time: 16.4 s\n" + "CPU times: user 9.52 s, sys: 9 ms, total: 9.53 s\n", + "Wall time: 9.54 s\n" ] }, { @@ -2329,7 +2348,7 @@ } ], "source": [ - "dance = vector(Input(16).read())\n", + "dance = Vector(Inputstr(16))\n", "dance[:10]" ] }, @@ -2385,7 +2404,7 @@ " for move in dance:\n", " op, arg = move[0], move[1:]\n", " if op == 's': D.rotate(int(arg))\n", - " elif op == 'x': swap(*integers(arg))\n", + " elif op == 'x': swap(*Integers(arg))\n", " elif op == 'p': swap(D.index(arg[0]), D.index(arg[2]))\n", " return cat(D)\n", " \n", @@ -2539,7 +2558,7 @@ "\n", "**Part Two**\n", "\n", - "But Part Two is not so easy, if we care about the run time. Insertion into a `list` has to move all the elements after the insertion down, so insertion is O(N) and `spinlock` is O(N2). That's no problem when N = 2017, but a big problem when N is 50 million. We're gonna need need a bigger boat, where by \"boat\" I mean algorithm or data structure. My first thought is a (circular) linked list, because insertion is O(1). I can implement the three key methods: `skip` to move ahead, `insert` to add a new node after the current one, and `find` to find a piece of data (with a linear search):" + "But Part Two is not so easy, if we care about the run time. Insertion into a `list` has to move all the elements after the insertion down, so insertion is O(N) and `spinlock` is O(N2). That's no problem when N = 2017, but when N is 50 million? We're gonna need a bigger boat, where by \"boat\" I mean algorithm or data structure. My first thought is a (circular) linked list, because insertion is O(1). I can implement the three key methods: `skip` to move ahead, `insert` to add a new node after the current one, and `find` to find a piece of data (with a linear search):" ] }, { @@ -2641,14 +2660,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.4 s, sys: 5.52 ms, total: 1.4 s\n", - "Wall time: 1.4 s\n" + "CPU times: user 1.57 s, sys: 7.74 ms, total: 1.58 s\n", + "Wall time: 1.58 s\n" ] }, { "data": { "text/plain": [ - "<__main__.Node at 0x108a9c780>" + "<__main__.Node at 0x111355438>" ] }, "execution_count": 77, @@ -2681,8 +2700,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.55 s, sys: 16.7 ms, total: 5.57 s\n", - "Wall time: 5.57 s\n" + "CPU times: user 5.48 s, sys: 8.31 ms, total: 5.49 s\n", + "Wall time: 5.49 s\n" ] }, { @@ -2714,7 +2733,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The moral of the story is *keep your eyes on the prize*. I got distracted because I asked the wrong question. I asked myself \"what's wrong with my solution in `spinlock`?\" and answered myself \"insertion is O(N2) and it should be O(N).\" I knew how to do that, but that was the wrong question. I should have asked myself \"how do I solve Part Two quickly,\" concentrating on solving the actual problem, and avoiding getting fixated on my solution to Part One." + "The moral of the story is *keep your eyes on the prize*. I got distracted because I asked the wrong question. I asked myself \"how can I make my solution in `spinlock` faster?\" and answered myself \"insertion is O(N2) and it should be O(N).\" I knew how to do that, with a linked list, but that was the right answer to the wrong question. I should have asked myself \"how do I solve Part Two quickly,\" concentrating on solving the actual problem. Once I did that, I realized I didn't need all those insertions: not doing them at all is a better idea than doing them faster." ] }, { @@ -2723,7 +2742,7 @@ "source": [ "# [Day 18](https://adventofcode.com/2017/day/17): Duet\n", "\n", - "First, read and take a peek at the input:" + "First, read the input, and take a peak at it:" ] }, { @@ -2738,7 +2757,12 @@ " ('set', 'a', 1),\n", " ('mul', 'p', 17),\n", " ('jgz', 'p', 'p'),\n", - " ('mul', 'a', 2))" + " ('mul', 'a', 2),\n", + " ('add', 'i', -1),\n", + " ('jgz', 'i', -2),\n", + " ('add', 'a', -1),\n", + " ('set', 'i', 127),\n", + " ('set', 'p', 826))" ] }, "execution_count": 79, @@ -2747,8 +2771,8 @@ } ], "source": [ - "program18 = array(Input(18))\n", - "program18[:5]" + "program18 = Array(Input(18))\n", + "program18[:10]" ] }, { @@ -2776,22 +2800,21 @@ ], "source": [ "def run18(program):\n", - " \"Interpret the assembly language program.\"\n", + " \"Interpret the assembly language program; return recovered `snd`.\"\n", " regs = defaultdict(int)\n", - " pc = sound = 0\n", + " pc = snd = 0\n", " while True:\n", " instr = program[pc]\n", + " pc += 1\n", " op, x, y = instr[0], instr[1], instr[-1]\n", " vy = value(regs, y)\n", - " if op == 'snd': sound = regs[x]\n", + " if op == 'snd': snd = regs[x]\n", " elif op == 'set': regs[x] = vy\n", " elif op == 'add': regs[x] += vy\n", " elif op == 'mul': regs[x] *= vy\n", " elif op == 'mod': regs[x] %= vy\n", " elif op == 'jgz' and regs[x] > 0: pc += vy - 1\n", - " elif op == 'rcv' and regs[x] != 0: \n", - " return sound\n", - " pc += 1\n", + " elif op == 'rcv' and regs[x] != 0: return snd\n", " \n", "def value(regs, y): return (y if isinstance(y, int) else regs[y])\n", "\n", @@ -2802,12 +2825,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "That was easy. (One tricky bit: after every instruction the `pc` is incremented by 1, so for the `'jgz'` jump instruction, the increment is `vy - 1`, not just `vy`, so that the `pc += 1` will fix it.)\n", + "That was easy. (One tricky bit: the `pc` is incremented by 1 every time through the loop, regardless of the instruction. Therefore, the `'jgz'` jump instruction increments by \"`vy - 1`\" so that the net increment is \"`vy`\".)\n", "\n", "**Part Two**\n", "\n", - "Now we have to run two copies of the program, and send messages between them. I'll break up the loop in `run18` into\n", - "two functions. First, `run18_2`, creates (in `ps`) two structures to hold the state variables necessary to run a program (`Struct` is my generic constructor of structures with named fields). `run18_2` then repeatedly calls `step18(program, p)` to execute one instruction of `program` with the state variables in `p`. At each step I will choose randomly which of the two programs to advance. (I could just as easily have alternated.) The function exits when neither copy of the program can run, according to their status. A program can have status `run` when it is ready to execute an instruction, `wait` when it is waiting for a value to arrive in its input queue, or `end` for when the `pc` has run off the end of the program and it is terminated." + "In Part Two we have to run two copies of the program, and send messages between them. I'll break up the loop in `run18` into\n", + "two functions. First, `run18_2`, creates (in `ps`) two structures to hold the state variables necessary to run a program:\n", + "- `id`: The id number (0 or 1) of this copy of the program.\n", + "- `pc`: The program counter.\n", + "- `sends`: A count of the number of `snd` instructions executed.\n", + "- `regs`: A dict of the program registers (`a` to `z`).\n", + "- `status`: A program has a status which can be:\n", + " * `'run'` when it is ready to execute an instruction, \n", + " * `'wait'` when it is waiting for a value to arrive in its input queue, or \n", + " * `'end'` when the `pc` has run off the end of the program and it has terminated.\n", + "\n", + "`run18_2` repeatedly calls the second function, `step18(program, p)` to execute one instruction of `program` with the state variables in `p`. I choose randomly which of the two programs to step on each iteration. The function exits when neither copy of the program can run, according to their status. " ] }, { @@ -2821,10 +2854,10 @@ "def run18_2(program):\n", " \"Run two copies of program, with different state variables. Return final states.\"\n", " Qs = [deque(), deque()]\n", - " ps = [Struct(pc=0, sends=0, Qs=Qs, status='run', p=id, regs=defaultdict(int, p=id))\n", + " ps = [Struct(id=id, pc=0, sends=0, regs=defaultdict(int, p=id), status='run')\n", " for id in (0, 1)]\n", - " while 'run' in {ps[0].status, ps[1].status}:\n", - " step18(program, random.choice(ps))\n", + " while any(p.status == 'run' for p in ps):\n", + " step18(program, Qs, random.choice(ps))\n", " return ps" ] }, @@ -2832,12 +2865,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The second function, `step18`, has most of the guts of `run18`, but with a few changes:\n", + "`step18` has most of the guts of thee previous `run18` function, but with a few changes:\n", "- State variables are accessed indirectly: `p.pc` instead of just `pc`.\n", "- If the `pc` is out of bounds, the program terminates; the status is set to `'end'`.\n", "- The `snd` instruction sends a value to the other program's queue.\n", - "- The `rcv` instruction pops a value of the queue if there is one, otherwise the status is set to `'wait'`.\n", - "- I was stuck for a *long* time on this problem, repeatedly getting the wrong answer. Finally I tried the strategy of *look carefully at the input*. I noticed an instruction, `\"jgz 1 3\"`, in which the X field was the integer 1. I had assumed the X field was always a register, but apparently it need not be, and I should be evaluating X with `value(regs, x)`, not `regs[x]`. Once I made that change, the program worked." + "- The `rcv` instruction pops a value off the queue if there is one, otherwise the status is set to `'wait'`.\n", + "- The \"`X`\" in \"`jgz X Y`\" might be an integer, not a register name, so use `vx = value(p.regs, x)`. I was stuck for a *long* time before I realized this. Finally I tried the strategy of *look carefully at the input*. I noticed the instruction `\"jgz 1 3\"`, and it was a simple change to make the program work." ] }, { @@ -2857,26 +2890,26 @@ } ], "source": [ - "def step18(program, p):\n", - " \"Run one instruction in program, with state variables in p.\"\n", + "def step18(program, Qs, p):\n", + " \"Execute one instruction in program, using state variables in p.\"\n", " if p.pc < 0 or p.pc > len(program):\n", " p.status = 'end'\n", " else:\n", " instr = program[p.pc]\n", " op, x, y = instr[0], instr[1], instr[-1]\n", " vx, vy = value(p.regs, x), value(p.regs, y)\n", - " if op == 'snd': p.Qs[1-p.p].append(vy); p.sends += 1\n", + " if op == 'snd': Qs[1-p.id].append(vy); p.sends += 1\n", " elif op == 'set': p.regs[x] = vy\n", " elif op == 'add': p.regs[x] += vy\n", " elif op == 'mul': p.regs[x] *= vy\n", " elif op == 'mod': p.regs[x] %= vy\n", " elif op == 'jgz' and vx > 0: p.pc += vy - 1\n", " elif op == 'rcv': \n", - " if not p.Qs[p.p]:\n", + " if not Qs[p.id]:\n", " p.status = 'wait'\n", - " return\n", + " return # don't update pc; try again next time\n", " else:\n", - " p.regs[x] = p.Qs[p.p].popleft()\n", + " p.regs[x] = Qs[p.id].popleft()\n", " p.status = 'run'\n", " p.pc += 1\n", " \n", @@ -2894,67 +2927,34 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "At first I was confused; I thought this was a maze-following problem with choices of which direction to turn. Actually, the direction is always determined: keep going in the current direction as long as possible, but when we hit a `'+'` character, search for another direction to go in (there will only be one, but we have to try all the possibilities to find it). Leave breadcrumbs (the `'.'` character) so that we don't back up along a previously-followed path. Collect all the alphabetic characters into `result`. As in Day 14, the grid, `G`, is surrounded by space characters so that we don't have to worry about `(x, y)` going off the edge." + "At first I was confused; I thought this was a maze-following problem where I had to make a choice of directions at every turn. Actually, the direction is always determined: keep going in the current direction as long as possible, but when we hit a `'+'` character, find the new direction to go in (there will only be one possibility). Leave breadcrumbs (the `'.'` character) so that we don't back up along a previously-followed path. As in Day 14, the grid is surrounded by a border of space characters so that we don't have to worry about `(x, y)` going off the edge." ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'VEBTPXCHLI'" - ] - }, - "execution_count": 83, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "diagram = Input(19).read().splitlines()\n", + "diagram = Inputstr(19)\n", "\n", - "def path_follow(diagram):\n", - " \"Follow -|+ lines, and collect letters along the way.\"\n", - " result = []\n", - " G = surround(diagram)\n", - " x, y = G[1].index('|'), 1\n", + "def follow_tubes(diagram):\n", + " \"Follow [-+|] lines, yielding characters along the path.\"\n", + " grid = border(' ', diagram.splitlines())\n", + " x, y = grid[1].index('|'), 1\n", " dx, dy = 0, 1\n", - " while G[y][x] != ' ':\n", - " c = G[y][x]\n", - " if c.isalpha():\n", - " result.append(c) # Collect a letter\n", - " elif c == '+':\n", - " dx, dy = new_direction(G, x, y)\n", - " G[y][x] = '.' # Leave a breadcrumb\n", + " while grid[y][x] != ' ':\n", + " yield grid[y][x]\n", + " if grid[y][x] == '+':\n", + " dx, dy = new_direction(grid, x, y)\n", + " grid[y][x] = '.' # Leave a breadcrumb\n", " x += dx; y += dy\n", - " return cat(result)\n", - " \n", - "def surround(grid, fill=' '):\n", - " \"Put fill characters as a border all around grid.\"\n", - " rows = [[fill] + list(row) + [fill] \n", - " for row in grid]\n", - " empty = [fill] * len(rows[0])\n", - " return [empty] + rows + [empty]\n", - "\n", - "def new_direction(G, x, y):\n", + " \n", + "def new_direction(grid, x, y):\n", " \"Find a direction that continues the path.\"\n", " for (dx, dy) in (UP, DOWN, RIGHT, LEFT):\n", - " if G[y+dy][x+dx] not in (' ', '.'):\n", - " return dx, dy\n", - "\n", - "path_follow(diagram)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Part Two**\n", - "\n", - "This is a surprisingly easy Part Two: all I have to do is manage a `steps += 1` in the loop to return the total number of steps taken." + " if grid[y+dy][x+dx] not in (' ', '.'):\n", + " return dx, dy" ] }, { @@ -2965,7 +2965,7 @@ { "data": { "text/plain": [ - "('VEBTPXCHLI', 18702)" + "'VEBTPXCHLI'" ] }, "execution_count": 84, @@ -2974,25 +2974,161 @@ } ], "source": [ - "def path_follow2(diagram):\n", - " \"Follow -|+ lines, collect letters along the way, return (letters, steps).\"\n", - " result = []\n", - " steps = 0\n", - " G = surround(diagram)\n", - " x, y = G[1].index('|'), 1\n", - " dx, dy = 0, 1\n", - " while G[y][x] != ' ':\n", - " steps += 1\n", - " c = G[y][x]\n", - " if c.isalpha(): \n", - " result.append(c) # Collect a letter\n", - " elif c == '+':\n", - " dx, dy = new_direction(G, x, y)\n", - " G[y][x] = '.' # Leave a breadcrumb\n", - " x += dx; y += dy\n", - " return cat(result), steps\n", + "cat(filter(str.isalpha, follow_tubes(diagram)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's the right answer.\n", "\n", - "path_follow2(diagram)" + "**Part Two**\n", + "\n", + "This is a surprisingly easy Part Two; I already generated the characters in the path; all I have to do is count them: " + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "18702" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "length(follow_tubes(diagram))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 20](https://adventofcode.com/2017/day/20): Particle Swarm\n", + "\n", + "I'll create structures for particles, each will have fields for particle's number (`id`), position (`p`), velocity(`v`), and acceleration (`a`):" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Struct(a=(-7, 8, -10), id=0, p=(1199, -2918, 1457), v=(-13, 115, -8)),\n", + " Struct(a=(-6, -5, 6), id=1, p=(2551, 2418, -1471), v=(-106, -108, 39)),\n", + " Struct(a=(-6, 2, -9), id=2, p=(-73, 1626, 1321), v=(58, -118, -8)),\n", + " Struct(a=(3, 3, 11), id=3, p=(-3297, -894, -551), v=(183, 31, -61)),\n", + " Struct(a=(7, -12, -1), id=4, p=(-1425, 4298, 617), v=(32, -166, -32))]" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def particles(lines=list(Input(20))):\n", + " \"Parse the list of particles.\"\n", + " return [Particle(id, line) for id, line in enumerate(lines)]\n", + "\n", + "def Particle(id, line):\n", + " \"Parse a single Particle.\"\n", + " ns = Integers(line) # Assumes format \"p=<1,8,4>, v=<3,1,-8>, a=<7,8,-10>\" \n", + " return Struct(id=id, p=ns[0:3], v=ns[3:6], a=ns[6:9])\n", + "\n", + "particles()[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I'm not quite sure how to determine what \"in the long run\" means, so I'll just interpret it as meaning \"after 1000 time steps.\" On each step we update velocity and position of each particle. At the end, we determine the id number of the particle closest to the origin. Note that `evolve` generates an infinite sequence of particles, and we use `nth` to pick out the 1000th generation." + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "243" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def evolve(particles):\n", + " \"Continually update particles, yielding them after each time step.\"\n", + " while True:\n", + " yield particles\n", + " for p in particles:\n", + " p.v = add(p.v, p.a)\n", + " p.p = add(p.p, p.v)\n", + " \n", + "def add(A, B): \n", + " \"Add two n-dimensional vectors.\"\n", + " return mapt(sum, zip(A, B))\n", + "\n", + "def closest(particles):\n", + " \"Find the particle closest to origin.\"\n", + " return min(particles, key=lambda p: sum(map(abs, p.p)))\n", + "\n", + "# Answer: the id of the particle closest to origin in the 1000th generation of `evolve`\n", + "closest(nth(evolve(particles()), 1000)).id" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "I can still use `evolve` unchanged, and I will add the function `remove_collisions` to eliminate particles that are in the same position as another particle. I use `map` to apply this to every generation. Note that `remove_collisions` both mutates the argument, `particles`, and also returns it. " + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "648" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def remove_collisions(particles):\n", + " \"Mutate (and return) particles, keep only ones that have a unique position.\"\n", + " poscount = Counter(p.p for p in particles)\n", + " particles[:] = [p for p in particles if poscount[p.p] == 1]\n", + " return particles\n", + " \n", + "# Answer: remove collisions from every generation of evolving particles, \n", + "# select the 1000th generation, and say how many particles are in that generation.\n", + "len(nth(map(remove_collisions, evolve(particles())), 1000))" ] }, { @@ -3006,15 +3142,15 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 89, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 58.9 s, sys: 125 ms, total: 59 s\n", - "Wall time: 59.1 s\n" + "CPU times: user 46.8 s, sys: 62.8 ms, total: 46.9 s\n", + "Wall time: 46.9 s\n" ] } ], @@ -3062,27 +3198,29 @@ " spinlock3(N=50*10**6)[1], 6154117)\n", "day(18, run18(program18), 7071, \n", " run18_2(program18)[1].sends, 8001)\n", - "day(19, path_follow(diagram), 'VEBTPXCHLI', \n", - " path_follow2(diagram)[1], 18702)" + "day(19, cat(filter(str.isalpha, follow_tubes(diagram))), 'VEBTPXCHLI', \n", + " quantify(follow_tubes(diagram)), 18702)\n", + "day(20, closest(nth(evolve(particles()), 1000)).id, 243,\n", + " len(nth(map(remove_collisions, evolve(particles())), 1000)), 648)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "And here is a plot of the time taken to completely solve both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, the times are estimates, not exact (these include days 1, 3, 8, 13, 14, 17, 18)." + "And here is a plot of the time taken to program solutions to both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, the times are estimates, not exact (these include days 1, 3, 8, 13, 14, 17, 18)." ] }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 90, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3095,14 +3233,14 @@ " X = ints(1, len(times[0]) - 2)\n", " for (label, mark, *Y) in times:\n", " plt.plot(X, Y, mark, label=label)\n", - " plt.xlabel('Day Number'); plt.ylabel('Minutes to Solve Both')\n", + " plt.xlabel('Day Number'); plt.ylabel('Minutes to Solve Both Parts')\n", " plt.legend(loc='upper left')\n", "\n", "x = None\n", "plot_times([\n", - " ('Me', 'd:', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50),\n", - " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18),\n", - " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5)])" + " ('Me', 'd:', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50, 18),\n", + " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18, 21),\n", + " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5, 7)])" ] } ], From f8ec865bcc7fb48bee356cb720023c3dd8920fcf Mon Sep 17 00:00:00 2001 From: stephenleeustc Date: Wed, 20 Dec 2017 21:44:53 +0800 Subject: [PATCH 38/55] In Advent of code.ipynb, day8, Maybe it should be commands as a paramater, not just use Input(8) --- ipynb/Advent of Code.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipynb/Advent of Code.ipynb b/ipynb/Advent of Code.ipynb index 812fe73..a7d67cf 100644 --- a/ipynb/Advent of Code.ipynb +++ b/ipynb/Advent of Code.ipynb @@ -959,7 +959,7 @@ "\n", "def run(commands, screen):\n", " \"Do all the commands and return the final pixel array.\"\n", - " for cmd in Input(8):\n", + " for cmd in commands:\n", " interpret(cmd, screen) \n", " return screen\n", "\n", From 88b62752b23dd5ea67b230252aedc78dde1e9372 Mon Sep 17 00:00:00 2001 From: Vikrant Biswas Date: Thu, 21 Dec 2017 18:36:34 +0530 Subject: [PATCH 39/55] Fixed typo sevrities -> severities --- ipynb/Advent 2017.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index b67c5b6..6bea155 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -1973,7 +1973,7 @@ "outputs": [], "source": [ "def trip_severity(scanners): \n", - " \"The sum of sevrities for each time the packet is caught.\"\n", + " \"The sum of severities for each time the packet is caught.\"\n", " return sum((d * w if caught(d, w) else 0) \n", " for (d, w) in scanners)\n", "\n", From 0b083438cc5e6a208bc071d279655c53ac64fd7e Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Thu, 21 Dec 2017 14:01:55 -0800 Subject: [PATCH 40/55] Advent 2017 through Day 21 --- ipynb/Advent 2017.ipynb | 455 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 420 insertions(+), 35 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index b67c5b6..902229d 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -28,9 +28,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Python 3.x Utility Functions\n", @@ -94,10 +92,14 @@ " return float(token)\n", " except ValueError:\n", " return token\n", + " \n", + "def error(err=RuntimeError, *args): raise err(*args)\n", "\n", "################ Functions on Iterables\n", "\n", - "def first(iterable, default=None): return next(iter(iterable), default)\n", + "def first(iterable, default=None): \n", + " \"The first item in an iterable, or default if it is empty.\"\n", + " return next(iter(iterable), default)\n", "\n", "def first_true(iterable, pred=None, default=None):\n", " \"\"\"Returns the first true value in the iterable.\n", @@ -176,6 +178,14 @@ " return new\n", " \n", "flatten = chain.from_iterable\n", + "\n", + "def repeat(n, fn, arg):\n", + " \"Repeat arg=fn(arg) n times.\"\n", + " for i in range(n):\n", + " arg = fn(arg)\n", + " return arg\n", + "\n", + "################ Making immutable objects\n", " \n", "class Set(frozenset):\n", " \"A frozenset, but with a prettier printer.\"\n", @@ -960,8 +970,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 6.15 s, sys: 19.9 ms, total: 6.17 s\n", - "Wall time: 6.19 s\n" + "CPU times: user 6.2 s, sys: 8.37 ms, total: 6.21 s\n", + "Wall time: 6.21 s\n" ] }, { @@ -1422,16 +1432,16 @@ } ], "source": [ - "def run82(program):\n", + "def run8_2(program):\n", " registers = defaultdict(int)\n", " highest = 0\n", - " for r, inc, delta, _if, r2, cmp, amount in program:\n", + " for (r, inc, delta, _if, r2, cmp, amount) in program:\n", " if operations[cmp](registers[r2], amount):\n", " registers[r] += delta * (+1 if inc == 'inc' else -1)\n", " highest = max(highest, registers[r])\n", " return highest\n", "\n", - "run82(program8)" + "run8_2(program8)" ] }, { @@ -2236,8 +2246,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 15.2 s, sys: 18.4 ms, total: 15.3 s\n", - "Wall time: 15.3 s\n" + "CPU times: user 15.1 s, sys: 26.4 ms, total: 15.1 s\n", + "Wall time: 15.2 s\n" ] }, { @@ -2290,8 +2300,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 9.52 s, sys: 9 ms, total: 9.53 s\n", - "Wall time: 9.54 s\n" + "CPU times: user 9.39 s, sys: 8.62 ms, total: 9.4 s\n", + "Wall time: 9.4 s\n" ] }, { @@ -2660,14 +2670,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.57 s, sys: 7.74 ms, total: 1.58 s\n", - "Wall time: 1.58 s\n" + "CPU times: user 1.35 s, sys: 5.54 ms, total: 1.35 s\n", + "Wall time: 1.35 s\n" ] }, { "data": { "text/plain": [ - "<__main__.Node at 0x111355438>" + "<__main__.Node at 0x110c44be0>" ] }, "execution_count": 77, @@ -2700,8 +2710,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.48 s, sys: 8.31 ms, total: 5.49 s\n", - "Wall time: 5.49 s\n" + "CPU times: user 5.47 s, sys: 6.62 ms, total: 5.48 s\n", + "Wall time: 5.48 s\n" ] }, { @@ -3040,12 +3050,10 @@ "source": [ "def particles(lines=list(Input(20))):\n", " \"Parse the list of particles.\"\n", - " return [Particle(id, line) for id, line in enumerate(lines)]\n", + " return [Particle(id, *grouper(Integers(line), 3)) \n", + " for id, line in enumerate(lines)]\n", "\n", - "def Particle(id, line):\n", - " \"Parse a single Particle.\"\n", - " ns = Integers(line) # Assumes format \"p=<1,8,4>, v=<3,1,-8>, a=<7,8,-10>\" \n", - " return Struct(id=id, p=ns[0:3], v=ns[3:6], a=ns[6:9])\n", + "def Particle(id, p, v, a): return Struct(id=id, p=p, v=v, a=a) \n", "\n", "particles()[:5]" ] @@ -3131,6 +3139,381 @@ "len(nth(map(remove_collisions, evolve(particles())), 1000))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 21](https://adventofcode.com/2017/day/21): Fractal Art\n", + "\n", + "First I'll create a `dict` of enhancement rules. I'll translate `'#'` and `'.'` pixels to 1 and 0, and represent a grid as a tuple of tuples (e.g. `((0, 0), (1, 1))`), so that it can be a `dict` key. I have to deal with rotations and flips; I could do that at lookup time, but it will be faster to do it at rule creation time:" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [], + "source": [ + "def Enhancements(lines):\n", + " \"Create a dict of {square: enhanced_square}\"\n", + " enhancements = {}\n", + " for line in lines:\n", + " lhs, rhs = map(Key, line.split('=>'))\n", + " for r in range(4):\n", + " enhancements[lhs] = enhancements[flip(lhs)] = rhs\n", + " lhs = rotate(lhs)\n", + " return enhancements\n", + " \n", + "def Key(line): \n", + " \"Key('../##') => ((0, 0), (1, 1))\"\n", + " bits = {'#': 1, '.': 0}\n", + " return tuple(tuple(bits[p] for p in row.strip())\n", + " for row in line.split('/'))\n", + " \n", + "def rotate(key): return tuple(zip(*reversed(key)))\n", + "\n", + "def flip(L): return tuple(tuple(reversed(row)) for row in L)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's test this on just the enhancement rules with 2x2 squares; with rotations and flips there should be 16 entries:" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{((0, 0), (0, 0)): ((0, 0, 0), (0, 1, 0), (0, 1, 0)),\n", + " ((0, 0), (0, 1)): ((0, 0, 0), (1, 0, 0), (1, 0, 0)),\n", + " ((0, 0), (1, 0)): ((0, 0, 0), (1, 0, 0), (1, 0, 0)),\n", + " ((0, 0), (1, 1)): ((1, 0, 1), (0, 1, 0), (0, 1, 0)),\n", + " ((0, 1), (0, 0)): ((0, 0, 0), (1, 0, 0), (1, 0, 0)),\n", + " ((0, 1), (0, 1)): ((1, 0, 1), (0, 1, 0), (0, 1, 0)),\n", + " ((0, 1), (1, 0)): ((1, 1, 0), (1, 1, 0), (0, 0, 0)),\n", + " ((0, 1), (1, 1)): ((0, 1, 1), (1, 1, 1), (1, 0, 0)),\n", + " ((1, 0), (0, 0)): ((0, 0, 0), (1, 0, 0), (1, 0, 0)),\n", + " ((1, 0), (0, 1)): ((1, 1, 0), (1, 1, 0), (0, 0, 0)),\n", + " ((1, 0), (1, 0)): ((1, 0, 1), (0, 1, 0), (0, 1, 0)),\n", + " ((1, 0), (1, 1)): ((0, 1, 1), (1, 1, 1), (1, 0, 0)),\n", + " ((1, 1), (0, 0)): ((1, 0, 1), (0, 1, 0), (0, 1, 0)),\n", + " ((1, 1), (0, 1)): ((0, 1, 1), (1, 1, 1), (1, 0, 0)),\n", + " ((1, 1), (1, 0)): ((0, 1, 1), (1, 1, 1), (1, 0, 0)),\n", + " ((1, 1), (1, 1)): ((0, 1, 1), (1, 0, 0), (1, 1, 0))}" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Enhancements('''\n", + "../.. => .../.#./.#.\n", + "#./.. => .../#../#..\n", + "##/.. => #.#/.#./.#.\n", + ".#/#. => ##./##./...\n", + "##/#. => .##/###/#..\n", + "##/## => .##/#../##.\n", + "'''.strip().splitlines())" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "16" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(_)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks good; let's create my complete table. There should be 24 + 29 entries:" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "enhancements = Enhancements(Input(21))\n", + "\n", + "assert len(enhancements) == 2 ** 4 + 2 ** 9" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now on each iteration we `enhance` the grid by first `expand`-ing it (looking up each `slice` in the `enhancements` rules) and then `stitch` the pieces together:" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "def enhance(grid): \n", + " \"Expand small pieces into bigger ones and stitch them together.\"\n", + " return stitch(expand(grid))\n", + "\n", + "def expand(grid):\n", + " \"Slice the grid into d x d pieces and enhance each piece.\"\n", + " N = len(grid[0])\n", + " d = (2 if N % 2 == 0 else 3 if N % 3 == 0 else error())\n", + " return [[enhancements[slice(grid, r, c, d)]\n", + " for c in range(0, N, d)]\n", + " for r in range(0, N, d)]\n", + "\n", + "def stitch(pieces): \n", + " \"Stitch the pieces back into one big grid.\"\n", + " N = sum(map(len, pieces[0]))\n", + " return tuple(tuple(get(pieces, r, c) \n", + " for c in range(N))\n", + " for r in range(N))\n", + "\n", + "def get(pieces, r, c):\n", + " \"The pixel at location (r, c), from a matrix of d x d pieces.\"\n", + " d = len(pieces[0][0])\n", + " row = pieces[r // d]\n", + " cell = row[c // d]\n", + " return cell[r % d][c % d]\n", + "\n", + "def slice(grid, r, c, d):\n", + " \"The d x d slice of grid starting at position (r, c)\"\n", + " return tuple(row[c:c+d] for row in grid[r:r+d])" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((0, 1, 0), (0, 0, 1), (1, 1, 1))" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grid = Key('.#./..#/###')\n", + "grid" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0))]]" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "expand(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0))" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stitch(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[((0, 0, 0), (1, 0, 0), (1, 0, 0)), ((1, 0, 1), (0, 1, 0), (0, 1, 0))],\n", + " [((1, 0, 1), (0, 1, 0), (0, 1, 0)), ((0, 0, 0), (1, 0, 0), (1, 0, 0))]]" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "expand(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((0, 0, 0, 1, 0, 1),\n", + " (1, 0, 0, 0, 1, 0),\n", + " (1, 0, 0, 0, 1, 0),\n", + " (1, 0, 1, 0, 0, 0),\n", + " (0, 1, 0, 1, 0, 0),\n", + " (0, 1, 0, 1, 0, 0))" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stitch(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(flatten(_))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks right; Let's try to solve the puzzle:" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "147" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(flatten(repeat(5, enhance, grid)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "It looked like I didn't need to change any code to do Part Two, just change the `5` to an `18`. I ran it, and got an answer in a few seconds—but the answer was wrong. I went back and carefully looked over my code, and realized there was a place in `expand` where I had swapped the order of `r` and `c` (the code there is fixed now). Apparently there is some symmetry over the first 5 enhancements that yields the correct answer either way, but that breaks down over 18 enhancements. (Also: if I had guessed that `sum(flatten(repeat(n, enhance, grid)))` would be used in both parts, I probably would have created a function for it. But I was guessing that Part Two would involve `enhance`, but not necessarily in the same way as Part One.)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1936582" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(flatten(repeat(18, enhance, grid)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# A Note on Reuse\n", + "\n", + "One interesting question about these two-part problems: how does the code in Part Two use the code in Part One? \n", + "Here are my answers:\n", + "\n", + "* **All new**: All the code for Part Two (except possibly reading and parsing the input) is brand new: \n", + "
Days 1, 2, 4, 7\n", + "\n", + "* **Reuse as is**: The major function defined in Part One is called again in Part Two (and some new code\n", + "is also written):\n", + "
Days 3 (`spiral`), 6 (`spread`, but `realloc2` is copy-paste-edit), 9, 12, 14 (`bits`), \n", + "15 (`A, B, gen, judge`), 16 (`perform`), 19 (`follow_tubes`), 20 (`evolve, particles`), 21 (`expands`, `gridsum`)\n", + "\n", + "* **Generalize**: A major function from Part One is generalized in Part Two (e.g. by adding an optional parameter):\n", + "
Days 13 (`caught`)\n", + "\n", + "* **Copy-paste-edit**: The major function from Part One is copied and edited for Part Two:\n", + "
Days 5 (`run2`), 8 (`run82`), 10 (`knothash2`), 11 (`follow2`), 17 (`spinlock2`), 18 (`step18`)\n", + "\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -3142,15 +3525,15 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 46.8 s, sys: 62.8 ms, total: 46.9 s\n", - "Wall time: 46.9 s\n" + "CPU times: user 54.6 s, sys: 156 ms, total: 54.7 s\n", + "Wall time: 54.9 s\n" ] } ], @@ -3177,7 +3560,7 @@ "day(7, first(programs - set(flatten(above.values()))), 'wiapj', \n", " correct(wrongest(programs)), 1072)\n", "day(8, max(run8(program8).values()), 6828, \n", - " run82(program8), 7234)\n", + " run8_2(program8), 7234)\n", "day(9, total_score(text2), 9662, \n", " len(text1) - len(text3), 4903)\n", "day(10, knothash(stream), 4480, \n", @@ -3201,26 +3584,28 @@ "day(19, cat(filter(str.isalpha, follow_tubes(diagram))), 'VEBTPXCHLI', \n", " quantify(follow_tubes(diagram)), 18702)\n", "day(20, closest(nth(evolve(particles()), 1000)).id, 243,\n", - " len(nth(map(remove_collisions, evolve(particles())), 1000)), 648)" + " len(nth(map(remove_collisions, evolve(particles())), 1000)), 648)\n", + "day(21, sum(flatten(repeat(5, enhance, grid))), 147,\n", + " sum(flatten(repeat(18, enhance, grid))), 1936582)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "And here is a plot of the time taken to program solutions to both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, the times are estimates, not exact (these include days 1, 3, 8, 13, 14, 17, 18)." + "And here is a plot of the time taken to program solutions to both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, the times are my estimates, not official times (these include days 1, 3, 8, 13, 14, 17, 18, 21)." ] }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 104, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nSUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3238,9 +3623,9 @@ "\n", "x = None\n", "plot_times([\n", - " ('Me', 'd:', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50, 18),\n", - " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18, 21),\n", - " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5, 7)])" + " ('Me', 'd:', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50, 18, 40),\n", + " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18, 21, 45),\n", + " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5, 7, 10)])" ] } ], From 269974a6f26155bde98a405aa837a5eb1a6d6dbb Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sun, 24 Dec 2017 22:39:24 -0800 Subject: [PATCH 41/55] Advent 2017 through Day 25 (the end) --- ipynb/Advent 2017.ipynb | 1416 ++++++++++++++++++++++++++++++--------- 1 file changed, 1115 insertions(+), 301 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 5cfd240..8acbe02 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -8,13 +8,15 @@ "\n", "Peter Norvig\n", "\n", - "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). This time, my terms of engagement are:\n", + "I'm doing the [Advent of Code](https://adventofcode.com) puzzles, just like [last year](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb). My terms of engagement are:\n", "\n", - "* I won't write a summary of each day's puzzle description. Follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to understand what each puzzle is asking. \n", - "* What you see is mostly the algorithm I first came up with first, although sometimes I go back and refactor if I think the original is unclear.\n", - "* I do clean up the code a bit even after I solve the puzzle: adding docstrings, changing variable names, changing input boxes to `assert` statements.\n", - "* I will describe my errors that slowed me down.\n", - "* Some days I start on time and try to code very quickly (although I know that people at the top of the leader board will be much faster than me); other days I end up starting late and don't worry about going quickly.\n", + "* You'll need to follow the links in the section headers (e.g. **[Day 1](https://adventofcode.com/2017/day/1)**) to understand what each puzzle is asking; I won't repeat the puzzle description.\n", + "* What you see is mostly the algorithm I came up with first, although sometimes I go back and refactor for clarity.\n", + "* I'll clean up the code a bit: adding docstrings, making variable names longer and more descriptive, adding `assert` statements.\n", + "* I will discuss any errors I made along the way; usually I won't show the erroneous code, just a description of what I did wrong.\n", + "* The way Advent of Code works is that you read the puzzle descriotion for Part One, but only when you correctly solve it do you get to see Part Two. This is typical in software development: you deploy some code, and then some new requirements arise. So it makes sense to program by creating small functions and data types that form a *vocabulary* for the domain at hand, and can be recombined to solve new problems in the domain.\n", + "* Each day's code should run in a few seconds; certainly less than a minute.\n", + "* There is a contest to see who can solve each day's puzzle fastest; I do not expect to be competitive.\n", "\n", "\n", "\n", @@ -28,7 +30,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "# Python 3.x Utility Functions\n", @@ -40,6 +44,7 @@ "import numpy as np\n", "import math\n", "import random\n", + "import time\n", "\n", "from collections import Counter, defaultdict, namedtuple, deque, abc, OrderedDict\n", "from functools import lru_cache\n", @@ -49,7 +54,6 @@ "from heapq import heappop, heappush\n", "from numba import jit\n", "\n", - "identity = lambda x: x\n", "letters = 'abcdefghijklmnopqrstuvwxyz'\n", "\n", "cache = lru_cache(None)\n", @@ -119,6 +123,8 @@ " # Why <= maxval rather than < maxval? In part because that's how Ruby's upto does it.\n", " return takewhile(lambda x: x <= maxval, iterable)\n", "\n", + "identity = lambda x: x\n", + "\n", "def groupby(iterable, key=identity):\n", " \"Return a dict of {key(item): [items...]} grouping all items in iterable by keys.\"\n", " groups = defaultdict(list)\n", @@ -179,11 +185,30 @@ " \n", "flatten = chain.from_iterable\n", "\n", - "def repeat(n, fn, arg):\n", - " \"Repeat arg=fn(arg) n times.\"\n", - " for i in range(n):\n", - " arg = fn(arg)\n", - " return arg\n", + "################ Functional programming\n", + "\n", + "def mapt(fn, *args): \n", + " \"Do a map, and make the results into a tuple.\"\n", + " return tuple(map(fn, *args))\n", + "\n", + "def map2d(fn, grid):\n", + " \"Apply fn to every element in a 2-dimensional grid.\"\n", + " return tuple(mapt(fn, row) for row in grid)\n", + "\n", + "def repeat(n, fn, arg, *args, **kwds):\n", + " \"Repeat arg = fn(arg) n times, return arg.\"\n", + " return nth(repeatedly(fn, arg, *args, **kwds), n)\n", + "\n", + "def repeatedly(fn, arg, *args, **kwds):\n", + " \"Yield arg, fn(arg), fn(fn(arg)), ...\"\n", + " yield arg\n", + " while True:\n", + " arg = fn(arg, *args, **kwds)\n", + " yield arg\n", + " \n", + "def compose(f, g): \n", + " \"The function that computes f(g(x)).\"\n", + " return lambda x: f(g(x))\n", "\n", "################ Making immutable objects\n", " \n", @@ -195,10 +220,6 @@ " \"Canonicalize these order-independent items into a hashable canonical form.\"\n", " typ = typ or (cat if isinstance(items, str) else tuple)\n", " return typ(sorted(items))\n", - "\n", - "def mapt(fn, *args): \n", - " \"Do a map, and make the results into a tuple.\"\n", - " return tuple(map(fn, *args))\n", " \n", "################ Math Functions\n", " \n", @@ -208,9 +229,9 @@ " \"Integer square root (rounds down).\"\n", " return int(n ** 0.5)\n", "\n", - "def ints(start, end):\n", + "def ints(start, end, step=1):\n", " \"The integers from start to end, inclusive: range(start, end+1)\"\n", - " return range(start, end + 1)\n", + " return range(start, end + 1, step)\n", "\n", "def floats(start, end, step=1.0):\n", " \"Yield floats from start to end (inclusive), by increments of step.\"\n", @@ -235,11 +256,19 @@ "\n", "################ 2-D points implemented using (x, y) tuples\n", "\n", - "def X(point): x, y = point; return x\n", - "def Y(point): x, y = point; return y\n", + "def X(point): return point[0]\n", + "def Y(point): return point[1]\n", "\n", "origin = (0, 0)\n", - "UP, DOWN, LEFT, RIGHT = (0, 1), (0, -1), (-1, 0), (1, 0)\n", + "HEADINGS = UP, LEFT, DOWN, RIGHT = (0, -1), (-1, 0), (0, 1), (1, 0)\n", + "\n", + "def turn_right(heading): return HEADINGS[HEADINGS.index(heading) - 1]\n", + "def turn_around(heading):return HEADINGS[HEADINGS.index(heading) - 2]\n", + "def turn_left(heading): return HEADINGS[HEADINGS.index(heading) - 3]\n", + "\n", + "def add(A, B): \n", + " \"Element-wise addition of two n-dimensional vectors.\"\n", + " return mapt(sum, zip(A, B))\n", "\n", "def neighbors4(point): \n", " \"The four neighboring squares.\"\n", @@ -260,9 +289,13 @@ " return sum(abs(p - q) for p, q in zip(P, Q))\n", "\n", "def distance(P, Q=origin): \n", - " \"Hypotenuse distance between two points.\"\n", + " \"Straight-line (hypotenuse) distance between two points.\"\n", " return sum((p - q) ** 2 for p, q in zip(P, Q)) ** 0.5\n", "\n", + "def king_distance(P, Q=origin):\n", + " \"Number of chess King moves between two points.\"\n", + " return max(abs(p - q) for p, q in zip(P, Q))\n", + "\n", "################ Debugging \n", "\n", "def trace1(f):\n", @@ -332,11 +365,15 @@ ], "source": [ "def tests():\n", + " \"Tests for my utility functions.\"\n", + " \n", " # Functions for Input, Parsing\n", " assert Array('''1 2 3\n", " 4 5 6''') == ((1, 2, 3), \n", " (4, 5, 6))\n", " assert Vector('testing 1 2 3.') == ('testing', 1, 2, 3.0)\n", + " assert Integers('test1 (2, -3), #4') == (2, -3, 4)\n", + " assert Atom('123.4') == 123.4 and Atom('x') == 'x'\n", " \n", " # Functions on Iterables\n", " assert first('abc') == first(['a', 'b', 'c']) == 'a'\n", @@ -353,7 +390,6 @@ " assert sequence((i**2 for i in range(5))) == (0, 1, 4, 9, 16)\n", " assert join(range(5)) == '01234'\n", " assert join(range(5), ', ') == '0, 1, 2, 3, 4'\n", - " assert multiply([1, 2, 3, 4]) == 24\n", " assert transpose(((1, 2, 3), (4, 5, 6))) == ((1, 4), (2, 5), (3, 6))\n", " assert isqrt(9) == 3 == isqrt(10)\n", " assert ints(1, 100) == range(1, 101)\n", @@ -363,9 +399,18 @@ " assert quantify(['testing', 1, 2, 3, int, len], callable) == 2 # int and len are callable\n", " assert quantify([0, False, None, '', [], (), {}, 42]) == 1 # Only 42 is truish\n", " assert set(shuffled('abc')) == set('abc')\n", + " \n", + " # Functional programming\n", + " assert mapt(math.sqrt, [1, 9, 4]) == (1, 3, 2)\n", + " assert map2d(abs, ((1, -2, -3), (-4, -5, 6))) == ((1, 2, 3), (4, 5, 6))\n", + " assert repeat(3, isqrt, 256) == 2\n", + " assert compose(isqrt, abs)(-9) == 3\n", + " \n", + " # Making immutable objects\n", + "\n", + " assert Set([1, 2, 3, 3]) == {1, 2, 3}\n", " assert canon('abecedarian') == 'aaabcdeeinr'\n", " assert canon([9, 1, 4]) == canon({1, 4, 9}) == (1, 4, 9)\n", - " assert mapt(math.sqrt, [1, 9, 4]) == (1, 3, 2)\n", " \n", " # Math\n", " assert transpose([(1, 2, 3), (4, 5, 6)]) == ((1, 4), (2, 5), (3, 6))\n", @@ -379,6 +424,7 @@ " assert X(P) == 3 and Y(P) == 4\n", " assert cityblock_distance(P) == cityblock_distance(P, origin) == 7\n", " assert distance(P) == distance(P, origin) == 5\n", + " assert turn_right(UP) == turn_left(DOWN) == turn_around(LEFT) == RIGHT\n", " \n", " # Search\n", " assert Astar((4, 4), neighbors8, distance) == [(4, 4), (3, 3), (2, 2), (1, 1), (0, 0)]\n", @@ -609,15 +655,15 @@ "data": { "text/plain": [ "[(0, 0),\n", - " (0, 1),\n", - " (-1, 1),\n", - " (-1, 0),\n", - " (-1, -1),\n", " (0, -1),\n", - " (1, -1),\n", - " (1, 0),\n", + " (-1, -1),\n", + " (-1, 0),\n", + " (-1, 1),\n", + " (0, 1),\n", " (1, 1),\n", - " (1, 2)]" + " (1, 0),\n", + " (1, -1),\n", + " (1, -2)]" ] }, "execution_count": 10, @@ -655,7 +701,7 @@ { "data": { "text/plain": [ - "(263, 212)" + "(263, -212)" ] }, "execution_count": 11, @@ -939,6 +985,7 @@ } ], "source": [ + "@jit\n", "def run2(program, verbose=False):\n", " memory = list(program)\n", " pc = steps = 0\n", @@ -970,8 +1017,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 6.2 s, sys: 8.37 ms, total: 6.21 s\n", - "Wall time: 6.21 s\n" + "CPU times: user 5.3 s, sys: 18.9 ms, total: 5.31 s\n", + "Wall time: 5.33 s\n" ] }, { @@ -1703,6 +1750,14 @@ "execution_count": 46, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 14 ms, sys: 209 µs, total: 14.2 ms\n", + "Wall time: 14.3 ms\n" + ] + }, { "data": { "text/plain": [ @@ -1751,7 +1806,7 @@ "\n", "assert knothash2('') == 'a2582a3a0e66e6e86e3812dcb672a272'\n", "\n", - "knothash2(stream2)" + "%time knothash2(stream2)" ] }, { @@ -1767,7 +1822,7 @@ "source": [ "# [Day 11](https://adventofcode.com/2017/day/11): Hex Ed\n", "\n", - "The first thing I did was search [`[hex coordinates]`](https://www.google.com/search?source=hp&ei=Ft4xWoOqKcy4jAOs76a4CQ&q=hex+coordinates), and the #1 result (as I expected) was Amit Patel's \"[Hexagonal Grids](https://www.redblobgames.com/grids/hexagons/)\" page. I chose his \"odd-q vertical layout\" to define the six directions as (dx, dy) deltas:" + "The first thing I did was search [`[hex coordinates]`](https://www.google.com/search?source=hp&ei=Ft4xWoOqKcy4jAOs76a4CQ&q=hex+coordinates), and the #1 result (as I expected) was Amit Patel's \"[Hexagonal Grids](https://www.redblobgames.com/grids/hexagons/)\" page. I chose his \"odd-q vertical layout\" to define the six headings as (dx, dy) deltas:" ] }, { @@ -1778,14 +1833,14 @@ }, "outputs": [], "source": [ - "directions6 = dict(n=(0, -1), ne=(1, 0), se=(1, 1), s=(0, 1), sw=(-1, 0), nw=(-1, -1))" + "headings6 = dict(n=(0, -1), ne=(1, 0), se=(1, 1), s=(0, 1), sw=(-1, 0), nw=(-1, -1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now I can read the path, follow it, and see where it ends up. If the end point is `(x, y)`, then it will take `max(abs(x), abs(y))` steps to get back to the origin, because each step can increment or decrement either `x` or `y` or both." + "Now I can read the path, follow it, and see where it ends up. From there, we have to compute how far we are from the origin: I can use my `king_distance` function for that—the number of moves a Chess King would take." ] }, { @@ -1809,10 +1864,10 @@ "\n", "def follow(path):\n", " \"Follow each step of the path; return final distance to origin.\"\n", - " x, y = (0, 0)\n", - " for (dx, dy) in map(directions6.get, path):\n", - " x += dx; y += dy\n", - " return max(abs(x), abs(y))\n", + " pos = origin\n", + " for dir in path:\n", + " pos = add(pos, headings6[dir])\n", + " return king_distance(pos)\n", "\n", "follow(path)" ] @@ -1846,11 +1901,12 @@ ], "source": [ "def follow2(path):\n", - " \"Follow each step of the path; return max steps to origin.\"\n", - " x = y = maxsteps = 0\n", - " for (dx, dy) in map(directions6.get, path):\n", - " x += dx; y += dy\n", - " maxsteps = max(maxsteps, abs(x), abs(y))\n", + " \"Follow each step of the path; return the farthest away we ever got.\"\n", + " pos = origin\n", + " maxsteps = 0\n", + " for dir in path:\n", + " pos = add(pos, headings6[dir])\n", + " maxsteps = max(maxsteps, king_distance(pos))\n", " return maxsteps\n", "\n", "follow2(path)" @@ -2119,6 +2175,14 @@ "execution_count": 60, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 515 ms, sys: 3.8 ms, total: 519 ms\n", + "Wall time: 519 ms\n" + ] + }, { "data": { "text/plain": [ @@ -2136,7 +2200,7 @@ " hash = knothash2(key + '-' + str(i))\n", " return format(int(hash, base=16), '0128b')\n", "\n", - "sum(bits(key, i).count('1') for i in range(128))" + "%time sum(bits(key, i).count('1') for i in range(128))" ] }, { @@ -2151,7 +2215,9 @@ { "cell_type": "code", "execution_count": 61, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def Grid(key, N=128+2):\n", @@ -2213,6 +2279,14 @@ "execution_count": 64, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 512 ms, sys: 2.21 ms, total: 514 ms\n", + "Wall time: 515 ms\n" + ] + }, { "data": { "text/plain": [ @@ -2225,7 +2299,7 @@ } ], "source": [ - "flood_all(Grid(key))" + "%time flood_all(Grid(key))" ] }, { @@ -2246,8 +2320,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 15.1 s, sys: 26.4 ms, total: 15.1 s\n", - "Wall time: 15.2 s\n" + "CPU times: user 15.4 s, sys: 56.6 ms, total: 15.4 s\n", + "Wall time: 15.5 s\n" ] }, { @@ -2262,22 +2336,23 @@ } ], "source": [ - "@jit # This was the slowest solution; @jit helps a bit.\n", + "@jit\n", "def gen(prev, factor, m=2147483647):\n", " \"Generate a sequence of numbers according to the rules; stop at 0.\"\n", " while prev:\n", " prev = (prev * factor) % m\n", " yield prev\n", " \n", - "def judge(A, B, N=40*10**6, mask=2**16-1): \n", + "def judge(A, B, N, mask=2**16-1): \n", " \"How many of the first N numbers from A and B agree in the masked bits (default last 16)?\"\n", " return quantify(a & mask == b & mask\n", " for (a, b, _) in zip(A, B, range(N)))\n", "\n", + "\n", "def A(): return gen(516, 16807)\n", "def B(): return gen(190, 48271)\n", "\n", - "%time judge(A(), B())" + "%time judge(A(), B(), 40*10**6)" ] }, { @@ -2300,8 +2375,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 9.39 s, sys: 8.62 ms, total: 9.4 s\n", - "Wall time: 9.4 s\n" + "CPU times: user 10.2 s, sys: 47.2 ms, total: 10.2 s\n", + "Wall time: 10.3 s\n" ] }, { @@ -2574,7 +2649,9 @@ { "cell_type": "code", "execution_count": 74, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "class Node:\n", @@ -2670,14 +2747,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.35 s, sys: 5.54 ms, total: 1.35 s\n", - "Wall time: 1.35 s\n" + "CPU times: user 1.66 s, sys: 12.9 ms, total: 1.68 s\n", + "Wall time: 1.68 s\n" ] }, { "data": { "text/plain": [ - "<__main__.Node at 0x110c44be0>" + "<__main__.Node at 0x1171a9f98>" ] }, "execution_count": 77, @@ -2693,7 +2770,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Bad news! It takes over a second to do just 100,000 insertions, which means about 10 minutes for 50 million insertions. I did in fact try\n", + "Bad news! More than a second for just 100,000 insertions, which projects to over 10 minutes for 50 million insertions. I did in fact try\n", "\n", " spinlock2(N=50000000).find(0).next.data\n", " \n", @@ -2710,8 +2787,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.47 s, sys: 6.62 ms, total: 5.48 s\n", - "Wall time: 5.48 s\n" + "CPU times: user 5.63 s, sys: 20.1 ms, total: 5.65 s\n", + "Wall time: 5.66 s\n" ] }, { @@ -2943,7 +3020,9 @@ { "cell_type": "code", "execution_count": 83, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "diagram = Inputstr(19)\n", @@ -3024,7 +3103,7 @@ "source": [ "# [Day 20](https://adventofcode.com/2017/day/20): Particle Swarm\n", "\n", - "I'll create structures for particles, each will have fields for particle's number (`id`), position (`p`), velocity(`v`), and acceleration (`a`):" + "I'll create structures for particles, each will have fields for particle's number (`id`), position (`p`), velocity(`v`), and acceleration (`a`). I have `particles` as a function that creartes a collection, and not a collection in its own right, because I anticipate that I will want to mutate particles, so I'll need a fresh copy every time I want to do something with them." ] }, { @@ -3048,12 +3127,12 @@ } ], "source": [ - "def particles(lines=list(Input(20))):\n", - " \"Parse the list of particles.\"\n", + "def particles(lines=tuple(Input(20))):\n", + " \"Parse the input file into a list of particles.\"\n", " return [Particle(id, *grouper(Integers(line), 3)) \n", " for id, line in enumerate(lines)]\n", "\n", - "def Particle(id, p, v, a): return Struct(id=id, p=p, v=v, a=a) \n", + "def Particle(id, p, v, a): return Struct(id=id, p=p, v=v, a=a) \n", "\n", "particles()[:5]" ] @@ -3062,7 +3141,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I'm not quite sure how to determine what \"in the long run\" means, so I'll just interpret it as meaning \"after 1000 time steps.\" On each step we update velocity and position of each particle. At the end, we determine the id number of the particle closest to the origin. Note that `evolve` generates an infinite sequence of particles, and we use `nth` to pick out the 1000th generation." + "I'm not quite sure how to determine what \"in the long run\" means, so I'll just interpret it as meaning \"after 1000 updates.\" " ] }, { @@ -3082,24 +3161,19 @@ } ], "source": [ - "def evolve(particles):\n", - " \"Continually update particles, yielding them after each time step.\"\n", - " while True:\n", - " yield particles\n", - " for p in particles:\n", - " p.v = add(p.v, p.a)\n", - " p.p = add(p.p, p.v)\n", - " \n", - "def add(A, B): \n", - " \"Add two n-dimensional vectors.\"\n", - " return mapt(sum, zip(A, B))\n", + "def update(particles):\n", + " \"Update velocity and position of all particles.\"\n", + " for r in particles:\n", + " r.v = add(r.v, r.a)\n", + " r.p = add(r.p, r.v) \n", + " return particles\n", "\n", "def closest(particles):\n", " \"Find the particle closest to origin.\"\n", - " return min(particles, key=lambda p: sum(map(abs, p.p)))\n", + " return min(particles, key=lambda r: sum(map(abs, r.p)))\n", "\n", - "# Answer: the id of the particle closest to origin in the 1000th generation of `evolve`\n", - "closest(nth(evolve(particles()), 1000)).id" + "# Answer: the id of the particle closest to origin after 1000 updates\n", + "closest(repeat(1000, update, particles())).id" ] }, { @@ -3108,7 +3182,7 @@ "source": [ "**Part Two**\n", "\n", - "I can still use `evolve` unchanged, and I will add the function `remove_collisions` to eliminate particles that are in the same position as another particle. I use `map` to apply this to every generation. Note that `remove_collisions` both mutates the argument, `particles`, and also returns it. " + "I'll add the function `remove_collisions`, and now the thing we repeatedly do is the composition of `remove_collisions` and `update`. Also, instead of finding the `id` of the `closest` particle, now we just need to count the number of surviving particles:" ] }, { @@ -3129,14 +3203,19 @@ ], "source": [ "def remove_collisions(particles):\n", - " \"Mutate (and return) particles, keep only ones that have a unique position.\"\n", - " poscount = Counter(p.p for p in particles)\n", - " particles[:] = [p for p in particles if poscount[p.p] == 1]\n", - " return particles\n", + " \"Eliminate particles that are in the same place as another.\"\n", + " num_particles_at = Counter(r.p for r in particles)\n", + " return [r for r in particles if num_particles_at[r.p] == 1]\n", " \n", - "# Answer: remove collisions from every generation of evolving particles, \n", - "# select the 1000th generation, and say how many particles are in that generation.\n", - "len(nth(map(remove_collisions, evolve(particles())), 1000))" + "# Answer: number of particles remaining after collisions removed\n", + "len(repeat(1000, compose(remove_collisions, update), particles()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I got the right answer both times, so my assumption that \"in the long run\" means \"1000 updates\" turned out to work for my input data, but I feel bad that it is not guaranteed to work for all input data." ] }, { @@ -3145,41 +3224,52 @@ "source": [ "# [Day 21](https://adventofcode.com/2017/day/21): Fractal Art\n", "\n", - "First I'll create a `dict` of enhancement rules. I'll translate `'#'` and `'.'` pixels to 1 and 0, and represent a grid as a tuple of tuples (e.g. `((0, 0), (1, 1))`), so that it can be a `dict` key. I have to deal with rotations and flips; I could do that at lookup time, but it will be faster to do it at rule creation time:" + "Today looks like a complex one, so I'll break the code up into more chunks and have more test assertions than usual. I can identify the following important data types:\n", + "\n", + "- `Enhancements`: a `dict` of `{grid: larger_grid}` rewrite rules.\n", + "- `grid`: a square of 0-or-1 pixels, such as `((0, 1), (0, 1))`. The function `Pixels` translates text into this form.\n", + "\n", + "I define the functions `rotate` and `flip`; the puzzle descriptions says \"When searching for a rule to use, rotate and flip the pattern as necessary,\" but I'm going to be doing many searches, and only one initialization of the rule set, so it will be more efficient to do the rotating and flipping just once:" ] }, { "cell_type": "code", "execution_count": 89, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def Enhancements(lines):\n", - " \"Create a dict of {square: enhanced_square}\"\n", + " \"Create a dict of {grid: enhanced_grid}; include all rotations/flips.\"\n", " enhancements = {}\n", " for line in lines:\n", - " lhs, rhs = map(Key, line.split('=>'))\n", - " for r in range(4):\n", + " lhs, rhs = map(Pixels, line.split('=>'))\n", + " for rot in range(4):\n", " enhancements[lhs] = enhancements[flip(lhs)] = rhs\n", " lhs = rotate(lhs)\n", " return enhancements\n", - " \n", - "def Key(line): \n", - " \"Key('../##') => ((0, 0), (1, 1))\"\n", + "\n", + "def Pixels(text): \n", + " \"Translate the str '.#/.#' to the grid ((0, 1), (0, 1))\"\n", " bits = {'#': 1, '.': 0}\n", " return tuple(tuple(bits[p] for p in row.strip())\n", - " for row in line.split('/'))\n", + " for row in text.split('/'))\n", " \n", - "def rotate(key): return tuple(zip(*reversed(key)))\n", + "def rotate(subgrid): \n", + " \"Rotate a subgrid 90 degrees clockwise.\"\n", + " return tuple(zip(*reversed(subgrid)))\n", "\n", - "def flip(L): return tuple(tuple(reversed(row)) for row in L)" + "def flip(subgrid): \n", + " \"Reverse every row of the subgrid.\"\n", + " return tuple(tuple(reversed(row)) for row in subgrid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's test this on just the enhancement rules with 2x2 squares; with rotations and flips there should be 16 entries:" + "Let's test some assertions, and then look at all the 2x2 enhancement rulesfrom my input file; with rotations and flips there should be 24 = 16 entries:" ] }, { @@ -3214,6 +3304,10 @@ } ], "source": [ + "assert Pixels('../##') == ((0, 0), (1, 1))\n", + "assert rotate(((0, 0), (1, 1))) == ((1, 0), (1, 0))\n", + "assert flip(((0, 0, 1), (1, 1, 0))) == ((1, 0, 0), (0, 1, 1))\n", + "\n", "Enhancements('''\n", "../.. => .../.#./.#.\n", "#./.. => .../#../#..\n", @@ -3227,34 +3321,27 @@ { "cell_type": "code", "execution_count": 91, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "16" - ] - }, - "execution_count": 91, - "metadata": {}, - "output_type": "execute_result" - } - ], + "metadata": { + "collapsed": true + }, + "outputs": [], "source": [ - "len(_)" + "assert len(_) == 2 ** 4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Looks good; let's create my complete table. There should be 24 + 29 entries:" + "Looks good; let's create the complete `enhancements` for my data. There should be 24 + 29 = 528 entries:" ] }, { "cell_type": "code", "execution_count": 92, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "enhancements = Enhancements(Input(21))\n", @@ -3266,65 +3353,63 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now on each iteration we `enhance` the grid by first `expand`-ing it (looking up each `slice` in the `enhancements` rules) and then `stitch` the pieces together:" + "Now on each iteration we `enhance` the grid by first dividing it into pieces with `divide_grid`, then using my utility function `map2d` to apply `enhancements` to each piece, and then call `stitch_grid` to put all the pieces back together into a bigger grid:" ] }, { "cell_type": "code", "execution_count": 93, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def enhance(grid): \n", " \"Expand small pieces into bigger ones and stitch them together.\"\n", - " return stitch(expand(grid))\n", + " return stitch_grid(map2d(enhancements.get, divide_grid(grid)))\n", "\n", - "def expand(grid):\n", + "def divide_grid(grid):\n", " \"Slice the grid into d x d pieces and enhance each piece.\"\n", " N = len(grid[0])\n", " d = (2 if N % 2 == 0 else 3 if N % 3 == 0 else error())\n", - " return [[enhancements[slice(grid, r, c, d)]\n", + " return [[tuple(row[c:c+d] for row in grid[r:r+d])\n", " for c in range(0, N, d)]\n", " for r in range(0, N, d)]\n", "\n", - "def stitch(pieces): \n", + "def stitch_grid(pieces): \n", " \"Stitch the pieces back into one big grid.\"\n", " N = sum(map(len, pieces[0]))\n", - " return tuple(tuple(get(pieces, r, c) \n", + " return tuple(tuple(getpixel(pieces, r, c) \n", " for c in range(N))\n", " for r in range(N))\n", "\n", - "def get(pieces, r, c):\n", + "def getpixel(pieces, r, c):\n", " \"The pixel at location (r, c), from a matrix of d x d pieces.\"\n", + " # Use `//` to find the right piece, and `%` to find the pixel within the piece\n", " d = len(pieces[0][0])\n", - " row = pieces[r // d]\n", - " cell = row[c // d]\n", - " return cell[r % d][c % d]\n", - "\n", - "def slice(grid, r, c, d):\n", - " \"The d x d slice of grid starting at position (r, c)\"\n", - " return tuple(row[c:c+d] for row in grid[r:r+d])" + " piece = pieces[r // d][c // d]\n", + " return piece[r % d][c % d]" ] }, { "cell_type": "code", "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "((0, 1, 0), (0, 0, 1), (1, 1, 1))" - ] - }, - "execution_count": 94, - "metadata": {}, - "output_type": "execute_result" - } - ], + "metadata": { + "collapsed": true + }, + "outputs": [], "source": [ - "grid = Key('.#./..#/###')\n", - "grid" + "# Some tests\n", + "corners = Pixels('#..#/..../..../#..#')\n", + "pieces = [[((1, 0), \n", + " (0, 0)), ((0, 1), \n", + " (0, 0))], \n", + " [((0, 0), \n", + " (1, 0)), ((0, 0), \n", + " (0, 1))]]\n", + "\n", + "assert divide_grid(corners) == pieces\n", + "assert stitch_grid(pieces) == corners" ] }, { @@ -3335,7 +3420,7 @@ { "data": { "text/plain": [ - "[[((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0))]]" + "((0, 1, 0), (0, 0, 1), (1, 1, 1))" ] }, "execution_count": 95, @@ -3344,7 +3429,9 @@ } ], "source": [ - "expand(_)" + "# An extended test \n", + "grid = Pixels('.#./..#/###')\n", + "grid" ] }, { @@ -3355,7 +3442,7 @@ { "data": { "text/plain": [ - "((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0))" + "[[((0, 1, 0), (0, 0, 1), (1, 1, 1))]]" ] }, "execution_count": 96, @@ -3364,7 +3451,7 @@ } ], "source": [ - "stitch(_)" + "divide_grid(_)" ] }, { @@ -3375,8 +3462,7 @@ { "data": { "text/plain": [ - "[[((0, 0, 0), (1, 0, 0), (1, 0, 0)), ((1, 0, 1), (0, 1, 0), (0, 1, 0))],\n", - " [((1, 0, 1), (0, 1, 0), (0, 1, 0)), ((0, 0, 0), (1, 0, 0), (1, 0, 0))]]" + "((((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0)),),)" ] }, "execution_count": 97, @@ -3385,13 +3471,74 @@ } ], "source": [ - "expand(_)" + "map2d(enhancements.get, _)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0))" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stitch_grid(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[((1, 0), (0, 0)), ((1, 0), (1, 0))], [((0, 1), (0, 1)), ((0, 1), (0, 0))]]" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "divide_grid(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((((0, 0, 0), (1, 0, 0), (1, 0, 0)), ((1, 0, 1), (0, 1, 0), (0, 1, 0))),\n", + " (((1, 0, 1), (0, 1, 0), (0, 1, 0)), ((0, 0, 0), (1, 0, 0), (1, 0, 0))))" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "map2d(enhancements.get, _)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, "outputs": [ { "data": { @@ -3404,18 +3551,18 @@ " (0, 1, 0, 1, 0, 0))" ] }, - "execution_count": 98, + "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "stitch(_)" + "stitch_grid(_)" ] }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 102, "metadata": {}, "outputs": [ { @@ -3424,7 +3571,7 @@ "12" ] }, - "execution_count": 99, + "execution_count": 102, "metadata": {}, "output_type": "execute_result" } @@ -3437,12 +3584,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "That looks right; Let's try to solve the puzzle:" + "That looks right; Let's try to solve the whole puzzle:" ] }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 103, "metadata": {}, "outputs": [ { @@ -3451,7 +3598,7 @@ "147" ] }, - "execution_count": 100, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } @@ -3464,136 +3611,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "That's correct!\n", + "\n", "**Part Two**\n", "\n", - "It looked like I didn't need to change any code to do Part Two, just change the `5` to an `18`. I ran it, and got an answer in a few seconds—but the answer was wrong. I went back and carefully looked over my code, and realized there was a place in `expand` where I had swapped the order of `r` and `c` (the code there is fixed now). Apparently there is some symmetry over the first 5 enhancements that yields the correct answer either way, but that breaks down over 18 enhancements. (Also: if I had guessed that `sum(flatten(repeat(n, enhance, grid)))` would be used in both parts, I probably would have created a function for it. But I was guessing that Part Two would involve `enhance`, but not necessarily in the same way as Part One.)" - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1936582" - ] - }, - "execution_count": 101, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(flatten(repeat(18, enhance, grid)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# A Note on Reuse\n", + "Huh — It looks like I don't need to change any code for Part Two, just do `18` repetitions instead of `5`. \n", "\n", - "One interesting question about these two-part problems: how does the code in Part Two use the code in Part One? \n", - "Here are my answers:\n", - "\n", - "* **All new**: All the code for Part Two (except possibly reading and parsing the input) is brand new: \n", - "
Days 1, 2, 4, 7\n", - "\n", - "* **Reuse as is**: The major function defined in Part One is called again in Part Two (and some new code\n", - "is also written):\n", - "
Days 3 (`spiral`), 6 (`spread`, but `realloc2` is copy-paste-edit), 9, 12, 14 (`bits`), \n", - "15 (`A, B, gen, judge`), 16 (`perform`), 19 (`follow_tubes`), 20 (`evolve, particles`), 21 (`expands`, `gridsum`)\n", - "\n", - "* **Generalize**: A major function from Part One is generalized in Part Two (e.g. by adding an optional parameter):\n", - "
Days 13 (`caught`)\n", - "\n", - "* **Copy-paste-edit**: The major function from Part One is copied and edited for Part Two:\n", - "
Days 5 (`run2`), 8 (`run82`), 10 (`knothash2`), 11 (`follow2`), 17 (`spinlock2`), 18 (`step18`)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Wrapping Up: Verification and Timing\n", - "\n", - "Here is a little test harness to verify that I still get the right answers (even if I refactor some of the code):" - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 54.6 s, sys: 156 ms, total: 54.7 s\n", - "Wall time: 54.9 s\n" - ] - } - ], - "source": [ - "%%time\n", - "\n", - "def day(d, compute1, answer1, compute2, answer2):\n", - " \"Assert that we get the right answers for this day.\"\n", - " assert compute1 == answer1\n", - " assert compute2 == answer2\n", - "\n", - "day(1, sum(digits[i] for i in range(N) if digits[i] == digits[i - 1]), 1158,\n", - " sum(digits[i] for i in range(N) if digits[i] == digits[i - N // 2]), 1132)\n", - "day(2, sum(abs(max(row) - min(row)) for row in rows2), 46402, \n", - " sum(map(evendiv, rows2)), 265)\n", - "day(3, cityblock_distance(nth(spiral(), M - 1)), 475, \n", - " first(x for x in spiralsums() if x > M), 279138)\n", - "day(4, quantify(Input(4), is_valid), 337, \n", - " quantify(Input(4), is_valid2), 231)\n", - "day(5, run(program), 364539, \n", - " run2(program), 27477714)\n", - "day(6, realloc(banks), 12841, \n", - " realloc2(banks), 8038)\n", - "day(7, first(programs - set(flatten(above.values()))), 'wiapj', \n", - " correct(wrongest(programs)), 1072)\n", - "day(8, max(run8(program8).values()), 6828, \n", - " run8_2(program8), 7234)\n", - "day(9, total_score(text2), 9662, \n", - " len(text1) - len(text3), 4903)\n", - "day(10, knothash(stream), 4480, \n", - " knothash2(stream2), 'c500ffe015c83b60fad2e4b7d59dabc4')\n", - "day(11, follow(path), 705, \n", - " follow2(path), 1469)\n", - "day(12, len(G[0]), 115, \n", - " len({Set(G[i]) for i in G}), 221)\n", - "day(13, trip_severity(scanners), 1504, \n", - " safe_delay(scanners), 3823370)\n", - "day(14, sum(bits(key, i).count('1') for i in range(128)), 8316, \n", - " flood_all(Grid(key)), 1074)\n", - "day(15, judge(A(), B()), 597, \n", - " judge(criteria(4, A()), criteria(8, B()), 5*10**6), 303)\n", - "day(16, perform(dance), 'lbdiomkhgcjanefp', \n", - " whole(48, dance), 'ejkflpgnamhdcboi')\n", - "day(17, spinlock2().find(2017).next.data, 355,\n", - " spinlock3(N=50*10**6)[1], 6154117)\n", - "day(18, run18(program18), 7071, \n", - " run18_2(program18)[1].sends, 8001)\n", - "day(19, cat(filter(str.isalpha, follow_tubes(diagram))), 'VEBTPXCHLI', \n", - " quantify(follow_tubes(diagram)), 18702)\n", - "day(20, closest(nth(evolve(particles()), 1000)).id, 243,\n", - " len(nth(map(remove_collisions, evolve(particles())), 1000)), 648)\n", - "day(21, sum(flatten(repeat(5, enhance, grid))), 147,\n", - " sum(flatten(repeat(18, enhance, grid))), 1936582)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And here is a plot of the time taken to program solutions to both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. On days when I started late, the times are my estimates, not official times (these include days 1, 3, 8, 13, 14, 17, 18, 21)." + "Well, almost. Doing that gave an answer (in a few seconds); but the answer was wrong. I carefully looked over all my code, and realized there was a place where I had swapped the order of `r` and `c`. Once I fixed that (the fix is already incorporated above), I got the right answer:" ] }, { @@ -3601,11 +3625,801 @@ "execution_count": 104, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 5.35 s, sys: 90.8 ms, total: 5.44 s\n", + "Wall time: 5.44 s\n" + ] + }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAENCAYAAAAG6bK5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdcFEcbB/Df0lQQsWMXxW5MMGJJVDRKxN5QUQQRS6KJ\nFbtRIKhgRVBj7yX6mgjYo6JGLCiisWJFIErTSDvqHXfz/rFSTu64tnt3wHzfD583t7c787AeN7uz\nM88whBACiqIoqsIx0HUAFEVRlG7QBoCiKKqCog0ARVFUBUUbAIqiqAqKNgAURVEVFG0AKIqiKigj\nvgrOz8/HokWLEB8fDyMjI6xYsQKGhoZYvHgxDAwM0LJlS3h5efFVPUVRFKUAbw3AtWvXIJFIcOzY\nMdy6dQsbN26ESCSCh4cHbG1t4eXlhdDQUNjb2/MVAkVRFFUK3rqArKysIBaLQQiBQCCAkZERoqKi\nYGtrCwCws7NDeHg4X9VTFEVRCvB2B2BmZoZ3796hf//+SEtLw/bt2xEZGSn1vkAg4Kt6iqIoSgHe\nGoD9+/ejZ8+emDt3LpKTk+Hq6gqRSFT4flZWFqpVq8ZX9RRFUZQCvDUAFhYWMDJiizc3N0d+fj7a\ntWuHiIgIdOnSBWFhYejWrVuJ4+7du8dXSBRFUeVap06dVNqf4SsZXHZ2NpYuXYoPHz4gPz8fbm5u\naN++PZYtWwaRSARra2usXLkSDMNIHXfv3j2Vf4nyKiEhAQ0aNNB1GHqBnosi9FwUoeeiiDrfnbzd\nAZiamiIgIKDE9kOHDvFVJUVRFKUCOhGMoiiqgqINAEVRVAVFGwCKoqgKijYAFEVRFRRtACiKoioo\n2gBQFEVVULQBoCiKqqBoA0BRFFVBVZgGQCgUYvLkpRAKhbyUHx8fjzZt2sDV1bXEe0uWLEGbNm2Q\nlpbGS90URVHqqDANwNSpvjhwwB4//ODHWx2VKlVCTEwMEhMTC7fl5OTg/v37JVJeUFR5xffFFsWd\nCtEA7N0bjJMnbSAW90FIyJfYty+El3oMDAwwcOBAnDp1qnDbxYsX0adPn8LXV65cwZgxYzBy5Eg4\nOzvjwYMHvMRCUbqijYstihvlvgGIjo7BihUPkZ4+HACQnj4CPj4PEB0dw3ldDMNg+PDhUg1ASEgI\nHB0dAQBv377Fxo0bsWvXLgQFBcHHxwczZsxAbm4u57FQlC5o62KL4gZvyeC0wdtb8f///nsgYmNX\nSh0XGzsPc+YsR6dOAaUer4527drBwMAAUVFRqFmzJrKzs9GiRQsQQhAWFoYPHz5g4sSJKEjCamRk\nhLi4OLRu3Vr9SilKDxRdbHkDKLjY8oad3Vewtm6m2+AomcpFA1Daa1fX2bC3X4/Y2KI3raw2ICBg\nNqytSz9eXUOHDsXJkydRs2ZNDB06tHC7gYEBvv32W/j7+xduS0pKgqWlJTcVU5QOzZkj/2Lr9OmS\nmYEp3Sv3XUDW1s3g6WkDC4tgAICFRTA8PW14uSIpuKofOnQo/vrrL5w/fx5DhgwpfL9z5864efMm\n3rx5AwC4du0ahg0bhry8PM5joShtCwiYDSur9VLbCi62KP1Upu8AlOXuPhx//+2NI0eqYfjwR3B3\n9+KlnoKRPpaWlmjRogXMzc0Ll71kGAYtWrSAj48PPDw8AACGhobYtm0bKleuzEs8FKVN1tbN0LOn\nDZKSgpGbO4LXiy2KGxWiAQCAXbuWwsjIG9u2efNSfsOGDXH//v3C13v27JF6/9mzZwAABwcHODg4\n8BIDRena3LnDkZnpjVOn+L3YorhR7ruACpiYmGDPHl+YmJjoOhSKKrc6dgSOHVsKN7fL2Llzia7D\noRSoMA0ARVHaYWxsgqdPfZGbSy+29B1tACiK4sTmzcDBgwDDAPv3A6amuo6IUoS3ZwDBwcEICgoC\nwzDIy8vD8+fPceTIEfj6+sLAwAAtW7aElxftH6So8mLkSODTQDi0aaPbWCjl8HYHMGLECBw6dAgH\nDx5E+/btsWzZMvz222/w8PDA4cOHIZFIEBoaylf1FEVpWcOGQKNGuo6CUgXvXUCPHz/G69evMXr0\naDx9+hS2trYAADs7O4SHh/NdPUVROhATA3TpousoKEV4bwB27tyJmTNnlthuZmYGgUDAd/UURWlB\nYCDgVyz3W5MmwLlzuouHUg6vDYBAIEBsbCw6d+7MVmZQVF1WVlbhJKnyZMmSJdi3bx8AQCKRYNWq\nVRgwYAAcHBxw7Nixwv3i4uIwfvx4DBo0CGPGjCmcHZyZmQk3N7fC/eg6AlRZ8OOPwA8/FL02NARq\n19ZdPJRyeJ0IdvfuXXTr1q3wddu2bXH37l107twZYWFhUu8Vl5CQwFkMXuu98CTxSYntX9T/Ar/O\n/5Wzev79918EBATg2bNnsLS0REJCAkJCQvDy5Uvs3r0bWVlZ+Pnnn2FpaYnWrVtj1qxZGD16NPr0\n6YOIiAhMnz4d+/btQ1JSEh49eoSEhAQIBAIwDIOkpCRkZ2dzFmtZJBAIOP1clGX6fC4+Dys/HzDi\n8VtGn89FWcBrAxATE4PGjRsXvl60aBGWL18OkUgEa2tr9O/fX+ZxDRo04CwGh94O+D3kd2Q3LfoC\nNY01xfzv5nNaz549e+Ds7Izw8HBYWFigQYMGiIyMhLOzMxo2bAgAGDZsGG7duoV27dohPj4eLi4u\nAIDhw4dj8+bNSE9PR0BAAPLy8vDzzz9j8+bNIITg+PHjePDgAdLT0zFp0iSMHz+es7jLioSEBE7/\nvcoyfTsXQiFgbMwO/yzu+HG2G2j/fv7q1rdzoUvFF6JSFq8NwOTJk6VeW1lZ4dChQ3xWWYLjEEes\nP7Qed8gdgAFAgA6ZHTBy8EhO61m+fDkASD3YTkxMRP369QtfW1pa4uXLl0hKSkLdunWljre0tERS\nUhL8/PwwZMgQBAcHF17ZNGnSBJ6ennj27BmcnJwwduxYGBoacho/Ranr6FHgzh1g61bp7cOHA6NG\n6SYmSjllOheQ99/e7P/39i719XzX+XALcUN202wYxxhjwYQFYBhG4fGakkgkJbYZGBjI3F7wniyD\nBw8GwHahiUQiZGZmwsLCgpMYKUpTbm7AuHElt9OsK/qvbDcAn31Ry3tNCCm8C/g6++vCq39Fx2uq\nQYMGeP/+feHr5ORk1KtXDw0aNMCHDx+k9i14TxajzzpRC9JOU5S+kPdlLxKxXURmZtqNh1JOhUgF\nwTAM5rvOh/lV88Krf23o27cvTpw4AbFYjIyMDJw7dw729vawtLREkyZNcO7TOLnr16/D0NAQrVu3\nhpGRkdw7BIB++VP6JTMTSE+X//7ChUCxwW+UninTdwCqcBziiMh/Ijnv+y/NuHHj8PbtWwwbNgwi\nkQjjxo0rnAi3ceNG/PLLL9i2bRsqVaqEwMBAAECdOnXQtm1bDBw4EP7+/iUaK201XhSljBs3gP/9\nD/g08rkEf/+SD4cp/cEQPbukvHfvHjp16qTrMPQCHeFQhJ6LIvRcFKHnoog6350VoguIoijdiY8H\n6Kqn+ok2ABRFqSUjA4iKUrzf9OnAy5f8x0OpjjYAFEWp5eVLYMsWxfudOgV06MB/PJTqKsxDYIqi\nuGVry/5QZRe9A6CoCkAoFGLy5KUQCoVar1ssBiIjtV4tpQTaAFBUBTB1qi8OHLDHDz/4Kd5ZCQIB\n8Ndfyu1LCODhwU4Ko/QLbQAoqpzbuzcYJ0/aQCzug5CQL7FvX4jGZb5/D1y5oty+RkZAWBibMI7S\nL7QBoKhyLDo6BitWPER6+nAAQHr6CPj4PEB0dIxG5VpbA2vXchEhpUsVpgEghGDt4sW8p1IoviCM\nPI8fP4aXlxevcVAUAMyZE4jY2PlS22Jj52HOnECtxpGaCty8qdUqKSVUmAbgwokTSNy6FReDgngp\nPzo6Gm5ubvhLiY7RV69eITk5mZc4KKq4gIDZsLJaL7XNymoDAgJmq11mTg6wfbtqx7x/D/z5p9pV\nUjypEA0AIQQX1q+Hv0CAv9at4+Uu4Pfff4ejo6PUIjeRkZEYPXo0HB0dMWrUKFy6dAlJSUnYvHkz\n7t27h6VLl3IeB0UVZ23dDMuX2wAIBgBYWATD09MG1tbN1C5TIABSUlQ7pnVrYONGtaukeFK2GwBv\nb/ZHwesLJ06g/+PHYAA43L9fdBeg6HgVLF++HEOHDpXatmXLFri7u+PEiRNYtWoVbt++jXr16mHW\nrFno1KkTfH191aqLolQxadJwuLo+hKHhZQwf/gju7sM1Kq9uXYBeu5QPZXsi2Odf1jJeE0Jw4Ztv\n4P9pTV0HkQge69ah38iRYBQdr6EBAwbAx8cHV65cwbfffou5c+dyWj5FKWv37qUwNvbG1q3eSE0F\natTQfgzPnrF3D126aL9uSrayfQeghOJX/wC7KqTD48e8PQsozsnJCadPn0aPHj1w48YNDB06FJmZ\nmbzXS1HF5eYCEokJ9uzxxc2bJvjhB/XLEomARYuAUpaskOvff4FXr9Svm+KewjuA5ORkCAQCGBoa\nYteuXXB1dUXbtm21ERsnHt+8iUxbW4QXS0pOCEHVGzfg4OjIa91jx47F9OnTMXz4cNjb2+O7775D\nRkYGDA0NkZ+fz2vdFFXg1CngwgVgzx6gd2+gVy/1y8rLA5o3B+SsXloqBwf166X4obABmDdvHmbM\nmIHff/8dDg4O8PX1VXph9507d+LKlSsQiURwdnZG586dsXjxYhgYGKBly5ZaGQq5QIdPnhYuXIiV\nK1ciMDAQDMNgxowZaNCgATp27IiAgADMnDkTmzdv1ll8VMUwZgz7A6j3xV1c1arAjz9qHhOlHxQ2\nAAzDoHPnzti+fTsGDRqE48ePK1VwREQE/vnnHxw7dgzZ2dnYu3cv/Pz84OHhAVtbW3h5eSE0NBT2\n9vYa/xL6xM+vaKr9119/jSAZXU2NGzfGFWWnUVIUD/7+GzA3B7S99tKZM0CLFkCbNtqtl5JN4fVA\nfn4+1q1bB1tbW9y+fRsiJRN63LhxA61atcJPP/2E6dOno3fv3oiKiipcEtHOzg7h4eGaRU9RlEJp\nacDnPY7p6ex6vqqQSAAXF80Wd0lLAz6Nx6D0gMI7AD8/P9y8eROjR49GaGgo1qxZo1TBqampSEhI\nwI4dO/D27VtMnz5darFzMzMzCAQC9SOnKEopkycDM2ey/f8Fhg1TvRyxGBg5EqhUSf1YXFzUP5bi\nnsIG4ODBg/D09AQADBw4EAsXLsRaJZKAVK9eHdbW1jAyMkKzZs1QqVIlqdmvWVlZqFatmsxjExIS\nlI2/XBMIBPRcfELPRRFVz0XBYyZZhxCi2qLt3brJLkdX6OdCM3IbgCNHjmDbtm1IS0vDxYsXC7db\nW1srVXCnTp1w6NAhTJw4EcnJycjJyUG3bt0QERGBLl26ICwsDN26dZN5LF3kmUUXvC5Cz0URLs9F\n//5AYCA7U1dbfH2BGTMAOdd/KqGfiyKJiYkqHyO3ARg/fjzGjx+P7du3Y9q0aSoX3Lt3b0RGRmLU\nqFEghMDb2xsNGzbEsmXLIBKJYG1tLZU2gaIo7onFbNqGOnVkv79tG2BlpbgcQoABA4Dffwdq1tQs\nplq16NoA+kJhF9C1a9fUagAAYP78+SW2KTuElKIozSUlAYMHA//8I/v9ZiqkBPr1V25mENNhpPpD\nYQNgYWGBAwcOoFmzZjD4NIi4R48evAdGUZTmGjaU/+VfQCxm9yltfV+GAbp25TY2SvcUDgOtUaMG\nnj9/jvPnz+Ps2bM4e/asNuKiKEpL0tLYNFjqpHdQR2oqsGCBduqiSqfUMNDi3r9/z1swFEVxKy0N\nMDRkJ33JU6sWO0GrNN98Axw7BjRtqnlM5uZA27aqj0CiuKewAQgMDMTRo0chEomQm5sLKysrehdA\nUWXEwYPsAi6LFmlWTlAQYGnJTUxGRsCkSdyURWlGYRfQlStXEBYWhiFDhuDcuXOw5OpTQFEU72bN\nUv7L/9YtYMsW2e/Vr695HiFK/yj8J61Tpw5MTEyQlZWFpk2bKp0KgqKosqVRI+Crr0puFwq5r+vu\nXWDlSu7LpVSjsAGoV68e/vzzT1SpUgUbNmxARkaGNuKiKIoDb98qP+a+SROgZ8+S27/7DnjwgNu4\nGjcG+vThtkxKdQqfAfj4+CAxMRH9+/dHcHAwNmzYoI24KIrigIsLcOCAcpO9CgiF7IigypXZ13//\nzX33T7167A+lW3IbgA8fPmDv3r0wNTXF5MmTYWpqCldXV23GRlGUhq5dU/2YmTMBe3tg9Gj2tbEx\ntzFR+kNuu7548WI0adIExsbGWLdunTZjoihKhzZtYr/8hUIhnJ2XIieHh4cAAHbvBvbt46VoSkly\n7wBEIhHGjRsHAJg4caK24qEoiiPZ2cDHj2x/uyoK0j1PneqLY8fs8fGjHy5c4H71vr596d2Frsm9\nA2CKzdCQaGuKIEVRnImKUn/G7Z49wfjjDxsQ0gd37nyJfftCuA0ObB6iRo04L5ZSgdwGICcnB7Gx\nsXjz5g1yc3MRGxuLmJgYxMTEaDM+iqLUZGvLzt5VVXR0DFaufIicnOEAgPT0EfDxeYDoaPq3X97I\n7QKqVKkSli9fXuK/GYbBwYMHtRMdRVFaN2dOIGJjpQfpx8bOw5w5y3H6dACndU2eDLi7AzS/pG7I\nbQBo2maKKtvi44GqVQELC9WOCwiYjSdP1iM21rtwm5XVBgQEzOY2QADLl3OXYoJSHZ3cTVHl1I4d\nQLHF/JRmbd0Mnp42sLAIBgBYWATD09MG1tYqLB6gJCsroEoVzoullEQbAIoqp3x8isbyq8rdfTiG\nDXsIQ8PLGD78Edzdh3MbXDGE8FY0pYDCmcAAkJKSgtzc3MLXdA1Oiir/du1aCiMjb2zb5s1bHYQA\n1tZsqgku1gimVKOwAVi+fDnCw8NRu3ZtEELAMAyOqTO0gKIorXr8GGjfXv00DiYmJtizx5fboD7D\nMEBEROnrFVD8UdgAvHjxApcuXZKaF0BRlH6TSAA3Nzbrpr6rXVvXEVRcChuAunXrIisrC1WrVlW5\n8JEjRxYe16hRI0ybNg2LFy+GgYEBWrZsCS8v7mcXUhTFXvXfv6/rKJSXlSXErFlsd5OJiYmuw6kw\n5DYATk5OYBgGHz9+RL9+/dD403xyZbuAhJ+SiBefMzB9+nR4eHjA1tYWXl5eCA0Nhb29vaa/A0VR\nZdiLF0C3br4QCOwhFvth/356YagtchsAf39/AGxOIONiCTvS09OVKvj58+fIzs7G5MmTIRaLMXfu\nXERFRcHW1hYAYGdnh1u3btEGgKJ48N9/QGamammgdeXGjWAQYgOxuA9CQtKxb18Ir6OOqCJyHw+Z\nmJhAKBRi4cKFEIlEEAqFyM3Nhaenp1IFV65cGZMnT8aePXvg7e2N+fPngxQb72VmZgaBQKD5b0BR\nVAkREcCuXbqOQrGCtBPp6TTthC7IvQN4+PAhDhw4gJiYmMI0EAYGBuih5JxtKysrNG3atPC/q1ev\njqioqML3s7KyUE3OuK+EhASlf4HyTCAQ0HPxCT0XRZQ5FzY27I++n7Jp09YgNna91LbY2HmYNm0B\nDhxQfLFJPxeakdsA2Nvbw97eHteuXUOvXr1ULvjEiRN4+fIlvLy8kJycjMzMTHTv3h0RERHo0qUL\nwsLC0K1bN5nH0nkGrISEBHouPqHnokh5Ohfbty+CvX3JtBPbty9S6ncsT+dCU4mJiSofo3AUkKWl\nJRwdHZGcnIzatWvD19cX7dq1U1jwqFGjsGTJEjg7O8PAwACrV69G9erVsWzZMohEIlhbW6N///4q\nB0xRlGJRUUDDhqrnAdK2grQTc+cGIz19BK9pJygZiAIuLi7k2bNnhBBCoqKiiJOTk6JDNBIZGclr\n+WVJfHy8rkPQG/RcFFHmXPz8MyEREVoIhiMTJngRQ8NQ4ubmrdJx9HNRRJ3vToV3AIQQtGnTBgDQ\ntm1bGBkplT2Coigd2rJF1xGoZteupRCJvPHbb966DqVCUThJ3NDQEFevXoVAIMCVK1foJA2Kojhn\nYmKCt299kZBAv1+0SWED4Ovri+DgYIwbNw4nT57EihUrtBEXRVFqEgqBO3d0HYXqrl8HWrbUdRQV\ni8L+nIYNG2LTpk1ISEiAWCxGw4YNtREXRVFqSk0F1qwBgoJ0HQml7+TeAdy6dQtDhgzBxIkTERQU\nhDFjxmDSpEnYVRZml1BUBWZpWTa//HNzgbg4XUdRsZSaCmLz5s1IT0/HxIkTERoaCnNzc7i6umLq\n1KnajJGiqArg4UNg82bg8GFdR1JxyG0AqlSpAqtPiUTatm2LWrVqAWBTPFAUpb9iPmVRaFbGhtJ3\n7cr+UNojtwEonv+/+NBPQtdvoyi9duMGkJcHTJmi60j0y1zPubgfd1/qu40Qgq+bfo2NPht1GJnu\nyG0Anj59irFjx4IQgtevXxf+d3R0tDbjoyhKRa6uuo5AfXFxQNWqwKcOB051t+2One92IrtpduE2\n01hTzOo8i/vKygi5DcCpU6e0GQdFURS2bgX69AEcHLgv23GII9YfWo875A7AACBAh8wOGDl4JPeV\nlRFyGwA63JOiyqabN9lMoGZmuo5EdWvW8Fc2wzCY7zofY/8cC7G1GKZxplgwYUGFXu5WzeWiKYrS\nVzt2ABkZuo5CPzkOcYRtti29+v+ENgAUVc4cPAjUr6/rKNQjEvE7i5lhGMyfMB/mV80r/NU/oEQD\n8PLlSzg7O2Pw4MHYuXMnrl69qo24KIqqgPLzgWXLAL4GG37I+oAhA4fgpz4/Vfirf0CJBmDVqlXw\n8/NDjRo1MGrUKGzevFkbcVEUpYbUVCA8XNdRqK9KFeDSJYCvC/MVYStw6sUprPZaXeGv/gElcgEB\nQNOmTcEwDGrWrAmzsvhkiaIqiIQE4MQJ4JtvdB2Jfto0YJOuQ9ArCu8ALCwscOzYMeTk5ODs2bNy\n1/GlKEr32rcH1q9XvJ8+i4kBnj/XdRQVg1LpoN+9e4caNWrgyZMnWLVqlTbioqhyTygUYvLkpRAK\nhboORa9ERAC3bnFfbnJmMpIyk7gvuAxT2AW0adMmjBkzBi1atNBGPBRVYUyd6osjR+whFvth/34v\nTsp88ACoWRNo0oST4lTCVaoFJyc+ogOuxFzBm9Q3+MXuF34qKIMUNgCdOnXCunXrkJWVhZEjR2Lg\nwIE0IRxFaWjv3mCcPGkDsbgPQkLSsW9fCNzdh2tc7vXrQKtWumkA9D3VwrgO43Qdgt5R2AXk4OCA\nHTt2wN/fH9evX0ePHj2ULvzjx4/o3bs3YmJi8O+//8LZ2RkuLi749ddfNQqaqliEQiE8PNaUm66S\n6OgYrFjxEOnp7Bd+evoI+Pg8QHR0jMZlz5zJTxoFZTgOcUQHQQegYAinBpOtzpwBcnK4ja8A7Xor\norABSEhIwG+//YapU6eicuXKSi8Ik5+fDy8vr8K7BT8/P3h4eODw4cOQSCQIDQ3VLHKqwpg61Rd/\n/jkUP/zgp+tQODFnTiBiY+dLbYuNnYc5cwJ1FBE3ClItmP5rCgAapVo4dw5IS+MuNkGeABHxEQDY\nz9OBA/bl5vOkCYUNwMyZM1GrVi0cOXIEfn5+6Nixo1IFr1mzBuPGjUPdunVBCEFUVBRsbW0BAHZ2\ndggvy4OVKa0p6irpi5CQL7FvX4iuQ9JYQMBsWFlJD9WxstqAgIDZGpcdEsJOptIVxyGOqP6uusap\nFrZu5XY289uMtzjw4MBnXW/l4/OkCbkNQExMDGJiYrBu3Tp07doVHz58KNymSFBQEGrVqoXu3bsX\nrh8gkUgK3zczM4NAIOAgfKo847OrRJesrZvB09MGFhbBAAALi2B4etrA2lqzFVwkEuDIEcBAhwle\nLsdcRs/veqLq1ap6lWqhXZ128Ggzv1x+njQh9yGwp6cnAPa2rvgiMAzD4ODBg6UWGhQUBIZhcPPm\nTbx48QKLFi1Campq4ftZWVmlzidISEhQ+hcozwQCQYU+F9OmrUFsrPSVcmzsPEybtgAHDnjqKCrN\n5eQwEArt8P33qxEUZA57+9twcJit9L91aZ+LwEAgSYcjHbPTszHm+zGonVIb3b7upvbnNzHRAK9e\nGcHOrvR+elX+Rsrr50kjRAkpKSnk4cOH5OPHj8rsLsXV1ZW8efOGTJs2jURERBBCCPH09CTnzp2T\nuX9kZKTKdZRX8fHxug5Bp16/fkOsrLwImxmG/bGy8iKvX7/RdWgaiYkhZNkyQvLy8kjDhkvIv//m\nqXR8RfhcPHpEyJo1ivdT9lyciDpBnr18US4/TwXU+e5UeLN4/vx5jB07Ftu3b4eTkxNOnjypVkOz\naNEibNq0CWPHjkV+fj769++vVjlUxcFXV4muWVkBK1YAJiYmePfOF40bm3BSbmwscPs2J0VprN+h\nfviQ9UHt4zt0ABYu5CYWoViIoGdBaNWiRbn8PGlEUQsxZswYkpmZSQghRCAQkJEjR6reNKmA3gEU\nqQhXeoqIRISMH+9FDAwukW++8dZ1OHpB3uciLIyQwEAtB1PMq4+vyMprKwkhhDxKekTy8lW7s1GH\nqn8jZ84QMmyYFzE0DCVubuXr88TLHQDDMIUJ4KpWrYpKlSrx3ihRVIHHj4GYmKUYOPAsDh1aoutw\nNDZrFvDsWdHrjAzg3j1uyu7Zky1fV8yMzWBTzwYA0MGyA0wMNbuzOXeOzQvEpQ8fgF9+WQo3t8vY\nubPsf540pXAmcOPGjbF69WrY2toiMjISTXQxxZCqsDp2BMLCTJCcvAANGnDTVaJLo0ezXUAF3r0D\n9uwBOnXSWUicqW9eH4PMB3FW3tu3QIMGmpdzIuoEvm38Leqb18fEiQBggs6dfTUvuBxQeAfg5+eH\nxo0b49atW2jcuDFWrFihjbgoqpChoa4j4E7PnmzO+wLt2rFj3rlw+TKQmMhNWZpKyUlBh20dpEYQ\nqurHH9m1jTX1KuUVRBKR5gWVQ6U2AM+fP4eRkRFGjx6N5s2bw8TEBIbl6a+R0mtCIftgs4CTE/D0\nqc7C0UhODvv78CkiAvj4kd865CGEYMwfYyAUs79kjco1cH78ed0E85nFPRajiUUTXLjANpJUEbkN\nwL59+7CO6iClAAAgAElEQVR8+XLk5+dj7dq1uHXrFl68eAFfX3rrRGlHdDQwY0bR6xUrAGtr3cWj\niVOngNlyJvo+eQK8eqV5HUuWAF98oXk56hATMSZ8NaGw359hGDSq1kijiWAZGcC2bVxFyN55Fb/7\nokp5BvDXX3/h2LFjYBgGZ86cwcWLF1GtWjWMHTtWm/FRFVjbtmxSsAKtWukuFk05OQEj5WRFiIhg\nUzi3bKndmLhkZGCEwa0Gl9gulohhaKBer4GRkeZdWudfnUfNKjXRtVFX2NlpVlZ5JPcOwMzMDIaG\nhnj27BkaN25cOHNXkz49iqrIjI1lb580CRiuYSbonBzg2DHNyuDa9bjrGPj7QLWPNzUFfHw0i4F8\n+h8lm9wGgGEYxMTEIDg4GH369AEAxMbG0mcAlFbk5gJhYdLbkpLK5miZY8eAvDx+68jKYu8kdGXm\nuZm4n3hfalu3Rt1wetxpHUXEGthyILo16oabN4EdO3Qail6S2wDMnj0bCxcuRHx8PCZMmICIiAi4\nublhIVfT8yiqFImJwKFD0tvq1gXUnIiuM3l5wLVrikcyHT8OZGeXvk9patcG/P3VP15TU76eAusa\n0g9ojA2NNZ4LcPUq+6OpevXYEVeUNLnPAL788kv88ccfha9tbGwQGhoKY3n3sRTFoWbNgM+XnjAw\nABo10k086qpUSbkHmXfvAnZ2bLdHWfRVva9kbpcQCbJF2ahqUlWtcjVJJhqZEIkn759gos1EWFuX\n3QEEfFI4EayAiUnZn4RDlQ+EaPbFoI/WrdPs+H/+AcRi4NOSG3pjS8QWvM96j5V9Vqp1fO/e6tdt\nbmKO+lU5XFSgHNJh5nCKki07Gzh8WPZ7Bw9KDw3VZwEB0qOY+JSQwM6c1YXA24HYdlf2bc7MLjPV\n/vLXVOvareHQwgHPn+s2RYY+U6oBSEtLw6NHj5CSksJ3PJQO6NsaqWlp8sfFjxrFfrGWBf37A19+\nqdy+ycmajeIZNAgYMUL94zXh8qULRrSVXTkXC8IsX67Z85F69QBnZ43DKJcUNgDnzp2Dk5OTxumg\nKf2lb2ukNmgA/Pqr7PdMTeUPp9Q3bdoAyqbOys/nPvGZttQyrYV6VevJfT8lJwXpuelql9+4serL\nXP6X/R9mnGNvFatXB7p1U7v6ck1hA3DgwAEEBQVh69atCA4OVrgaGFW2lMU1UiUS3a57qwghQLqK\n33cNG7IzedV19ChQbNE9vbIybCWuxFxR+/gffgBKWUBQJhNDEwxoMUDtOisKmg66AtPHNXczM4FV\nq0rfx9ERuHRJO/Go4/lzYKD685/U8vQp+xBY28LiwjD6j9Gl7uPv4C+3i4gv1SpVw6BWg5CRAfTo\nwTbKVEk0HXQF5u4eiNhY6Qd0sbHzMGfOcpw+rZuO9rw8Ni1CaY4f1+9uoLZtgb//Vv24q1fZ9Ac9\ne6p+7ErdPGdF98bd0bZ2W17rePAACA8Hpk9X/VhTU2D79vI3aowrKqeDXqmrTxrFuT59ZsPSUnqR\nbCurDQgIkJO1TAtq1VL8h67PX/4F1IlRLNbNVbwmDA0MUcesjsL9HiY9RI4oR606qleXXkNBGaOO\nj0JqTiqMjHSXIK8sUNgA+Pr6Yvz48fD09MT48eOxdOlSbcRF8eSff4r+29u7Gfz8yuYaqWlpuo5A\ntrNn2VWn1GFvr96498RE9q5IF8QS5VqsDeEbEJcep1YdVlbAABW68wkhmG47HdUrV1ervopEbgNw\n5MgR9OjRA8ePH0ePHj0Kf5KTk7UZH8WhnBx2oW2BoGibu/twDBv2EIaGlzF8+CO4u2uYlUwDAgG7\nCIgiIhHbzSLSwzU+wsPZ86xN2dnsPABty8vPQ70N9SASK/6HODjiINrUbqOFqNjnln2b9wXAoG1b\n3a2RUCYoWjR427ZtKi80TAghYrGYLFmyhIwdO5Y4OzuTV69ekbi4ODJu3Dgyfvx44u0te0Fmuih8\nEXUWhc/LyyOTJi0heXnsgtz5+YQkJSk+ZvToJWTtWv4X8S6NQEDIyZOy3/v8XEgkWghIBZ+fd3X5\n+hLy4UPp+6jzueBLtjBbK/WsWUPIw4cltys6F4mJPAWkh3hZFH7atGlqNSxXrlwBwzA4evQoZs+e\nDX9/f/j5+cHDwwOHDx+GRCJBaGioWmVT8n0+pv/ECUDRGj4mJibYssUXjRvrNt1H1arA0KHK7atv\nD/W4mktRv37ZGrFSxVi5FVbyJfk4+/Ks2vV06sQ+H1LGz2d/xo1/bwBgJ4FR8vGWCsLe3r5w/eCE\nhARYWFggKioKtp+SldjZ2SE8PJyv6iskWWP6lZ05W7cuUJbW+snL05/1b/fuDcaJE9zMpZg4Eaij\n+JmqlIsXgceP1a5SbZnCTKXXBzFkDLH/4X7k5ueqVVffvuxcCWXM+3YeOtTtoJddhPqG11xABgYG\nWLx4MVauXInBgwdLfVjMzMwgKN4ZTWlE3pj+mJgYvbtaliU9nU2doOzV77VrbIoAXSs471lZuptL\nkZrKrgegbSP/NxK33t5Sal+GYfDH6D9Q2agyz1EBzWs0h0VlC3z/PZtllZKPIQqa8Fu3biE/Px+E\nEKxYsQKzZ8/GkCFDVKrk48ePGDVqFLKzs3Hnzh0AwOXLlxEeHo5ly5ZJ7Xvv3j3Ur08z+AGAQCCA\nubm5Uvu6ufkgNHQ9gOJpdwWwt1+AAwc8lSojLMwE//5rBBcXDRKvqEkoBKKijGFjI/uyTZVzoU1c\nnPfiEhIMcPSoGebNk39xpC/nghB2tS0Dhv+cku/fG2DDBnOsWSM9xbq0c5Gfz3YVVpQ1rBITE9FJ\n1RWTFD0kGDVqFImLiyOTJk0i79+/J87Ozko9XAgJCSE7duwghBAiEAhInz59yKRJk8idO3cIIYR4\nenqSc+fOlTiOPgQuosrDvtev3xArKy/CXkOzP1ZWXuT16zdKl/HqFSEREepEyj99evBZHBfnvbj0\ndEKOHi19H309F4r8l/UfCYoKUuvYnBxCzp4tuf3zc7Hu5jrif8tfrTrKOl4eAleuXBm1atWCkZER\n6tSpo3R2v379+iEqKgouLi6YMmUKli1bBk9PT2zevBljx45Ffn4++vfvr1prRcllbd0Mjo42MDVV\nf0x/ixZA5858Rci9+Hj1x9xzxdq6GaysNDvvxVWrpvqzmA0btD8kNiUnBdki1e4URRIRIhMi1aqv\ncmXl0mv81PknTPhqAlJSyt6kOl1QmAqiatWqmDJlCpycnHDkyBHUVDRP/5MqVaogQMbTx0Ofr/NH\nccbNbTiePvXGpUvVPo3p99J1SEpJSwO6dweePFFtdM+uXWy65ZEj+YtNGefPD8ekSd44flz7510i\nYRtBI6WXduLGvn/2gWEYeHzjofQx9arWw6q+ChI9acjU2BSmxqaYvYS9mHFx4bW6sk/RLUJeXh55\n9eoVIYSQFy9eaDzOWRHaBVSEi3kAqtq4kZDgYLUOVZtEQsi7d6Xvo+/dHlzNAyCEkD//LL0bSN/P\nBV/27CHk99+ltxU/F2KJmEiKTRDRt7kifFPnu1PhdUNqaiq2b9+OlJQU9O/fHzk5OfjqK9nrf1K6\nZ2Jigj17FAz8L0X//qqn3tUUwyg/xE/fpKez50vT815cmzbczQWY6zkX9+PuS3XdEkLwddOvsdFn\nIzeVqODJ+yeITonGsDbDVD62Rw+gtJVpL7+5jN/u/oaQseww3LIw+k3XFD4DWL58ORwdHSESiWBr\na4tVinL1Ujpx6BCwZ4/m5bRpwy7Iok256g0NBwBcv67bvt4FC7jPw9O+vfIJzJ48AUJKmXbQ3bY7\nIg0jca3ZtcKfSINI9OjcQ+34BHkCvEl9o9axYolY5WcHBVq1Kj0pnH1zexwZeQRJScB//6lVRYWj\nsAHIzc3FN998A4Zh0Lx5c7oegJ7q3Ruws9N1FKoTCABra/W/xAMDAV2uVLpjBzC69HT4vMrPZ4fQ\nyuM4xBEdBB2AgjsKAnTI7ICRg9V/cPL0w1OsvrFarWO/qvcVxnUYp3bdpWEYBmYmZjhzhr0gohRT\n2ABUqlQJ169fh0QiwYMHD2BS2j0YpTONGwMtW3JTlosLcP8+N2UpYm7OLoWo7ljtP/9UfeYslxgG\nMOBhGPy0acAbJS6ybWyAMWPkv88wDOa7zofpv6YAANM4UyyYsECjtXq7NeqGnUN2qn28ughhM6bK\nm/SWJWTfmDIFmDtXi4GVYQo/uitWrEBQUBBSU1Oxd+9e/CpvsVaq3PD2Btq10159ZfWaIjqaXcGM\nD66uQO3a3JQ1eMBgfJHxBSdX/1w4/eI0Lr+5rPJxDMPmtZK11kJ6bjpabWmldGoKiqWwAbh+/To2\nbtyIs2fPYtOmTbhyRf21PSl+rF4NbNnCXXktWrDjrrUhLk6zB56pqeqtvsWFrVuBW8plQlBZ9+7K\nPYw/eJBtiEpz/vV5GLY0hOElQ8weP1ujq38A+Dv2b0iIRO3jq1euDovKFmod26WL7AsGi8oWeDv3\nLd6/Z3SSF6mskjsK6MyZM7hy5Qru3LmD27dvAwAkEglevnyJCRMmaC1ASrGZM9V7kKrrESLZ2ezk\nnocPZY9jLx5fXl4eKlWqVCK+1FT2Iag6C6loasMG9Y7j8rwToni0y4i2IzBoxSB4rvLE2GGaZfzL\nEeVg7c216NW0l9pl9GyqxpqXSjBgDPD8OXtB0KEDL1WUO3IbgJ49e6JOnTpIS0uDk5MTADa5W+PG\njbUWHKUcMzP2R1Xdbbtj57udyG5aNCrDNNYUMzvNQvPm7BcznylnTE3ZxcxVjW9W51mFr5s3Vy7b\nqT5R5vd6+5btx/7zz9LLcnNTrk4TIxOs9lLvwW1xVYyr4Nz4cxqXo64LF4DQUGDdOuntCYIEWJpZ\nolcvQ/RSv22qcOR2AVlYWKBr165YuXIlGjVqhEaNGqFBgwYQ0/nVeiU3V/0uFHkjRByHjsTt22x+\nfl3iYwQLV27eBJKS1DtWmd/L0hJYvFjzON9nvceHrKJ8GVdjruLAgwOaF6whv+t+eJT8SOXjOndm\n73g/N+7EOMSkaS8Da3mh8BnA3Llz4eHhgTlz5mDUqFGYN2+eNuKilLRqlfpXwKWNEKlbl/+JNDdu\nlD78U9kRLA8esD/adPWq+sswMgyD/g79YfiGHfok6/cyMQE+LZ0hl0DAPv8pTeibUGyL3Fb4ur55\nfbSspf5wsSsxV/AxW/M1Frs26orapqo/5a5ZE2jSpOT2axOvoa5RC5w6pXFoFYsq04bT09PJrFmz\nVJ5urAqaCqKIMlP+JRJCNMk+IJFISBfHLgReIJ1GdJKaSi8Uql+uIrm5hDg4sEtWKoqv66iuBF4g\nXUd1lYqvQFAQ+6PviqcqyBfnk84jO5f6e8lT8LlITSUkMJCXUOVadGkRefXxlXYrLUXxv5E3bwhZ\nulSHwegYL9lAizM3N8fbt2/5aosoNTCMZsMoBUIBXtd8DfOr5ljivqTwKjQmBuAz40elSsBffyke\n/19wF1D1SlW549dHjGB/9N3UU1NxMfoiAMDQwBAL3RaiypUqGD10tMzfa98+YO1a+eVVrw7MmiX/\n/dLkS/LVOm61/Wq0qNlCvUo54uwMfBqXAgCISY1BWm4amjVj74gp5SnMBeTk5ASGYUAIQUpKCr75\n5httxKV3dD1iRpakJHaooKmp+mVUq1QNb7e8hY+fj1QftJWV9rtVZNl1bxeMGxvDrasbHld9jNbv\nW+OLukrmSeDJ//4HdO1aeloCWXy+80G9qkWL1DoOccThS4fRvXd3mfsPGqRZN9yT909gYmiCVrVa\nlXiv9/7e2DlkJ9rV0eKEj884HnfEnqF7UL1ydZWOW7OGXcK0wL4H+9Cpfie18gtVdAobAH9//8L/\nrlSpEmpzNTuljFFm5Ia27dnD/iFMnapZOaYmpljttRr3E+/ji7pfwMTQROM7C0WOHgUcHRXXMaDl\nAAjFQvSb2w8v8l6gjqnsab+HD7OJ7LTx8fz4kU3DrMiHrA+YdGoSgp2CYWRghIbVpDPeMQyDkM3y\nE/kU/5KT5fJlNhWEg4Ps9x8lP4KxgbHMBuD0uNOoUaWGwt+huNvvbqOyUWXY1LNR6Th55nSdg0qG\nqqeW+Xwgos93PpBIgI0bgdmz+ZmZXV4pbAAMDAxw5swZ5OXlFW6bMWMGr0HpI8chjlh/aD3ukDsA\nA70YkfLLL5odLxQLkSBIgFV1KwDAulvrsPK7lbCuaQ2A/ZJLTwdqqPY9oZBIxH55fRpdXKpG1RoB\nABJyEvBds+/k7peczKYI0EYD8NNPRf9d2p2h/6/+WG63HEYG/CTrr1KFbQDkce7gLPc9Vb/8ASA+\nIx5mJmqMN5aDy/kAOTlsTij65a8ahadr9uzZyMzMRO3atQt/KiI+cqroWnRKNGaeLxpTd9TxaOGX\nPwCcOgV4KL/eh9KMjYHduxX/sebl58ncTmSMe503D2jalIvoVCMr2+Yd5g56dO4BhmHQpWEXhWVc\njbmKbXe3yXxvyBDg3j3Zx337rWYJADOFmbj97rbiHT9xbOeI/i10v4rf69dsamgAiM+Mx/P/nsPM\nDFixQrdxlUUKGwAzMzPMnTsXY8eOLfypqDIaZYC8Jnpx9f/kCbskoiba1mmL0+NOy31/2DD2QSSX\nhEIhJk9eCmFpKSzBfsl33NER8RnSv+TZl2cx+dRkboNSwbp1wKtXRa9ljelvldpKpc9G0+pN0amB\n7MW8d+1S72H8uVfn8CCp9Ic4CYIE7PuH439gFfyX/R++OyD/rk4eKysgmF2BE08/PsWF1xe4DawC\nUdgAtGzZEmfPnsWbN28QExODmJiKO9liUKtB2DB9A8yvmuv86j80lJ+MnedencP7rPcA+JkHMHWq\nL/bvt8ekSX6l7scwDO79cK9Ev3lvq94I7B9YYv+0NLYPmG/Nm7OjbwowDINZ42ZJ3Rl6TfFS6bPR\nvEZzuXcK9erJX+5x9Wrg/XvZ7+WIchSO9GlVqxV2DNmhVIxvUt/g6OOjSu2rrFpVaiGwf6DKCdwW\n+MzFqPm90Htib+zYtAPB24PR7LtemLaApgBVlcLOyWfPnuHZs2eFrxmGwcGDB3kNSl9ZVrXEtLHT\nEPcyTuezUefM0ez4dxnvEJ8Rj66Nukptf5T8CFbVrVDXjH0CmZrK5pu3tNSsPgDYuzcYJ0/aQCLp\ngzNn0rFvXwjc3YfL3b+KcZUS2+T1QVeqBOTJ7jHilKNjyW01OtRAld+qILtJNi93hvLy/dSqxf7e\nMuNsJyNQDQjFQgjFpd+1qYphGHxp+aXKx8kakGEiNkXvb3Q3IKPM4nQmwicikYgsWLCAODs7k9Gj\nR5PLly+TuLg4Mm7cODJ+/Hji7e0t91h9nQhWMFEnLy+PjJsyizxLesZ7nXyu/Xoj7gZZd3Odwv02\nbiRk61bN63v9+g2xsvIi7NcZ+2Nl5UVev35TYt/03HTyKOmR1LbPz8WblJLH6dLxkOPE3M6c/Hnq\nT7WOf/nfS+JwyKHE9vh4Qlq2/Hwbt5+LXfd2kbDYME7L5JNEIiH1u7CTA+ENtSbTlUfqfHfKbQBm\nzpxJCCGke/fuJX4UOXHiBPH19SWEsLOHe/fuTaZNm0bu3r1LCCHE09OTXLp0ibNfQhsWXVpEdkTu\nIBMmeBHGZjHpMnMA73XK+0MPDSXk+XPeq+fU4MGzCSCQagCADDJ48OwS+96Nv0tmnJ0hta34uRCJ\nRaTj9o4kPTed97iL+/FH+eddIpGQRd6L1P4Syhfnk+iUaBnlEpKRIb1NUQOwMXwjuZdwT+m6r8Ve\n09ns3utx18nI/41U+bhD//uDmE40JfAGMZ1oqnbDW55w2gBoIjs7m2RlZRFCCElJSSF9+/YldnZ2\nhe+HhoYSHx8fmcfqawOQl59Htuw6QiwsgglAiIVFENm7N5jXOuX9oe/bR0h4OH/1Hn54uMQVuKZe\nv35DGjVS7g5AFmWuem/eJOTYMU0jle/WLUIyM6W3XY+7TpIzk/mrVIb4+HgSHU2Iv7/s9y9FXyLv\n0t9xVl++OJ8svLiQiCVizsoskC3MJinZKUrvn5yZTJIESVIpQhp/05U8flyxr/4JUe+7U+4zgCVL\nlsjtNvLzK/0BXpUqbN9tZmYmZs+ejblz52LNmjWF75uZmUEgEKjaW6VTb2PjsX7VS6SnewMA0tNH\nwMfHG3Z2X8HauplWY5k4UbPjr8Veg4RI5I6rNzMxg6FBUY6Gp0/ZZwCajAC2tm6GpUttsHBhMDIz\nR8DCIhienjacnjtzc7ZfnC+yJsFffnMZpsamhc9MNJUpzERVk5JpWIVC6UlzlSqVnBBVwL65vVp1\n50vyZc5ZEIqFaGzRGAYM94PsqxhXkfmsR57d93ejqUVTjP9yPDzGz8dkf3dM6L8AdeuW3eHYusQQ\nIvsR/JAhQ5Cbm4uhQ4eiY8eOUk/qe/ZUPIEjMTERM2bMgIuLC0aMGIHevXvj709LN12+fBnh4eFY\ntmxZiePu3buH+vXrq/nr8CM1NxWzf9yEy6EbAHz646z9HDD6CPsvDuHAAU9e6hUIBDDnISH/rYRb\nkBAJejTsodT+fn7m6Ns3D126aP4QcPbsAAQH98OIEZcQGDi7xPvnYs6huUVztKnZRmq7rHMRmRwJ\nc2NztK7ZWuO49IFYIsa3//sWlxwvoZpJ0XJg+/ebIi7OCF5eGQD4+Vxki7LxfdD3uOx4GZWNtLQc\nXDHyGh8A+JjzEbWqSLfsEgnQvr0lHF2mY8VS1UZdlVeJiYno1En2cGK5Srs9ePHiBVm3bh1xdXUl\nmzZtIrGxsUrdVnz48IEMGDCAhBfrp5g2bRqJiIgghLDPAM6dOyfzWH3sAvrpzE9k46UA6YeYbYJJ\n7e9GKt2FoQ5Z3R4HDxJy/z5vVfIm/VN3fV5eHpk0aQnJk5PC9PdHv5MnyU9KbJd1Lg4/PExCo0M5\njVOevn0JefmS/3qE+SVTsAqF7LOAAqV1h7mHuJPHyY/VqluVrhgubb6zmSy8uFDme3n5eaTD1g7k\nY/bHku/l8TtQoqzh9RlAREQEmTlzJhk9erTCfVeuXEm6d+9OXF1diYuLC3F1dSXPnz8nLi4uxMnJ\niSxdulTuwzJ9bAAIYR/yTZ8eTCwsgnT6DODkSUJevOC1WkIIOzLk9IvTnJXXvTshT5+qf7yyf+j+\n/oQ8eKB+PfK8fUuISFT0OluYTeZfmK+TkSfx8fHk0CFCbtwo+d7DpIckS5jFaX2//v2rzAfUXMkV\n5ZY4j7mi3ML/FolFnx9CCGEvJmxs5pGQEA3yoZcjnD4DKJCZmYlLly7hzJkzyMnJwdChQxXeVfzy\nyy/4RUaimkOHDql2e6JHJBIGYvFwDB7sjWPHqmHw4Edwd/fSehxKnP5SBdwOQKf6nRTmYbFtYItq\nlYq6IU6fBvr1kz/uXJGrV9kUEHzr0IH73EUA0KiR9GuRRIQv6n7BS9fDsw/P0LBaQ6nzn53NTggr\neA7QsKHs31OdcfXFJWUm4WP2R7Sv216qTFUzdipLVi6lj9kfITYSI+r3KACQ2zU0ZYovHj0agEOH\n/DBsmPb/FssFeS3D2bNnyc8//0xGjBhBtm3bRt6+fatR66QsfbsDeJz8mGTkFo3Dy8vLI926LSEL\nF+aRG3E3yLXYa7zVzcft7e23t0lcWpzKx/38MzsmnS9Zwiwy6MggmV0ghMg/F29S3pAloUv4C4yw\ni9do0/Qz00nEuwipbf36FY38kncuuLgbCYoKIoG3tbfKzB8n/yCm7uxwzoIf04mm5PCJw6Uet2dP\nEKlSRXsj8soCdb475T4EbtOmDZo3b442bdiHccVb6A0bNvDWIN27d0/1Bxk8mnV+Fpw7OKNbo26F\n20Qi9mrsSsxl5Evy4dBCTj5eDSUkJKBBgwaFr319gb592Vz0ZcXLl2yWxm7dSt9PJBbhTvwd9Ggi\n+8H05+eiQLYoGxejL2J4G/kzijX1xRfAmTOq5//nUvHZwPLOhc12G5wcexJNq+sgK56aCCH4Zsw3\nuNO+KMtu16ddEX48XO7dVXR0DOztDyA21rtwm5WVN0JD3bQ+Ik+fqPPdKbcBiIiIkHtQly6KMxyq\nS98aAAB48wY4dgxYulS79X7+h377NvslVK+e/GO4tOveLmTkZWDet+qvA33lChAXB7i7axaLvC+9\nz4lEwPjx7L8XV6mB8/LYrpeC76MtEVvAgMHPXX7mpgIVJSQkYOXKBggIkB4ampKTghqVa3DaLbXn\n/h7UMq3FawP756k/4Rbihuym2TCNNcXBkQfhOER+KoshQ+bgzJmVKByRBwAQYPDg5Th9Ws0FsssB\ntb47ub0J0Zy+dQERQkhCAiGnTklvy84m5LF6gy2UxnUX0IhjI1QaIZIoSCwcfZGdTcjevZyGUygv\nP09h94WicyGRSArLOHVK+oEt19Jy0jidaCVLxLsIcjf+buFrsZh9EE0IIW/fxpNdu6RHBnFt4cWF\nJEmQRJ4kP+F9lrAy6z4Xp0pakYqE9zWBK5pTL07hY/ZH1K/P5mUv7tUrYP16dp+zL8/qJkAVbei3\nAS1rtlR6/3pV66FmlZoA2Ae4//yj3EpYqtr3zz4sCl2kURn9j/TH4/ePAbD/VvIyaKoqLq7k72xR\n2aJEllKuJWYmFmZlBdhspwMHsv9tYABMmSKdIC4lJ4Wzuud6zsXZnWcxcvpI/LzwZ0zxmIJebr0w\n15OfbJsFa20om2XX2roZPD1tYGHB5oTmY1JhhcFDQ6QRfboDWHxpMYnPKP3K8867OyQynp+Yi1/1\nTp7MpjrQBXkPZkuTm0vIyJGE5OQo3lcikSgcuqjoDiAhI4HzIZkSCSFdurB3gAVkjUfXts/PRb44\nnzQLaMZZbiR5D2b5zLejTi6lCRO8iKHhJeLmJj+5ZEWiN7mANKFPDQAhhPj5EXLggG7qLv6HHhtb\nMimYKnJESnwTy3DgwQHy05mfVD5OJCLk8mW1qpRJle6wW7cIWbyYu7oLSCQSYrPdhsSmKjchki8n\nT2jBS+gAAB/gSURBVL4n27dLb+Oy8SveJaPP2Tbz8vKIk9MsuZMKKxraBcSDKVPY8e+y5OUB+/dr\nJ46mTdlcN+qQEAlabW6FtNw0lY8d034MNg3YBACIjQX27lXuOCMjoE8fxfs9SHqA3PxcleOSJS8/\nD4mCRLRsCYwbx0mRUhiGQeTUSK2NsnmU/Aib7mwqfJ2WBrx9C9SuLUEb6UwZnD74LSvLn5qYmMDf\nfxFMij8Jp1RCGwA51txYg5ScFNSuLX/UjbExuyrXzrv7cOzJMd5iEYs1O96AMcCrma/UmsxT2ahy\nYWI4I6PSFyEvkJ7OPppTxtqba/Eu453Kccly+NFh7Li3A7VrA19qNh8KABAWVnKRmeJJ8vhWq0ot\ntKjZovD1+fPsBYeVlRi9ehXtFxEfAQnh9uFM8aUudb38KcUjHu5ENKIPXUASiYSsv7mefExT7tby\n2YdnvCxQUtDt0a8f262hKyKxSOGzkOJmzWJzFnFJmS4gbrtBCBk6lBCBgH2dmpNK/o75m7PyNVH8\nXGTkZhD7g/a8pGr+4+QfGi1yow00F1AR2gXEEYZhMO/beejX1wQvXyrev03tNmhWg78RCCEhgK2t\nescSQvD8v+cqr7ta3MXoi/D+21vp/QMC+OmCUaR4F8WqVcDx45qUBZw8CVT9NNT83/R/cSFaPxYf\n37KlKh6zA55gXskcl1wv8ZKq2XGII37q8xO9+i/HaANQivBwoKUSoyZXrGD7ZvlSpYr6eXT+y/4P\nU09P1aj+gS0HYueQnQCAa9fYSValYRjFwzBTclKw9e5WjeKSJTc/F0cfH8X48cD333NX7peWX8K3\nry93BSopJScFfQ/2LWzAnzwBrKzyUacO/3UzDIPVXqv1ru+f4g5tAD4jIRKMOzEOOaIcGBvLXoz7\nc198AeyOWo9d93ZxHs+HD8r3p8tSx6wOrrtf5+yPuFYtQN6EXIEACApSrpwsYRYn8XzOyMAIYXFh\naNhYBDMzISZPXgqhUPV1DA4cYBOw6VqNyjWw/vv1ha+3bxfizz9XoGZNdpH23x//rsPoqLKONgCf\nkRAJnNo540Gk8qsUjRgB/PitM8a0H8N5PBMmAJGRnBersvTcdNx5dwdffAHY2cneJzkZhV0TijS2\naIyfOv/EXYCfGBkYYdvgbTA2NMbUqb44cMAeP/xQ+gp2nxOL2XNeMLjk4MODuBt/l/NYlcEwDDrW\n71jYgAsEvrhyZTB++MEPKTkpeJD0QCdxUeUDbQA+Y2RghE5VhyBAxZQiDcwbwKKyBWdxCIVCeHis\nQUiIUO3+/9ScVFyKvsRJPAmCBBx6VHo67xYtAC89ycq7d28wDh+2gVjcByEhX2LfvhCljhMKhfjh\nh6XYsEFY2I1Vx7SOVGpmXRCKhdizJwgnT9pALO6LkJAvcf6P21j7/VqdxkWVcVw/idaUPowCUseG\nDYQcOsTOyuQCO8sxVKNZjk/fPyXLryznJJ7itm8n5MIF1Y6Zs3wOsZtgR3q59SLNhzcn7Ue3J3YT\n7Mic5XOUOl6V0R4TZ7oTw441CFrZEDTtRdC0FzFu2ZSMmeyu8Fj2vF/Wu9mlbQPbkoZfzKL5bz5D\nRwEVoaOANJSWm4Zuu7upNWJm+HAg0mIJtkdu1ziOvXuDpa70lL16/Vy7Ou3g852PxvF8rlOnkg/H\np01j8yPJ0922OyINI3Gt2TW8sXmDp+2fItIgEj06K7cusSoe3U2GuFU24PwAcL8GuF+DqOMHPL5b\nlFvnt99KPrgvOu+q3TVog9Xl7xD/ZFXRhqqJiLWsgjlzAnUXFFXm0QagGHMTcyxoeQCXL6v+wLR5\nc2Clwy8a92tHR8dgxYqHSE9n0++mp4+Aj88DREfHaFQuF1JyUnD40WHY2gLNPhv1Om4cO1tZnuIT\niwDwOsHof4c2wySytlRdJvdq4NSJolm1JibSq5uNHBkDb2/p8+7tG4Gvf+sEoVj1h8hc2+w/H1ZW\nRQ+DYSBG7aq3ERAwW3dBUWUebQCKMTQwhKVha2Rmqnd8VZOqyM/XbLTNnDmBiI2dL7UtNnaeyld6\n9xPvI/hZsEaxfM6QMcSzD89kvterl3Ru+s8xDAOnoU6oEsc+XOczvUCLFs0xZYgz8OzTN/xzY0wZ\nMh4tWjQv3GfqVKBu3aJjEhIC8fat9Hn/9/ViVPu7HUwMdZ9qwNq6GWb/0hTV6rLPYSyYu1g7vmIv\ngEJpjtcG4OHDh3B1dQUA/Pvvv3B2doaLiwt+/fVXPqtVCyEEIrEIPXqw3TnqCA4G3KfkIVOoZgsC\nICBgtvSVHgArqw0qX+kxYDhPW2BR2QKr+rLdED/+CERFsUMllR1lWefLOmj0vpFW0gts8V+D2i/Z\nuwCLVxbY4r+61P2PHJF13v2xZzX3XWjqetv4CWxHnoehYSiGD38Ed3f+FmmhKgbeGoDdu3dj2bJl\nEIlEAAA/Pz94eHjg8OHDkEgkCA0N5atqtbxKeYVuexSsW6jAwIFADaeFGl15W1s3Q6NGNqhaVbNc\n5x3rd8TQ1hquIF+KH38ELC2F6N9/KebNU64FcPnKBb4/+iqd910TDMNg8/L1MD5vgh2/bAHDMBCJ\nRbjwWvZs3s9zzFerdRRLl7fXqyvsDQ4bcD5wP/q47EYzN11HQ5UHvDUATZs2xW+//Vb4+unTp7D9\nNJ7Rzs4O4eHhfFWtlla1WsEh/joeaDCsulIlYNOAALh+5apRLNu2DcewYQ+1dqVHCMHaxYuVevgt\nyBNg0aVF+PprwMPDF7du2SM9Xf44e59rPlKJ8rSZXsBphBM8Bs7FmBHs/Ix3Ge9w6sUpub+nu3vB\neb+ML8f+gSf1b/Aeo7Lmes5FL7de6PdDP6TkvEbIjhBeF2nRhCqfJ13Q9/i0irtBSCW9e/eOODk5\nEUII6dGjR+H28PBwsmDBApnH6HIY6LVrhPz3n2ZliMWEvOJgBT1Ncp3v+2cfCX4WrPT+5//4g8wx\nNyd//ak46ZdEIiHb7m4ju3b/QSwsgglAiIVFENm7V3Z9MakxJCNXg4UMPuFjuN/T909LDNvNy8sj\nkyYtIXl5eZwN6eWCLhZpUZcqnydNqfO50GZ82qTXw0ANiq3QnZWVhWrVdDuxprjc/FwkZybDzo5N\ndaCJxETAdcY7fMj6oNJxEgkQGAjkfkqNr0mu884NOqNdnXZK7UsIwYW1a+EvEOCvdesUXhUxDIPv\nazhg1conckcqvfjvReFzEKvqVjCvpOZCBjzzueaDqA9RUttMTEywZ48vTExMtJr6WRFtjqLSBMnM\nxIV585T+PGkbIQQX1q/X2/i0jaOVUxVr164d7t69i86dOyMsLAzdusnvb09ISNBWWACABx8eYPM/\nW7Cn326Ny2IYoNtPG3D20Vfo11TOSjIy5OQwePfODB8+ZMLw0/eOQCBQ+lx4rffCk8QnJbZ/Uf8L\n/Dpf/kP3v8+cQb8nT8AA+P7RIxzbvRu9Bg0qta5p09YgNlb6gWls7DxMm7YABw54IuBOAHo36o2e\nDXsqFbsyVDkXyvL/1h8Qs5+3X9b+gqeJT2FoYIgMYQbMjM1gyBgqPH/aNGnQJDy+9hjZVtkwjTPF\n5MGTkZiYqOuwpIQdPAiHxET28/T4sVKfJ02o8rkwCQvD1StX0O/xY63Fp/e4vQmRVrwLKCYmhri4\nuBAnJyeydOlSubnbddEFlJlJSOvWhAhVX/qWV6rc3qrTRSCRSMicrl2J5NPUUgnAvlaQV//5y5ek\nyuSWBIa5WpuVyveMT4/NHsRogpFed7EUX6pRH5doVPfzpAlVPheSBw/InHbttBqfNuldF1DDhg1x\n7FPuYCsrKxw6dAjHjh3DqlWr9CrFrJkZcPWq+imXP0cI8L//sd06iohEQAwHc7zU6SK4sGYN+t+/\nj4J/CQaAw+PHuKggpef2Q1tRO04EA6uOQNPeMLRuj/TmW+C1dbnmv4iOrP95PTpldfp/e+ceFmW1\n/fHvoJBy0bKDpT8M0MRLPWGAl7KUPBr4WBZQ3lLQg6Wdc1LwjjwiZYKlZSfT8nbShDBxIq+IWiIp\npKhxEYU8KqGiIHkdQBjmXb8/Xph3RgaYd+ZlLsz+PA/P48vsy2K75917rb3W2hZtYmm4qtH5F2fL\nuqKxrg5YsQJpSUkIrN9dA/Xz6cyZFudTq0HEh3xX8pln0y5cQGBxsej53pYxmQnIUilTlOGG4ga8\nu3lL1qZMBsizTqHPoK4Y4PlUs2XPnAG+/BJITDS2T/7lEJoSimqPar0CrfKvXIHi2WeRpXEeQ3l5\ncJbLERAS0mS9oX5DseHqBnAvVQE4DxWA6ssdEDg00Lg/wozIZDLMC52HsJ/CUOVeZbH34Ia8HoL0\nX9MtamECADg4ID8rCwo/P2Q1jBnHgVQqOB871ux8ajVkMqC6Grh3D3ByQv7x49rygT8TMJt8loD0\niohxmNoEdOD8UYo68KHk7a7OWk1HLh/Rq2xTGqi+6u3JqyepWlktjYng+vWmBapHsx/EwiQmCVMk\n/bJ0E0sDVpkA7e5d3kVOYhqNxZ07RIcPS96PNWBxJiBrQFYyDNe+j5G83YghEfD38G/yc03zkLGb\nzG9zvkVhRaFaC2gx0CozEzivO6UDnnyyRYEa+pFd4stZ6m5ZLHqPH4Pnww+BggL9ys6ZA+zZI2n3\nRISv4+K0PXnKy4HUVEn7adNIvgwZiTkOgVtro7dxI1FBge7Pli0j+vrr5usbstPjOI4Wxi5sfvea\nmNhyPucffyRKaTqWwNS7ZVPtevUaPzNjMRpAairR7dv6la2ulvyLlpqcTLOcnenAunVEt25J2rY1\nwjQAEdTW1iJo5nQcunDI6B14U1x22Isr1UU6P4uIAMaPN6xdIsK0XdNw8dbFRp/pdY/rpEnAqy24\nqLq78ylOm6Ct7pbZPbgiCAwEHn1Uv7IdOgiapQReD1Tvz/+FQoEDy5aBMjONbtMWsepD4MiYSJz5\n84zWl5WI4OPug9UfrW62TmHRnyi/0x4/5+7C8179m61jKH28b+FvrroTwzk7G96uTCbD9Oen46nO\nzR8wN+L6daBbN/3K+vi0WCTk9RCc+v1Uqx9IUr2q/9GaNRb7YiYirIyKwvz4eIuVURI2buRf5NOn\nG1af44CwMOD77wE3N8PaqKhAWny82uMo4O5dHHzwAAGGtWbTWLUGoHnJSMNPS5eMDPUbit/oBMpH\n/wlMvIj7gRX4jTvRKheThHqHwre7r9bvVqwwfAN0+bZQcehTQ2HfToTfKhG/8y/SrZE0SWUlf2ag\nA1PtltPkctzbutWi3fXS5HJcX7fOomWUhNGjgQAjXrV2dsDRo+Jf/hp2fiJC2vbteLWqCgAQUFXF\nonoNxKoXgKZ83/3/7o8tOVvU5W5V31I/D+jvA2R10aqDrL/Bu9/zrSLj9u3AV1/VIjx8MWpra+Hm\nZli6CRWnQuhPoSi9b2A0rEwGHD4M9Okjrl5xMR/UYCa0VH0L/ZKTZnqBFSssUkajafib3NyAHj2M\na6thw0AE/Pabfn0PHQqUlAAA0o4eReCdO8yfXwKsegFosEM7ljgCELxR6rg6XL8vhMgrVUr18/vv\nf4naG9FAUf3u+bwjaktWIDLyy0btS0Fxl81IyZyFrVtH4r334jF5MtBcGqSGrI/+U/0RMjcE/lP9\nMTxsOObFzkPG1Ax0d+luuDDtDMht88wzfJIiU8NxQEkJ0uRyQdXPybG8L3l1tbaMv/8uyFhaCpxt\nnJ6jATJhVkpD+lLXyczktUepuXEDWLkSUKkay5eXJ9wxKpPxm5D6hSf/+HFk+vkhdvhwRA0Zgtjh\nw5Hl54e8Y5aTvdVqMProWWLEnmTr441y5YrgglxUdIlcXWMIbvV+7G6Dyd09ptXSGMz6ajE5u69t\nMWtmA5JnfSwrI3rlFSKl0rD6migUxrehL8ePEzduXNOpBSorTSdLM3DBwRTRr59uGQ8fJoqPFwqf\nPEn088/qR0OzUpoqA6a6TnIyUXGx6D7F0Ei+jRuJ9u5tsZ7FeERZAIZ4AVn9AkBElCRPIvtBDrRd\nvl3n5yNHEp07Jzz/978p5Nh5PuF5F3LsPL/Fl7Kh/O9/l8jDY6k6X44+OXNuVd0i3yBfrSCrQSGD\nDHdL5LimfVHFUFVF1Lcv0T3jUzvrRKkk+ve/iRrSX3Mcpe7YQQccHUlzAFMdHenAqlVEI0a0jhwi\nSd26VbeMul606elEu3cTUX3enKefNigfjdiXHsdxFNG3r3ZfWVlEX3whFHromcvMpAh3d5Pky+E4\njiIGDDDJWLRlbNYNdP9P51GXH4z9u/jgpj17tGNODh4E+vUTnqdNexMhYztCVjgGb73hKOrCFRKh\nSo8KDkYxHQbc/dU/xXQYo4IFr5miiiIUlAvBNJ9nfY4h/kO0zFoLwhYYftAqkwH99UsN3SwdOwKn\nTgEuxqV21hq/6mr+BwDatweGDOHzygCATIb8zEzdqv7Vq8Du3UKj+iRdkpIdO/j0AgDyf/9dLWPD\nT5PmiOHDgddfB8AfGgdevWoS+3WaXI7AkhLtvrp31/b0eug5LScHgWVlppOvqIjZ8s2BxIuQ0Yhd\nxTZv/rHRxSQnTxK11IzmxR9iEKNKr1m/ljDBXsucgwnt6b24Geoy2/O3U2JeolY9SYKsCguJEhLE\n12tltMYvPJwPONODJnd6HMdrA0VFEkrZAsuWEV0y3GSoM2vmwIHExcXpFSyl96530iTizp4VnaHT\nlFk9je2LaQACNmcCMsTEYgzcsWONVenmynMc9RzmpWXO+b+Xn6Jd53e12FfyrmRyftlZtO2f4zj6\nZOFC4s6eJfrhB1F19WbOHKJTp4S+9PyycocOaZsVROTfbvaLXlKi88UpVr5mkfDll5qcrNts9O67\netXX+6WXk0Op27frb6JqSb5WuEHL2L7YAiBgyAJg1YFgERH/QXHxx1q/Ky6ei4iIJdiz5wvJ+0tL\nT0fg5cuCqrp5MwKaCYiRyWT4ZO5yTPhhElReSrT7wx7/mf85xvZt+bJ2Q7M+qv3RBw5EwLhxourq\nzfjxQJ8+2n2FhPBfX4VCMBOlpwNbtvA/qE/Hq2lW2L1bmiyMmm6J338PlJUBkZGN5TMUjgNGjOD/\nDg8PY6VtOiulk5MQzLR3LzB4MODqqn/Dly/z6Y9X1V/W4+2N/C1bRGfANGXWTJah08xIvAgZjUVp\nABxHtGMHUU2NblXV0ZG4FkxIHMfRoOBB/GFusLjDXIMO+ww8TBMLx3EUMWiQdl8nTxL5+wuF7t/n\nvZDIhKr+X38R/fGHVn+SjIURJh+DiI0lunhR50dNjsWDB/whswXnMZIapgEI2NwhcK9enoiJGYDO\nnVMAAJ07pyAmZgB69fKUrpPsbKC8XMvXG6gPPgFwsOG0ueEw8yFkMhnmh82HyxEXLJiq/2Eu6cp0\nqIviYnVmzzS5HIEFBaY7uKu/SlLdl58f8MsvQiFnZ6BrV6H8w+PXGjJ26QL07q3tm6/Zz83m72om\nzUPq9HQhAMpTwjmlD0uXCrmYKiqAc+fU8mnNi5QUIZjqkUf4Q+a2nIqCISlWvQAAvEfPG2/kol27\nn/Hmm3miPHp08uABf0sLwH+RPv0UcHPTCj7R6e0xYwawb5/OJkNeD8E/R/xTlDmnyfQH+fm8eaCB\n7GwgM1MdjfqqUgmgdcPj1X09HIoPNPnyaXH8TCFfdTUwcKDgaaRSaS9Y0DCh7dgBfPMNcOuW5PKJ\nJjdXHY3daF44OgIODmYUjmHVSKZ/SIQhaoyhHj06yc0lmj5dfL3KSqK6OuHZCDVcy3zx7LO8d0gD\np0/rPNy1poM7QxCj6jcrn+b/S1kZ0YQJ6keuooIiPD0t9q5Yyc1abQBmAhKwuUPgBuzt7dHHlYO9\niEt9STN7419/8X7uTk7Ac8/xGQ/F4ugo/DsjA9iwAUhIaNyXrh1ydTXfPwCcPYu0f/xDMOVcuoSD\nSqVwOOjjozNTJzu4E9Bbvq5dgaQk9WPazp2NfPMt4e9pQJdZy5LkY1gh0q5BzcNxHMXExND48eNp\nypQpVFJS0qiMIauYUWHuO3cS/etfRLtads3UG5WKd03U1ZdSSXTmjFD2yhUiLy/1I1dVpT7IbW0f\nbGuitXd6pvR9NwRLl89cMA1AwOLjAA4ePEiLFi0iIqKcnBx6//33G5UxJBdQhK+v9hfi5k2itWuF\nQg89c+XlFOHhIdRphbtK1X3V1VFEly5CX9XVREOHCuYijtMyHZnDvGINtPYX3dLH3dLlMxdsARCw\neBPQ6dOn8fLLLwMAvL29cbaZTIn6kiaXI/D8eW21eNgwoP4wFAD/ddF4TtuzB4HXrgl1UlJaTZVO\nS0lBYGWl0Ne+fQjQPPiUybSydGqaL2pqavDII49YlHmlrWJNZi02LxiSIfUq1BzR0dGUkZGhfn7l\nlVdI9dDuW8wqZohazMLcrRM2FgJsLATYWAhYfByAs7MzKisr1c8cx8HOznARDPEtN5k/uon7YjAY\nDLHIiEx3fdHBgwdx5MgRxMfHIycnB+vWrcOGDRu0ypw+fdpU4jAYDEabwtfXt+VCGph0ASAixMbG\noqj+Xtr4+Hh4mjrCksFgMBgATLwAMBgMBsNysPpUEAwGg8EwDIuJBNY0Dzk4OGD58uXooZnm18YI\nDg6Gs7MzAMDNzQ1xcXFmlsj05ObmYtWqVdi2bRtKSkqwaNEi2NnZoXfv3li6dKm5xTMpmmNx/vx5\nzJgxAx71qaknTpyI0aNHm1dAE1BXV4fFixfj2rVrUCqVmDlzJp5++mmbnBe6xqJbt27i54WEXkhG\noU+QmK1QU1NDQUFB5hbDrGzcuJFee+01Gj9+PBERzZw5k7Kzs4mIKCYmhg4dOmRO8UzKw2OxY8cO\n+vbbb80rlBmQy+UUV58X6+7du+Tv72+z80JzLO7cuUP+/v6UnJwsel5YjAmoNYLErJXCwkJUVVUh\nPDwcU6dORW5urrlFMjnu7u5Yu3at+rmgoAB+fn4AgGHDhiErK8tcopkcXWORnp6OyZMnIzo6GlX1\nWU/bOqNHj8bs2bMBACqVCu3atcO5c+dscl5ojgXHcWjfvj0KCgpw5MgRUfPCYhYAhUIBF40Lx9u3\nbw/O1Jd9WwgdOnRAeHg4Nm/ejNjYWMybN8/mxmLUqFFopxEhTRq+Ck5OTrh//745xDILD4+Ft7c3\nFixYgISEBPTo0QNr1qwxo3Smo2PHjnB0dIRCocDs2bMRGRlps/Pi4bGIiIjAc889h4ULF4qaFxaz\nAEgdJGbNeHh4YOzYsep/P/roo7jZwkUmbR3NuVBZWYlOnTqZURrzMnLkSPTv3x8AvzgUFhaaWSLT\ncf36dYSFhSEoKAhjxoyx6Xnx8FgYMi8s5g3r4+ODo0ePAgBycnLg5eVlZonMh1wux4oVKwAAZWVl\nqKyshKuYu2HbIP3790d2djYAICMjQ3TAS1siPDwc+fn5AICsrCw888wzZpbINFRUVCA8PBzz589H\nUFAQAKBfv342OS90jYUh88JivIBGjRqF48ePY8KECQD4IDFb5a233kJUVBQmTZoEOzs7xMXF2aw2\n1MDChQuxZMkSKJVK9OrVC4GBgeYWyWzExsZi2bJlsLe3h6urKz766CNzi2QS1q9fj3v37mHdunVY\nu3YtZDIZoqOj8fHHH9vcvNA1FlFRUYiLixM1L1ggGIPBYNgotr2tZDAYDBuGLQAMBoNho7AFgMFg\nMGwUtgAwGAyGjcIWAAaDwbBR2ALAYDAYNgpbABhWzcmTJ/Hiiy8iNDQUU6ZMwcSJE5GammpUm1Om\nTNGKQ6mtrcWIESOMajMqKgrHjh0zqg0GQ2osJhCMwTCUF154AZ999hkAoKqqCpMnT4anpyf69u1r\ncJv79u3DyJEjMXDgQACATCZroQaDYX2wBYDRpnB0dMSECROQlpYGLy8vxMTE4MaNG7h58yZGjBiB\nWbNmISAgADt37kSnTp2QlJSkzryqSXR0NJYsWYKUlBStRGxRUVEYM2YMXnrpJfz666/Yv38/4uPj\nMWrUKPj6+qK4uBiDBw+GQqFAXl4eevbsiU8++QQAkJiYiE2bNkGlUiEuLg49evRAQkIC9u7dC5lM\nhjFjxmDy5MmIiorC7du3cffuXWzYsEErSSKDISXMBMRoczz++OO4ffs2bty4gQEDBmDTpk1ITk5G\nUlISZDIZxo4di3379gEAdu/erc6loknfvn0RFBSkd0qS0tJSREZGIiEhAdu2bcM777yD5ORknD59\nGgqFAgCf72rLli2YPn06Pv30U1y8eBH79+9HUlISEhMTcejQIVy+fBkAr9UkJSWxlz+jVWEaAKPN\nUVpaiieffBKdOnVCXl4eTpw4AScnJyiVSgD8bWtz5syBn58fXF1d0aVLF53tvPvuu5g0aRIyMjJ0\nfq6ZReWxxx7DE088AYDXQnr27AkAcHFxQU1NDQCozUk+Pj5YuXIlLly4gNLSUoSFhYGIcP/+fZSU\nlAAAPD09JRgJBqN5mAbAsHo0X8QKhQLJyckIDAxESkoKOnfujJUrV2LatGl48OABAKB79+5wcXHB\nN998g5CQkCbbtbOzQ3x8vNZ1nA4ODurU3OfOnRMlW15eHgAgOzsbXl5e8PT0RO/evfHdd99h27Zt\nCAoKQp8+fdR9MxitDdMAGFbPiRMnEBoaCjs7O6hUKsyaNQseHh6oq6vD3LlzkZOTA3t7e3h4eKC8\nvBxdu3bFuHHjsHz5cqxatapRe5oHvp6enpg6dSq2bt0KAHj77bexePFi7NmzR333anNotpWbm4uw\nsDB1htdu3bphyJAhmDhxImpra+Ht7Y2uXbsaPyAMhp6wbKAMm+TAgQO4cOECPvjgA3OLwmCYDaYB\nMGyO1atX48SJE1i/fr25RWEwzArTABgMBsNGYSdNDAaDYaOwBYDBYDBsFLYAMBgMho3CFgAGg8Gw\nUdgCwGAwGDYKWwAYDAbDRvl/rNEo9OMigxQAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "1936582" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time sum(flatten(repeat(18, enhance, grid)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 22](https://adventofcode.com/2017/day/22): Sporifica Virus\n", + "\n", + "This one looks to be of medium difficulty. One important choice: since we are dealing with \"a seemingly-infinite two-dimensional grid of compute nodes,\" and I think it will be sparse, I'll represent the grid with a `set` of the positions of infected nodes, rather than with a 2-dimensional array. I'll define a `namedtuple` to hold the state of the network: the current position of the virus, its heading, the number of infections caused so far, and the set of infected nodes:" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "Net = namedtuple('Net', 'current, heading, caused, infected')\n", + "\n", + "def parse_net(lines):\n", + " \"Read the initial state of the network.\"\n", + " lines = list(lines)\n", + " current = (len(lines) // 2, len(lines[0].strip()) // 2)\n", + " return Net(current, UP, 0,\n", + " {(x, y) \n", + " for (y, row) in enumerate(lines) \n", + " for (x, node) in enumerate(row)\n", + " if node == '#'})" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Net(current=(1, 1), heading=(0, -1), caused=0, infected={(0, 1), (2, 0)})" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test = '''\n", + "..#\n", + "#..\n", + "...\n", + "'''.strip().splitlines()\n", + " \n", + "parse_net(test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the logic for one step of the simulation, called a *burst*:" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def burst(net):\n", + " \"Simulate the virus through one step and return the new state of the network.\"\n", + " (current, heading, caused, infected) = net\n", + " heading = (turn_right if current in infected else turn_left)(heading)\n", + " if current in infected:\n", + " infected.remove(current)\n", + " else:\n", + " caused += 1\n", + " infected.add(current)\n", + " return Net(add(current, heading), heading, caused, infected)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Net(current=(1, 0), heading=(1, 0), caused=5, infected={(0, 1), (-1, 1), (-1, 0), (2, 0), (1, 1)})" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We're supposed to get 5 infections caused in the first 7 steps:\n", + "repeat(7, burst, parse_net(test))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Net(current=(2, 0), heading=(0, -1), caused=41, infected={(5, -1), (3, 2), (-1, 0), (3, -3), (1, 0), (1, -2), (4, -2), (-1, 1), (2, -3), (5, 0), (2, 2), (0, -1), (4, 1), (1, 1)})" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# And 41 out of 70:\n", + "repeat(70, burst, parse_net(test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This testing revealed a problem: I had (yet again) messed up the order of (x, y). (I think it is confusing that we have two traditional orders: (x, y) and (row, col), and they are not the same.) After fixing that, I was\n", + "ready to solve the problem:" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5460" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "repeat(10000, burst, parse_net(Input(22))).caused" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "It looks like I can't re-use any of my code from Part One (except by copy-and-paste), because I want to replace my `set` of `infected` nodes with a `dict` of node `status`, which can be `I`, `F`, `C`, or `W`:" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "Net2 = namedtuple('Net2', 'current, heading, caused, status')\n", + "\n", + "def parse_net2(lines):\n", + " \"Read the initial state of the network.\"\n", + " lines = list(lines)\n", + " current = (len(lines) // 2, len(lines[0].strip()) // 2)\n", + " return Net2(current, UP, 0,\n", + " {(x, y): 'I'\n", + " for (y, row) in enumerate(lines) \n", + " for (x, node) in enumerate(row)\n", + " if node == '#'})\n", + "\n", + "def burst2(net):\n", + " \"Simulate the evolved virus through one step and return the new state of the network.\"\n", + " (current, heading, caused, status) = net\n", + " cur = status.get(current, 'C')\n", + " if cur == 'C':\n", + " heading = turn_left(heading)\n", + " status[current] = 'W'\n", + " elif cur == 'W':\n", + " # heading unchanged\n", + " status[current] = 'I'\n", + " caused += 1\n", + " elif cur == 'I':\n", + " heading = turn_right(heading)\n", + " status[current] = 'F'\n", + " elif cur == 'F':\n", + " heading = turn_around(heading)\n", + " status[current] = 'C'\n", + " return Net2(add(current, heading), heading, caused, status)" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "26" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Of the first 100 bursts, 26 will result in infection\n", + "repeat(100, burst2, parse_net2(test)).caused" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 21.2 s, sys: 38.9 ms, total: 21.3 s\n", + "Wall time: 21.3 s\n" + ] + }, + { + "data": { + "text/plain": [ + "2511702" + ] + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ready to answer Part Two\n", + "# (A little nervous about 10,000,000 repetitions, but I think it will be under a minute.)\n", + "%time repeat(10000000, burst2, parse_net2(Input(22))).caused" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I had another bug here that gave me the wrong answer the first time: I had put the \"`caused += 1`\" line under the condition where the status *was* `'I'`, whereas it actually belongs under the condition where the status *becomes* `'I'`.\n", + "\n", + "# [Day 23](https://adventofcode.com/2017/day/23): Coprocessor Conflagration\n", + "\n", + "Part One looks straightforward. I won't make the \"X might be an integer\" mistake again:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9409" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run23(program):\n", + " regs = {L: 0 for L in 'abcdefgh'}\n", + " pc = 0\n", + " mulcount = 0\n", + " while 0 <= pc < len(program):\n", + " op, X, Y = program[pc]\n", + " pc += 1\n", + " if op == 'set': regs[X] = value(regs, Y)\n", + " elif op == 'sub': regs[X] -= value(regs, Y)\n", + " elif op == 'mul': regs[X] *= value(regs, Y); mulcount += 1\n", + " elif op == 'jnz' and value(regs, X): pc += value(regs, Y) - 1\n", + " return mulcount\n", + "\n", + "run23(Array(Input(23)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Part Two**\n", + "\n", + "The hint of \"You'll need to **optimize the program**\" reminded me of a puzzle from 2016 where I had to understand what the program was doing and make it more efficient. It wasn't obvious what Day 23's program was doing, but I began the process of re-writing it as a Python program, converting the `jnz` instructions to `if` and `while` statements. Eventually I realized that the inner loop was doing \"`b % d`\", and my program became the following:" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 950 ms, sys: 3.65 ms, total: 953 ms\n", + "Wall time: 953 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "913" + ] + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "@jit\n", + "def run23_2():\n", + " a = 1\n", + " d = e = f = g = h = 0\n", + " b = 99\n", + " c = b\n", + " if a:\n", + " b *= 100\n", + " b -= -100000\n", + " c = b\n", + " c -= -17000\n", + " while True:\n", + " f = 1\n", + " d = 2\n", + " e = 2\n", + " while True:\n", + " if b % d == 0:\n", + " f = 0\n", + " d -= -1\n", + " g = d - b\n", + " if g == 0:\n", + " if f == 0:\n", + " h -= -1\n", + " g = b - c\n", + " if g == 0:\n", + " return h\n", + " b -= -17\n", + " break\n", + " \n", + "%time run23_2()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `numba.jit` decorator really helps here, speeding up execution from 13 seconds to 1 second. It also helped on Day 15, but not as dramatically, and was not able to help on Day 22.\n", + "\n", + "\n", + "# [Day 24](https://adventofcode.com/2017/day/24): Electromagnetic Moat\n", + "\n", + "First I will read the data and store it as a table of `{port_number: [all_components_with_that_number_on_either_side]}`. I also define two simple utility functions:" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [], + "source": [ + "def component_table(pairs):\n", + " \"Make a table of {port: {components_with_that_port}\"\n", + " ctable = defaultdict(set)\n", + " for pair in pairs:\n", + " ctable[pair[0]].add(pair)\n", + " ctable[pair[1]].add(pair)\n", + " return ctable\n", + "\n", + "ctable = component_table(map(Integers, Input(24)))\n", + "\n", + "def other_port(component, port):\n", + " \"The other port in a two-port component.\"\n", + " return (component[1] if component[0] == port else component[0])\n", + "\n", + "def strength(chain): return sum(flatten(chain))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are dealing with an optimization problem involving paths in a graph (called *chains* in this problem), and we're looking for the chain that maximizes `strength`. I'll represent a chain as a tuple of components. I could have defined a single function that traverses the graph and also keeeps track of the maximum, but I think it is cleaner to keep the two aspects of the problem separate. First a function to generate all possible chains:" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [], + "source": [ + "def chains(chain=(), port=0, ctable=ctable):\n", + " \"Given a partial chain ending in `port`, yield all chains that extend it.\"\n", + " yield chain\n", + " for c in ctable[port]:\n", + " if c not in chain: \n", + " # Extend with components, c, that match port but are not already in chain\n", + " yield from chains(chain + (c,), other_port(c, port), ctable)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And then asking for the strength of the strongest chain:" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.38 s, sys: 5.91 ms, total: 2.39 s\n", + "Wall time: 2.39 s\n" + ] + }, + { + "data": { + "text/plain": [ + "1695" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time strength(max(chains(), key=strength))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I was worried it was going to be slow, so I measured the `%time`, but it turned out not too bad.\n", + "\n", + "**Part Two**\n", + "\n", + "Now we want to find the strength of the longest chain, but if there is a tie, pick the strongest one:" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.45 s, sys: 3.48 ms, total: 2.45 s\n", + "Wall time: 2.45 s\n" + ] + }, + { + "data": { + "text/plain": [ + "1673" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def length_and_strength(c): return len(c), strength(c)\n", + "\n", + "%time strength(max(chains(), key=length_and_strength))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I think I made the right choice in defining things the way I did. My code is simple, and gets the right answers in a few seconds. But I realize there are some inefficiencies:\n", + "\n", + "- Calculating the strength of a chain is O(N), but since we always form new chains by extending an old chain (for which we know the strength) with one new component, calculating the strength of the new chain could be O(1).\n", + "- A chain is a `tuple`, so checking \"`c not in chain`\" is O(N). If the chain were a `set`, it would be O(1).\n", + "- A new chain is created by *copying* the previous chain and appending a new component. A more efficient approach is to *mutate* the chain by adding a component, and then removing the component when it is time to consider other possibilities. This is called *backtracking*.\n", + "\n", + "Here is a backtracking implementation. It keeps track of a single `chain`, `port`, and `strength`. A call to `recurse(best_strength)` returns the best strength, either the one passed in, or one found by adding components to the current chain. When `recurse` returns, `chain`, `port`, and `strength` are reset to their original values, and the best strength found is returned as the value of the call to `recurse`. This is indeed faster (and gives the same answer): " + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 635 ms, sys: 1.79 ms, total: 637 ms\n", + "Wall time: 637 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "1695" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def strongest_chain(ctable=ctable):\n", + " \"\"\"Return the strength of the strongest chain, using backtracking.\"\"\"\n", + " chain = set()\n", + " port = 0\n", + " strength = 0\n", + " def recurse(best_strength):\n", + " nonlocal chain, port, strength\n", + " for c in ctable[port] - chain:\n", + " # Update chain, port, strength\n", + " # then recurse and possibly update best_strength\n", + " # then backtrack and rest chain, port, strength\n", + " chain.add(c)\n", + " port = other_port(c, port)\n", + " strength += sum(c)\n", + " best_strength = max(strength, recurse(best_strength))\n", + " chain.remove(c)\n", + " port = other_port(c, port)\n", + " strength -= sum(c)\n", + " return best_strength\n", + " return recurse(0)\n", + "\n", + "%time strongest_chain()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can decide whether the saving in time is worth the complication in code." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 25](https://adventofcode.com/2017/day/25): The Halting Problem\n", + "\n", + "I won't write a parser for my input; instead I'll translate it into a `dict`:" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def machine():\n", + " \"machine()[state][value] == (new_value, move, new_state)}\"\n", + " L, R = -1, +1\n", + " A, B, C, D, E, F = 'ABCDEF'\n", + " return {\n", + " A: ((1, R, B), (0, L, C)),\n", + " B: ((1, L, A), (1, R, D)),\n", + " C: ((0, L, B), (0, L, E)),\n", + " D: ((1, R, A), (0, R, B)),\n", + " E: ((1, L, F), (1, L, C)),\n", + " F: ((1, R, D), (1, R, A))}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now a simple interpreter for machines like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4769" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def turing(machine, state='A', steps=12667664):\n", + " \"Run the Turing machine for given number of steps, then return tape.\"\n", + " tape = defaultdict(int)\n", + " cursor = 0\n", + " for step in range(steps):\n", + " tape[cursor], move, state = machine[state][tape[cursor]]\n", + " cursor += move\n", + " return tape\n", + "\n", + "sum(turing(machine()).values())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# A Note on Reuse\n", + "\n", + "One interesting question: for what days did my Part Two code reuse the Part One code? How so?\n", + "Here are my answers:\n", + "\n", + "\n", + "* **Total Reuse**: The major function defined in Part One is called again in Part Two:\n", + "
Days 3 (`spiral`), 6 (`spread`, but `realloc2` is copy-paste-edit), 9, 12, 14 (`bits`), \n", + "15 (`A, B, gen, judge`), 16 (`perform`), 19 (`follow_tubes`), 20 (`update, particles`), 21 (`enhance`),\n", + "24 (`chains`, `strength`)\n", + "\n", + "* **Generalization**: A major function from Part One is generalized in Part Two (e.g. by adding an optional parameter):\n", + "
Days 13 (`caught`)\n", + "\n", + "* **Copy-edit**: The major function from Part One is copied and edited for Part Two:\n", + "
Days 5 (`run2`), 8 (`run8_2`), 10 (`knothash2`), 11 (`follow2`), 17 (`spinlock2`), 18 (`run18_2`), 22 (`parse_net2`, `burst2`)\n", + "\n", + "* **All new**: All the code for Part Two (except possibly reading and parsing the input) is brand new: \n", + "
Days 1, 2, 4, 7, 23\n", + "\n", + "I think I did a reasonably good job of facilitating reuse. It seems like using generators and higher-order functions like `repeat` helps.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Verification and Timing\n", + "\n", + "A little test harness and a report on run times:" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Day 5: 5.1 sec\n", + "Day 15: 25.6 sec\n", + "Day 17: 5.8 sec\n", + "Day 21: 5.4 sec\n", + "Day 22: 21.2 sec\n", + "CPU times: user 1min 19s, sys: 262 ms, total: 1min 19s\n", + "Wall time: 1min 19s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "def run_tests(tests, short=5.0):\n", + " \"Run daily test assertions; report times > `short` seconds.\"\n", + " for day in sorted(tests):\n", + " t0 = time.time()\n", + " assert tests[day]()\n", + " dt = time.time() - t0\n", + " if dt > short: \n", + " print('Day {:2d}: {:4.1f} sec'.format(day, dt))\n", + " \n", + "run_tests({\n", + " 1: lambda: sum(digits[i] for i in range(N) if digits[i] == digits[i - 1]) == 1158 and\n", + " sum(digits[i] for i in range(N) if digits[i] == digits[i - N // 2]) == 1132,\n", + " 2: lambda: sum(abs(max(row) - min(row)) for row in rows2) == 46402 and\n", + " sum(map(evendiv, rows2)) == 265,\n", + " 3: lambda: cityblock_distance(nth(spiral(), M - 1)) == 475 and\n", + " first(x for x in spiralsums() if x > M) == 279138,\n", + " 4: lambda: quantify(Input(4), is_valid) == 337 and\n", + " quantify(Input(4), is_valid2) == 231,\n", + " 5: lambda: run(program) == 364539 and\n", + " run2(program) == 27477714,\n", + " 6: lambda: realloc(banks) == 12841 and\n", + " realloc2(banks) == 8038,\n", + " 7: lambda: first(programs - set(flatten(above.values()))) == 'wiapj' and\n", + " correct(wrongest(programs)) == 1072,\n", + " 8: lambda: max(run8(program8).values()) == 6828 and\n", + " run8_2(program8) == 7234,\n", + " 9: lambda: total_score(text2) == 9662 and\n", + " len(text1) - len(text3) == 4903,\n", + " 10: lambda: knothash(stream) == 4480 and\n", + " knothash2(stream2) == 'c500ffe015c83b60fad2e4b7d59dabc4',\n", + " 11: lambda: follow(path) == 705 and\n", + " follow2(path) == 1469,\n", + " 12: lambda: len(G[0]) == 115 and\n", + " len({Set(G[i]) for i in G}) == 221,\n", + " 13: lambda: trip_severity(scanners) == 1504 and\n", + " safe_delay(scanners) == 3823370,\n", + " 14: lambda: sum(bits(key, i).count('1') for i in range(128)) == 8316 and\n", + " flood_all(Grid(key)) == 1074,\n", + " 15: lambda: judge(A(), B(), 40*10**6) == 597 and\n", + " judge(criteria(4, A()), criteria(8, B()), 5*10**6) == 303,\n", + " 16: lambda: perform(dance) == 'lbdiomkhgcjanefp' and\n", + " whole(48, dance) == 'ejkflpgnamhdcboi',\n", + " 17: lambda: spinlock2().find(2017).next.data == 355 and\n", + " spinlock3(N=50*10**6)[1] == 6154117,\n", + " 18: lambda: run18(program18) == 7071 and\n", + " run18_2(program18)[1].sends == 8001,\n", + " 19: lambda: cat(filter(str.isalpha, follow_tubes(diagram))) == 'VEBTPXCHLI' and\n", + " quantify(follow_tubes(diagram)) == 18702,\n", + " 20: lambda: closest(repeat(1000, update, particles())).id == 243 and\n", + " len(repeat(1000, compose(remove_collisions, update), particles())) == 648,\n", + " 21: lambda: sum(flatten(repeat(5, enhance, grid))) == 147 and\n", + " sum(flatten(repeat(18, enhance, grid))) == 1936582,\n", + " 22: lambda: repeat(10000, burst, parse_net(Input(22))).caused == 5460 and\n", + " repeat(10000000, burst2, parse_net2(Input(22))).caused == 2511702,\n", + " 23: lambda: run23(Array(Input(23))) == 9409 and\n", + " run23_2() == 913,\n", + " 24: lambda: strongest_chain() == 1695 and\n", + " strength(max(chains(), key=length_and_strength)) == 1673,\n", + " 25: lambda: sum(turing(machine()).values()) == 4769\n", + "})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Development Time\n", + "\n", + "Here is a plot of the time taken to program solutions to both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. I'm usually about triple the time of the first solver, and a little slower than the 100th." + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAAwGg2Gl/H827qoWdm5ZaQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" ] }, "metadata": {}, @@ -3616,16 +4430,16 @@ "def plot_times(times):\n", " plt.style.use('seaborn-whitegrid')\n", " X = ints(1, len(times[0]) - 2)\n", - " for (label, mark, *Y) in times:\n", - " plt.plot(X, Y, mark, label=label)\n", - " plt.xlabel('Day Number'); plt.ylabel('Minutes to Solve Both Parts')\n", + " for (label, c, *Y) in times:\n", + " plt.plot(X, Y, c+':', label=label)\n", + " plt.xlabel('Day Number'); \n", + " plt.ylabel('Minutes to Solve Both Parts')\n", " plt.legend(loc='upper left')\n", "\n", - "x = None\n", "plot_times([\n", - " ('Me', 'd:', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50, 18, 40),\n", - " ('100th', 'v:', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18, 21, 45),\n", - " ('1st', '^:', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5, 7, 10)])" + " ('Me', 'o', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50, 18, 40, 25, 50, 10, 10),\n", + " ('100th','v', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18, 21, 45, 20, 54, 21, 11),\n", + " ('1st', '^', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5, 7, 10, 6, 19, 6, 2)])" ] } ], From f768f0d65aee1a2d026d507cc661f1423ae6043a Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sun, 24 Dec 2017 22:40:38 -0800 Subject: [PATCH 42/55] Advent 2017 input21 through input24 --- data/advent2017/input21.txt | 108 ++++++++++++++++++++++++++++++++++++ data/advent2017/input22.txt | 25 +++++++++ data/advent2017/input23.txt | 32 +++++++++++ data/advent2017/input24.txt | 57 +++++++++++++++++++ 4 files changed, 222 insertions(+) create mode 100644 data/advent2017/input21.txt create mode 100644 data/advent2017/input22.txt create mode 100644 data/advent2017/input23.txt create mode 100644 data/advent2017/input24.txt diff --git a/data/advent2017/input21.txt b/data/advent2017/input21.txt new file mode 100644 index 0000000..5ae0471 --- /dev/null +++ b/data/advent2017/input21.txt @@ -0,0 +1,108 @@ +../.. => .../.#./.#. +#./.. => .../#../#.. +##/.. => #.#/.#./.#. +.#/#. => ##./##./... +##/#. => .##/###/#.. +##/## => .##/#../##. +.../.../... => .#.#/###./##.#/###. +#../.../... => #.#./..#./..../#.#. +.#./.../... => #.##/..#./.#.#/#### +##./.../... => ###./.#../####/##.. +#.#/.../... => ...#/####/#.##/...# +###/.../... => .#../..#./#..#/..#. +.#./#../... => ###./.##./#.../..#. +##./#../... => #.#./...#/..../.### +..#/#../... => ..../..../##../#..# +#.#/#../... => ..#./#..#/.#../..## +.##/#../... => ##../.#.#/.##./...# +###/#../... => ..../#.../#..#/#..# +.../.#./... => ##.#/#.#./#.../#..# +#../.#./... => ..#./#.#./.##./.... +.#./.#./... => ..##/#.../..../###. +##./.#./... => .#../...#/.##./.#.# +#.#/.#./... => ...#/#..#/.#../.### +###/.#./... => ###./.###/##.#/#.## +.#./##./... => ##.#/##../..##/..## +##./##./... => #.##/.###/.##./###. +..#/##./... => ##.#/.##./..##/#### +#.#/##./... => ####/####/#.##/.#.. +.##/##./... => ####/.#../####/#..# +###/##./... => #.#./..#./###./..#. +.../#.#/... => #.../..../.#../#.## +#../#.#/... => ..#./###./####/..#. +.#./#.#/... => #.##/.#../##.#/#.#. +##./#.#/... => ###./.###/###./##.. +#.#/#.#/... => ...#/.##./.#.#/#.## +###/#.#/... => ####/#.../###./###. +.../###/... => ..##/#.##/.#../.#.. +#../###/... => ..../.###/.#.#/...# +.#./###/... => #.##/.#.#/.#.#/.##. +##./###/... => #..#/.#.#/#.##/#.#. +#.#/###/... => #.../##../#.##/##.# +###/###/... => .#../.#../.###/..#. +..#/.../#.. => ...#/.##./.##./#### +#.#/.../#.. => ##.#/##../#.#./.#.. +.##/.../#.. => #..#/.##./####/.#.. +###/.../#.. => ..../..../..##/..## +.##/#../#.. => ..##/.##./#..#/###. +###/#../#.. => ##.#/#..#/#.../#..# +..#/.#./#.. => #..#/##.#/.##./#..# +#.#/.#./#.. => .#../####/..##/#.## +.##/.#./#.. => ###./#..#/.##./###. +###/.#./#.. => ####/###./##../..## +.##/##./#.. => #.../####/...#/#### +###/##./#.. => .#../#.##/.##./#### +#../..#/#.. => .#../####/#.../.... +.#./..#/#.. => .#.#/...#/.###/.#.# +##./..#/#.. => ..##/#..#/#..#/.... +#.#/..#/#.. => .###/.#.#/.##./#.#. +.##/..#/#.. => ...#/#.##/#.../..## +###/..#/#.. => #.##/#.##/...#/#.## +#../#.#/#.. => #..#/..##/.#../.### +.#./#.#/#.. => #.##/..../.##./.#.. +##./#.#/#.. => #.#./..#./.#.#/.#.. +..#/#.#/#.. => ...#/#..#/###./##.. +#.#/#.#/#.. => ##.#/##.#/.#.#/.#.. +.##/#.#/#.. => #..#/#..#/##../.#.. +###/#.#/#.. => #.##/..##/##.#/.... +#../.##/#.. => ##.#/.##./...#/.#.# +.#./.##/#.. => .##./.###/###./.#.# +##./.##/#.. => #.#./#.##/..##/.#.. +#.#/.##/#.. => ..#./.##./..##/.#.. +.##/.##/#.. => ##../..##/#..#/#... +###/.##/#.. => ###./#..#/##.#/..#. +#../###/#.. => .###/#.../####/#.#. +.#./###/#.. => #.#./.###/#..#/.... +##./###/#.. => ..#./.#.#/#.../#... +..#/###/#.. => ...#/..#./##../#..# +#.#/###/#.. => .#.#/###./.#../##.. +.##/###/#.. => .#../###./..#./##.. +###/###/#.. => .#../..##/#.../#... +.#./#.#/.#. => ##.#/..../##../.#.. +##./#.#/.#. => #.../#.##/.###/#.## +#.#/#.#/.#. => ...#/..##/##.#/#.## +###/#.#/.#. => ...#/.#.#/###./#..# +.#./###/.#. => ...#/...#/##../#.## +##./###/.#. => ###./###./.#.#/..## +#.#/###/.#. => ..../#..#/..##/#..# +###/###/.#. => .#.#/.#.#/##../.### +#.#/..#/##. => .##./..#./##../.... +###/..#/##. => ####/...#/.#.#/#... +.##/#.#/##. => ..#./...#/###./.#.. +###/#.#/##. => ..../.#../.#../#.#. +#.#/.##/##. => .##./..../#.../.#.# +###/.##/##. => ..../#..#/...#/#... +.##/###/##. => #.##/##.#/#.../..#. +###/###/##. => .#../.###/###./##.# +#.#/.../#.# => .#.#/..../#..#/.#.. +###/.../#.# => ##../#.##/##.#/..#. +###/#../#.# => .#.#/..../.#.#/.### +#.#/.#./#.# => ...#/..../##.#/#... +###/.#./#.# => ####/.###/#.#./#.## +###/##./#.# => #..#/.###/...#/###. +#.#/#.#/#.# => #.##/...#/.###/.##. +###/#.#/#.# => #.../.#.#/.#.#/.### +#.#/###/#.# => ##.#/##../###./#... +###/###/#.# => .##./.###/.#../..## +###/#.#/### => #.##/###./#..#/#..# +###/###/### => #.../..../#..#/#... diff --git a/data/advent2017/input22.txt b/data/advent2017/input22.txt new file mode 100644 index 0000000..357184a --- /dev/null +++ b/data/advent2017/input22.txt @@ -0,0 +1,25 @@ +..######.###...######...# +.##..##.#....#..##.#....# +.##.#....###..##.###.#.#. +#.#.###.#####.###.##.##.# +.###.#.#.###.####..##.### +..####.##..#.#.#####...## +....##.###..#.#..#...#### +.#.##.##.#..##...##.###.. +.######..#..#.#####....## +###.##.###.########...### +.#.#.#..#.##.#..###...#.. +.#.##.#.####.#.#.....###. +##..###.###..##...#.##.## +##.#.##..#...##...#...### +##..#..###.#..##.#.#.#.#. +.##.#####..##....#.#.#..# +..#.######.##...#..#.##.. +#.##...#.#....###.#.##.#. +.#..#.#.#..#.####..#.#### +.##...##....##..#.#.###.. +..##.#.#.##..##.#.#....#. +###.###.######.#.######## +..#.####.#.#.##..####...# +#.##..#.#.####...#..#..## +###.###.#..##..#.###....# diff --git a/data/advent2017/input23.txt b/data/advent2017/input23.txt new file mode 100644 index 0000000..9d29443 --- /dev/null +++ b/data/advent2017/input23.txt @@ -0,0 +1,32 @@ +set b 99 +set c b +jnz a 2 +jnz 1 5 +mul b 100 +sub b -100000 +set c b +sub c -17000 +set f 1 +set d 2 +set e 2 +set g d +mul g e +sub g b +jnz g 2 +set f 0 +sub e -1 +set g e +sub g b +jnz g -8 +sub d -1 +set g d +sub g b +jnz g -13 +jnz f 2 +sub h -1 +set g b +sub g c +jnz g 2 +jnz 1 3 +sub b -17 +jnz 1 -23 diff --git a/data/advent2017/input24.txt b/data/advent2017/input24.txt new file mode 100644 index 0000000..34f123c --- /dev/null +++ b/data/advent2017/input24.txt @@ -0,0 +1,57 @@ +14/42 +2/3 +6/44 +4/10 +23/49 +35/39 +46/46 +5/29 +13/20 +33/9 +24/50 +0/30 +9/10 +41/44 +35/50 +44/50 +5/11 +21/24 +7/39 +46/31 +38/38 +22/26 +8/9 +16/4 +23/39 +26/5 +40/40 +29/29 +5/20 +3/32 +42/11 +16/14 +27/49 +36/20 +18/39 +49/41 +16/6 +24/46 +44/48 +36/4 +6/6 +13/6 +42/12 +29/41 +39/39 +9/3 +30/2 +25/20 +15/6 +15/23 +28/40 +8/7 +26/23 +48/10 +28/28 +2/13 +48/14 From 94d842c47ee88b064f2ae53010775d8b8762e25d Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sun, 24 Dec 2017 22:55:45 -0800 Subject: [PATCH 43/55] Add files via upload --- ipynb/Advent 2017.ipynb | 74 ++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 8acbe02..b6a1215 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -1017,8 +1017,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.3 s, sys: 18.9 ms, total: 5.31 s\n", - "Wall time: 5.33 s\n" + "CPU times: user 5.07 s, sys: 12.6 ms, total: 5.09 s\n", + "Wall time: 5.08 s\n" ] }, { @@ -1754,8 +1754,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 14 ms, sys: 209 µs, total: 14.2 ms\n", - "Wall time: 14.3 ms\n" + "CPU times: user 18.7 ms, sys: 1.36 ms, total: 20.1 ms\n", + "Wall time: 23.7 ms\n" ] }, { @@ -2179,8 +2179,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 515 ms, sys: 3.8 ms, total: 519 ms\n", - "Wall time: 519 ms\n" + "CPU times: user 516 ms, sys: 2.49 ms, total: 519 ms\n", + "Wall time: 520 ms\n" ] }, { @@ -2283,8 +2283,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 512 ms, sys: 2.21 ms, total: 514 ms\n", - "Wall time: 515 ms\n" + "CPU times: user 533 ms, sys: 2.49 ms, total: 536 ms\n", + "Wall time: 536 ms\n" ] }, { @@ -2320,8 +2320,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 15.4 s, sys: 56.6 ms, total: 15.4 s\n", - "Wall time: 15.5 s\n" + "CPU times: user 15.2 s, sys: 35.9 ms, total: 15.2 s\n", + "Wall time: 15.2 s\n" ] }, { @@ -2375,8 +2375,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 10.2 s, sys: 47.2 ms, total: 10.2 s\n", - "Wall time: 10.3 s\n" + "CPU times: user 9.88 s, sys: 16.8 ms, total: 9.9 s\n", + "Wall time: 9.91 s\n" ] }, { @@ -2747,14 +2747,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.66 s, sys: 12.9 ms, total: 1.68 s\n", - "Wall time: 1.68 s\n" + "CPU times: user 1.71 s, sys: 19.9 ms, total: 1.73 s\n", + "Wall time: 1.75 s\n" ] }, { "data": { "text/plain": [ - "<__main__.Node at 0x1171a9f98>" + "<__main__.Node at 0x114f66fd0>" ] }, "execution_count": 77, @@ -2787,8 +2787,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.63 s, sys: 20.1 ms, total: 5.65 s\n", - "Wall time: 5.66 s\n" + "CPU times: user 5.59 s, sys: 10.7 ms, total: 5.6 s\n", + "Wall time: 5.61 s\n" ] }, { @@ -3629,8 +3629,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.35 s, sys: 90.8 ms, total: 5.44 s\n", - "Wall time: 5.44 s\n" + "CPU times: user 5.32 s, sys: 89.5 ms, total: 5.41 s\n", + "Wall time: 5.41 s\n" ] }, { @@ -3880,8 +3880,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 21.2 s, sys: 38.9 ms, total: 21.3 s\n", - "Wall time: 21.3 s\n" + "CPU times: user 21.3 s, sys: 46.2 ms, total: 21.4 s\n", + "Wall time: 21.4 s\n" ] }, { @@ -3964,8 +3964,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 950 ms, sys: 3.65 ms, total: 953 ms\n", - "Wall time: 953 ms\n" + "CPU times: user 984 ms, sys: 8.51 ms, total: 993 ms\n", + "Wall time: 997 ms\n" ] }, { @@ -4085,8 +4085,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.38 s, sys: 5.91 ms, total: 2.39 s\n", - "Wall time: 2.39 s\n" + "CPU times: user 2.39 s, sys: 10.5 ms, total: 2.4 s\n", + "Wall time: 2.4 s\n" ] }, { @@ -4124,8 +4124,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.45 s, sys: 3.48 ms, total: 2.45 s\n", - "Wall time: 2.45 s\n" + "CPU times: user 2.52 s, sys: 18.5 ms, total: 2.53 s\n", + "Wall time: 2.55 s\n" ] }, { @@ -4167,8 +4167,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 635 ms, sys: 1.79 ms, total: 637 ms\n", - "Wall time: 637 ms\n" + "CPU times: user 664 ms, sys: 3.29 ms, total: 667 ms\n", + "Wall time: 670 ms\n" ] }, { @@ -4326,13 +4326,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Day 5: 5.1 sec\n", - "Day 15: 25.6 sec\n", - "Day 17: 5.8 sec\n", - "Day 21: 5.4 sec\n", - "Day 22: 21.2 sec\n", - "CPU times: user 1min 19s, sys: 262 ms, total: 1min 19s\n", - "Wall time: 1min 19s\n" + "Day 5: 5.4 sec\n", + "Day 15: 25.8 sec\n", + "Day 17: 5.7 sec\n", + "Day 21: 5.6 sec\n", + "Day 22: 22.0 sec\n", + "CPU times: user 1min 20s, sys: 499 ms, total: 1min 21s\n", + "Wall time: 1min 21s\n" ] } ], @@ -4419,7 +4419,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAENCAYAAAAG6bK5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXdcU1cbx383LFnuioKIgANb7VDc1onVOltRUQGlWtta\nq9atbRER916tVl+rdddWrFatA1FxoDjqHigEBAKoCBgII5Dz/nElrITcJPcmQc7XTz5yxznnuSc3\n5znjOc/DEEIIKBQKhVLlEBlbAAqFQqEYB6oAKBQKpYpCFQCFQqFUUagCoFAolCoKVQAUCoVSRaEK\ngEKhUKoo5kJlXFBQgNmzZyMpKQnm5uYICQmBmZkZ5syZA5FIhKZNmyIoKEio4ikUCoWiAcEUwPnz\n56FQKLB//35cvnwZa9asgVwux7Rp0+Dp6YmgoCCEhYXBy8tLKBEoFAqFUgGCTQE1btwYhYWFIIRA\nKpXC3NwcDx48gKenJwCga9euiIyMFKp4CoVCoWhAsBGAra0tEhMT0bdvX2RkZGDz5s24fv16qetS\nqVSo4ikUCoWiAcEUwI4dO/Dxxx9j6tSpSE1Nhb+/P+RyufJ6dnY2qlevLlTxFAqFQtGAYAqgRo0a\nMDdns7e3t0dBQQHeffddREVFoV27doiIiECHDh3Kpbtx44ZQIlEoFMpbTZs2bbS6nxHKGZxMJsMP\nP/yAFy9eoKCgAGPGjMF7772Hn376CXK5HO7u7li4cCEYhimV7saNG1o/xNuKRCKBo6OjscUwCWhd\nFEProhhaF8Xo0nYKNgKwsbHB2rVry53ftWuXUEVSKBQKRQvoRjAKhUKpolAFQKFQKFUUqgAoFAql\nikIVAIVCoVRRqAKgUCiUKgpVABQKhVJFoQqAQqFQqihUAVAoFEoVhSoAnkhKSoKHhwf8/f3LXZs7\ndy48PDyQkZFhBMkoFApFNVVCAYjF8fDzC0aPHkHw8wuGWBwvSDlWVlYQi8VITk5WnsvJycHNmzfL\nubygUCgUY/PWKwCxOB69e2/Anj0zcO5cMPbsmYHevTcIogREIhH69euHI0eOKM+dOnUKPXv2VB6H\nh4dj+PDhGDJkCEaNGoVbt27xLgeFYiwM1dmi8AQxMa5fv85rfr6+8wmQRQBS4pNFfH3n81pOYmIi\n+eijj8j9+/dJv379lOcDAgLIkydPiIeHB7lz5w4ZMGAAycjIIIQQ8uTJE9K5c2eSk5OjMs+kpCRe\nZazM0LooxlTrIjY2jri7Ty/xe8si7u7TSWxsnGBlmmpdGANd2k7BnMEZgvnzNf9/6ZICgG2ZlLaQ\nSBQa0+vCu+++C5FIhAcPHqB27dqQyWRo0qQJCCGIiIjAixcvEBAQAPLGCau5uTni4+PRvHlz3Qul\nUEyAwMAdiIkJRvHvzRYxMcEIDFyJ3btp/G9T5K1QABUdP30qQlxcNkorgWw4Ooo0pteVQYMG4fDh\nw6hduzYGDRqkPC8SidCpUyesXr1aeS4lJQUODg78FEyhGJGkJPWdLYpp8tavAYSEBMDdPQhA9psz\n2XB3D0JISADvZRX16gcNGoQTJ07g33//xcCBA5XX27Zti0uXLiE2NhYAcP78eQwePBh5eXm8y0Kh\nGBonJxGKf2dFsJ0timlSqUcAXHB1dcHp05MQGLgSEokCjo4ihIRMgqurC+9lFVn6ODg4oEmTJrC3\nt1eGvWQYBk2aNMGCBQswbdo0AICZmRk2bdqEatWq8S4LhWJoQkICcPJkEF6+LJoGKupsTTKyZBR1\nCBYRTFdoRLBiaLSjYmhdFGPKdXH0aDy2bt0BqbSosxUgSGerCFOuC0NjUhHBKBRK1WPAABcMGEAX\nfCsLdHKOQqHwCiFAhw7A69fGloSiCaoAKBQKL2zYAOzcCTAMsGMHYGNjbIkomhBsCujQoUMIDQ0F\nwzDIy8vDo0ePsGfPHixevBgikQhNmzZFUBAdKlIobwtDhrC9fwDw8DCuLBRuCDYC+Pzzz7Fr1y7s\n3LkT7733Hn766Sf8/PPPmDZtGnbv3g2FQoGwsDChiqdQKAbGyQlo2NDYUlC0QfApoLt37+Lp06cY\nNmwY7t+/D09PTwBA165dERkZKXTxFArFCIjFQLt2xpaCognBFcCWLVswaVJ5O2BbW1tIpVKhi6dQ\nKAZg3TpgyZLi40aNgOPHjScPhRuCKgCpVIq4uDi0bduWLUxUXFx2drZyk9TbxNy5c7F9+3YAgEKh\nwKJFi/Dpp5+iT58+2L9/v/K++Ph4+Pr6on///hg+fLhyd3BWVhbGjBmjvI/GEaBUBr7+Gvjqq+Jj\nMzOgbl3jyUPhhqD7AK5du4YOHTooj1u0aIFr166hbdu2iIiIKHWtJBKJhDcZglYG4V7yvXLnWzZo\nieAZwbyV8+zZM6xduxYPHz6Eg4MDJBIJ/v77b0RHR+N///sfsrOzMXHiRDg4OKB58+aYPHkyhg0b\nhp49eyIqKgoTJkzA9u3bkZKSgjt37kAikUAqlYJhGKSkpEAmk/Ema2VEKpXy+l5UZky5LsqKVVAA\nmAvYyphyXVQGBFUAYrEYzs7OyuPZs2cjMDAQcrkc7u7u6Nu3r8p0fO7s69O9D/b+vRcyl+IG1CbO\nBjN6zOC1nG3btmHUqFGIjIxEjRo14OjoiOvXr2PUqFFwcnICAAwePBiXL1/Gu+++i6SkJPj5+QEA\nPvvsM2zYsAGZmZlYu3Yt8vLyMHHiRGzYsAGEEBw4cAC3bt1CZmYmxo4dC19fX97krizQHZ/FmFpd\n5OcDFhas+WdJDhxgp4F27BCubFOrC2NSMhAVVwRVAOPGjSt13LhxY+zatUvIIsvhPdAbK3etxFVy\nFWAAEKBVVisMGTCE13ICAwMBoNTCdnJyMho0aKA8dnBwQHR0NFJSUlCvXr1S6R0cHJCSkoIlS5Zg\n4MCBOHTokLJn06hRI8ybNw8PHz6Ej48PRowYATMzM17lp1B0Zd8+4OpV4JdfSp//7DNg6FDjyETh\nRqV2BTH/3Hz2/+7zKzye4T8DY/4eA5mLDBZiC8wcPRMMw2hMry8KRXk3uCKRSOX5omuqGDBgAAB2\nCk0ulyMrKws1atTgRUYKRV/GjAFGjix/3tLS8LJQtKNyK4AyDbW6Y0KIchTQWtZa2fvXlF5fHB0d\n8fz5c+Vxamoq6tevD0dHR7x48aLUvUXXVGFeZhLVxPz3UShqG3u5nJ0isi0bJoBiElQJVxAMw2CG\n/wzYn7VX9v4NQa9evXDw4EEUFhbi9evXOH78OLy8vODg4IBGjRrh+Bs7uQsXLsDMzAzNmzeHubm5\n2hECQBt/immRlQVkZqq/PmsWUML4jWJiVOoRgDZ4D/TG9f+u8z73XxEjR45EQkICBg8eDLlcjpEj\nRyo3wq1ZswY//vgjNm3aBCsrK6xbtw4A8M4776BFixbo168fVq9eXU5ZGUp5UShcuHgR+OMP4I3l\nczlWry6/OEwxHWg8ABOGWjgUQ+uiGFoXxdC6KEaXtrNKTAFRKBTjkZQE0KinpglVABQKRSdevwYe\nPNB834QJQHS08PJQtIcqAAqFohPR0cDGjZrvO3IEaNVKeHko2lNlFoEpFAq/eHqyH0rlhY4AKBSK\noBQWAtevG1sKiiqoAqBQ3nLE4nj4+QWjR48g+PkFQyyO1ztPqRQ4cYLbvYQA06axm8IopgWdAqJQ\n3mLE4nj07r0BMTHBAGwBZOPKlSCcPj0Jrq4uOuf7/DkQHg6o8edYCnNzICJC56IoAkJHABTKW0xg\n4I4SjT8A2CImJhiBgTv0ytfdHVi+XF/pKMamyigAQgiWz5kjuCuFkgFh1HH37l0EBQUJKgeFAgBJ\nSQoUN/5F2EIiUe9uRAjS04FLlwxaJIUDVUYBnDx4EMm//IJToaGC5B8TE4MxY8bgBIeJ0SdPniA1\nNVUQOSiUkjg5iQBklzmbDUdH3X/6OTnA5s3apXn+HPjrL52LpAhElVAAhBCcXLkSq6VSnFixQpBR\nwN69e+Ht7V0qyM3169cxbNgweHt7Y+jQoTh9+jRSUlKwYcMG3LhxAz/88APvclAoJQkJCYCbWxCK\nlUA23N2DEBISoHOeUinw6pV2aZo3B9as0blIikBU7kXg+fM5/X+yZUv0vXsXDIA+N2/iVGgo+nh7\na06vBaoCwmzcuBFffPEF+vXrh8ePH+PAgQPo3bs3Jk+ejJMnT2Lx4sVal0OhaIOrqwvCwibhp59W\nIjlZAUdHEUJC9FsArlcPoH2Xt4O3QwFUcEwIwcmOHbH6TUzdPnI5pq1YgU+GDAGjKb2efPrpp1iw\nYAHCw8PRqVMnTJ06ldf8KRQuuLq6YM8eds2JECAjwzhyPHzIjh7atTNO+ZTyvPVTQCcPHlT2/gE2\nKmSfu3cFWwsoiY+PD/755x906dIFFy9exKBBg5CVlSV4uRRKSXJz2Q8AnD0LfPWV7nnJ5cDs2UAF\nISvU8uwZ8OSJ7mVT+EfjCCA1NRVSqRRmZmbYunUr/P390aJFC0PIxgt3L11ClqcnIks4JSeEwO7i\nRXYaSEBGjBiBCRMm4LPPPoOXlxd69OiB169fw8zMDAUFBYKWTaEUceQIcPIksG0b0L070K2b7nnl\n5QFuboCa6KUV0qeP7uVShEGjApg+fTq+++477N27F3369MHixYs5B3bfsmULwsPDIZfLMWrUKLRt\n2xZz5syBSCRC06ZNDWIKOdOIK0+zZs3CwoULsW7dOjAMg++++w6Ojo746KOPsHbtWkyaNAkbNmww\nmnyUqsHw4ewH0K3hLomdHfD11/rLRDENNCoAhmHQtm1bbN68Gf3798eBAwc4ZRwVFYX//vsP+/fv\nh0wmw2+//YYlS5Zg2rRp8PT0RFBQEMLCwuDl5aX3Q5gSS5YsUf7dunVrhKqYanJ2dkZ4eLghxaJQ\nSnHuHGBvDxg69tLRo0CTJoCHh2HLpahGY3+goKAAK1asgKenJ65cuQI5R4ceFy9eRLNmzfDtt99i\nwoQJ6N69Ox48eKAMidi1a9dSFjMUCkUYMjKAsjOOmZlsPF9tUCgAPz/9grtkZABv7DEoJoDGEcCS\nJUtw6dIlDBs2DGFhYVi2bBmnjNPT0yGRSPDrr78iISEBEyZMKBXs3NbWFlKpVHfJKRQKJ8aNAyZN\nYuf/ixg8WPt8CguBIUMAKyvdZfHz0z0thX80KoCdO3di3rx5AIB+/fph1qxZWM7BCUjNmjXh7u4O\nc3NzuLq6wsrKqtTu1+zsbFSvXl1lWolEwlX+txqpVErr4g20LorRti6KlplUJSFEu6DtHTqozsdY\n0PdCP9QqgD179mDTpk3IyMjAqVOnlOfd3d05ZdymTRvs2rULAQEBSE1NRU5ODjp06ICoqCi0a9cO\nERER6NChg8q0NMgzCw14XQyti2L4rIu+fYF169iduoZi8WLgu+8ANf0/raDvRTHJyclap1GrAHx9\nfeHr64vNmzfjm2++0Trj7t274/r16xg6dCgIIZg/fz6cnJzw008/QS6Xw93dvZTbBAqFwj+Fhazb\nhnfeUX190yagcWPN+RACfPopsHcvULu2fjLVqUNjA5gKGqeAzp8/r5MCAIAZM2aUO8fVhJRCoehP\nSgowYADw33+qr7u6cs8rOBioVUt/magZqemgUQHUqFEDv//+O1xdXSF6Y0TcpUsXwQWjUCj64+Sk\nvvEvorCQvaei+L4MA7Rvz69sFOOj0Qy0Vq1aePToEf79918cO3YMx44dM4RcFArFQGRksG6wdHHv\noAvp6cDMmYYpi1IxnMxAS/L8+XPBhKFQKPySkQGYmbGbvtRRpw67QasiOnYE9u8HXHR3IqrE3h5o\n0UJ7CyQK/2hUAOvWrcO+ffsgl8uRm5uLxo0b01EAhVJJ2LmTDeAye7Z++YSGAg4O/Mhkbg6MHctP\nXhT90DgFFB4ejoiICAwcOBDHjx+HA19vAYVCEZzJk7k3/pcvAxs3qr7WoIH+foQopofGr/Sdd96B\npaUlsrOz4eLiwtkVBIVCqVw0bAh88EH58/n5/Jd17RqwcCH/+VK0Q6MCqF+/Pv766y9YW1tj1apV\neP36tSHkolAoPJCQwN3mvlEj4OOPy5/v0QO4dYtfuZydgZ49+c2Toj0a1wAWLFiA5ORk9O3bF4cO\nHcKqVasMIReFQuEBPz/g99+5bfYqIj+ftQiqVo09PneO/+mf+vXZD8W4qFUAL168wG+//QYbGxuM\nGzcONjY28Pf3N6RsFApFT86f1z7NpEmAlxcwbBh7bGHBr0wU00GtXp8zZw4aNWoECwsLrFixwpAy\nUSgUI7J+fXHj//w5u1FMCP73P2D7dmHypnBD7QhALpdj5MiRAICAgABDyUOhUHhCJgPS0tj5dm2w\nsgLE4ngEBu7A6dMKtGolwtatAXB15WETQAl69Xo7RxdT503FzfibYMqEoW3t0hprFhgvQqEq1CqA\nksIrDLVFkEKh8MaDB8DKlewGLm0Qi+Ph5bUBsbHBAGxx5kw2evcOwunTk3hVAtr4IapMdPbsjC2J\nWyBzKY58YxNng8ltJxtRKtWonQLKyclBXFwcYmNjkZubi7i4OIjFYojFYkPKR6FQdMTTU/vGHwAC\nA3coG38WW8TEBCMwcAeP0r29eA/0RitpK4C8OUGAVlmtMGTAEKPKpQq1IwArKysEBgaW+5thGOzc\nudMw0lEoFIOTlKRAceNfhC0kEv5nAsaNA774Anib/EsyDIMZ/jMw5u8xkLnIYBNvg5mjZ5aaVTEV\n1CoA6raZQqncJCUBdnZAjRrapXNyEgHIRmklkA1HR/63AgcG8udiwpTwHuiNlbtW4iq5ihaZLUyy\n9w9w2AhGoVAqJ7/+CpQI5seZkJAAuLsHgVUCAJANd/cghIQE8CZbEY0bA9bWvGdrdBiGwYhBI2Ab\nbou5X8w1yd4/wGEjGIVCqZwsWKBbOldXF5w+PQmBgSshkSjg6ChCSAi/C8AleVu9grq2dUWPKz1M\ntvcPcFQAr169Qm5urvKYxuCkUN5uXF1dsHt3kODlEAK4u7OuJviIEWxKDPYYDI9gDxx+fBifeXxm\nbHFUolEBBAYGIjIyEnXr1gUhBAzDYL8upgUUCsWg3L0LvPeeaXvxZBggKqrieAWVGblCjtd5pus/\nTaMCePz4MU6fPm2yc1gUCqU8CgUwZgzrddPUqVvX2BLwDyEEv9/+HaM/GI2W9VoaWxy1aFQA9erV\nQ3Z2Nuzs7LTOfMiQIcp0DRs2xDfffIM5c+ZAJBKhadOmCAoSfohJoVRFRCLg5k1jS8Edufzt2hWc\nX5iPyIRIBHwYYGxRKkStAvDx8QHDMEhLS8Mnn3wC5zf7yblOAeW/cSJecs/AhAkTMG3aNHh6eiIo\nKAhhYWHw8vLS9xkoFEolJiwsHsOG7cCHHyrg5CRCSAj/bicMjSQhBdl/OKLH6iDktriF5RNm4uNW\nprfZQa0CWL16NQDWJ5BFCdWcmZnJKeNHjx5BJpNh3LhxKCwsxNSpU/HgwQN4enoCALp27YrLly9T\nBUChCMDLl0BWlnZuoI2BWByPr7/egIyMYJw7ZwsgG1eu8O92wpCIxfHo3XsDYmLe7KZO3wq/y7/j\n3CFnk3smtctDlpaWyM/Px6xZsyCXy5Gfn4/c3FzMmzePU8bVqlXDuHHjsG3bNsyfPx8zZswAIUR5\n3dbWFlKpVP8noFAo5YiKArZuNbYUmnkb3U4EBu5ATIEXUC+WPXF7PJ7dXmuSz6R2BHD79m38/vvv\nEIvFSjcQIpEIXTju2W7cuDFcXFyUf9esWRMPHjxQXs/OzkZ1NXZfEomE8wO8zUilUloXb6B1UQyX\nuvjwQ/Zj6lUWG5sDVW4nxOIcTt+3Kb4XsbE5gF0mgJI73Lg/kyFRqwC8vLzg5eWF8+fPo1u3blpn\nfPDgQURHRyMoKAipqanIyspC586dERUVhXbt2iEiIgIdOnRQmZbuM2CRSCS0Lt5A66KYt6ku3Nys\nERlZ3u2Eq6s1p2c0xbpwc7NG5J4BUD6TvQRo+TvnZ9KV5ORkrdNotBB2cHCAt7c3unTpgs8++6xU\nL74ihg4dCqlUilGjRmH69OlYunQpfvzxR2zYsAEjRoxAQUEB+vbtq7XAFApFMw8eAByX64yKId1O\nGIpyz1RQiHeqnzPJZ9JoBrpo0SIsWrQIHh4eePjwIYKDgzlZAVlYWGDlypXlzlMncxSK8PzyC7sP\noG1bY0tSMYZ2O2EI6jjWQsDGWjg6fyVycxVo2VKEkJAtJvlMGhUAIQQeHh4AgBYtWsDcnLoPolBM\nnY0bjS0Bd4rcTjx/DtSqVfn3A+QW5MLCzhxXrvyIzEwgJweoX9/YUqlG4xSQmZkZzp49C6lUivDw\ncFhaWhpCLgqFUsXw9gbi4owthf7Us62H2V1mAwAOHQK2bQP23t2LC/EXjCxZeTR25xcvXoxly5Zh\n1apVcHd3R0hIiCHkolAoOpKfD/z3H9C+vbEl0Y4Lptc+6kxMDPspCqd+Ps4Jta1rG1UmVWhUAE5O\nTli/fj0kEgkKCwvh5ORkCLkoFIqOpKcDy5YBoaHGlqRqsu/uPliktUbGs+bKc90aa29JaQjUTgFd\nvnwZAwcOREBAAEJDQzF8+HCMHTsWWyvD7hIKpQrj4FA5G//cXCA+3thS6I+CKPB+KwZffsm6u75z\nh/3fFFGrAFavXo0NGzZg6tSpCAkJweHDh3Hs2DGEhYUZUj4KhVJFuH0b+PFHY0uhP77v+6JZnWYA\nWHfXX38NvMrMw/gj40t5QzAF1E4BWVtbo/EbRyItWrRAnTp1ALAuHigUiukiFrP/u7oaVw5tad++\n8q1bqCIvD1i/Hpg5kz2OjAQIsURXl64gIGBgOq711SqAkv7/S5p+mpoGo1Aopbl4kW2EvvzS2JKY\nFlPnTcXN+Jul2jZCCFq7tMaaBWt4KSM2PRZ/3z0FQr4pdZ5hGPh/4M9LGXyiVgHcv38fI0aMACEE\nT58+Vf4dExNjSPkoFIqW+JteO8OZ+HjAzg54M+HAK509O2NL4hbIXGTKczZxNpjcdjJvZYgYERxr\n18SIWcXnUlJYy6xGjXgrhjfUKoAjR44YUg4KhULBL78APXsCffrwn7f3QG+s3LUSV8lVgAFAgFZZ\nrXgN2t64ZmM0rtm41Lnjx9kFbude/+Cl7CW++OgL3srTF7UKgJp7UiiVk0uXWE+gtmWdbFYCli0T\nLm+GYTDDfwaG/TkMaALYxNtg5uiZvIe7Xb4cGD26ePfv2LHs/9FpzdFIblrDABMOF02hUHTh11+B\n16Ybh9yoeA/0Rvuc9oL0/gFg6cWlINUTYGNT/lqzOs3wQf0PeC1PX6gCoFDeMnbuBBo0MLYUuiGX\nA1evCpc/wzCYMXoG7M/aC9L7d67ujPFjbFEy1ElhITsqM0U0KoDo6GiMGjUKAwYMwJYtW3D27FlD\nyEWhUKogBQXATz8Jt3HqRfYLdO7RGR81/Yj33j/A7gEo6/KBYdhnKigARh8ajdSsVN7L1RWNCmDR\nokVYsmQJatWqhaFDh2LDhg2GkItCoehAejprd15ZsbYGTp9mG00hCIkIQVhsGIaOH8p77x8AfvsN\nOHeu9DmRCDh7FjA3B8Z9NA52lna8l6srnHw7u7i4gGEY1K5dG7aVcWWJQqkiSCTAwYNAx47GlsQ0\nWf/pesHyvvjsIqLtHqGLo/oNGKbmE0ijAqhRowb279+PnJwcHDt2TG0cXwqFYnzeew9QEYepUiEW\nsxvZ3oQhqTQ42DqgX3sFmqmI+xITw45q3NwML1dFaJwCWrx4MRITE1GrVi3cu3cPixYtMoRcFAql\nihIVBVy+zH++qVmpSMlKAQBcSbyCX6//ymv+Tes0RVeXriqvnTsHXLkCRCZEYtbpWSrvMQYaRwDr\n16/H8OHD0aRJE0PIQ6FUCcTieAQG7kBSkgJOTiKEhATwEjLw1i2gdm3j7Drly9WCj48Q0gHh4nDE\npsfix64/op5tPTSv21xzIi04exa4cQOYMaP8tXHj2P/TZM0w+oPRvJarDxoVQJs2bbBixQpkZ2dj\nyJAh6NevH3UIR6HogVgcj969NyAmJhiALYBsXLkShNOn9Y+Fe+EC0KyZcRSAIVwt6MPIViOVf7vV\ncoNbLX7nY7amjsfXXVYBUD9NXsemDurYCODnQkc0TgH16dMHv/76K1avXo0LFy6gS5cunDNPS0tD\n9+7dIRaL8ezZM4waNQp+fn4IDg7WS2gKpTITGLijROMPALaIiQlGYOAOvfOeNEkYNwpc8B7ojVbS\nVkCRCacem62OHmVj6VYmBrf0Qpd2qo1k8vOBU6cMLBAHNCoAiUSCn3/+GePHj0e1atU4B4QpKChA\nUFCQcrSwZMkSTJs2Dbt374ZCoaBxBSicEIvj4ecXjKFD18PPLxhiceWPGJKUpEBx41+ELSQShTHE\n4Y0iVws2z9htsPq4Wjh+HMjI4E82aZ4UUUlRyvepR48gtJvYHzsu/s5bGT4tfWAmMlN7fdMmdn/D\npOOTcOmZiewMIxoYMmQI2bdvH5FKpZpuLcXChQvJxYsXib+/P4mJiSFdu3ZVXgsLCyMLFixQme76\n9etalfM2k5SUZGwRjEpsbBxxd59OgCzC/nSyiLv7dBIbG2ds0fTC13d+iWciymfz9Z3PKX1F78Wh\nQ4TI5XxJqj0KhYI49nYkCAJpP7Q9USgUgpbH9Tdy//l94rfPv/T7VP8SafT+eF7epxcvCBkwgNu9\nj18+Jpm5mXqXWRZd2k61IwCxWAyxWIwVK1agffv2ePHihfKcJkJDQ1GnTh107txZGT9AoSju3dja\n2kIqlfKgvihvM0JOlRiTkJAAuLsHAch+cyYb7u5BCAkJ0CtfhQLYs4fdeGQszojP4OMeH8PurJ0g\nrhZ05d133gU56l76fUrphGd31vDyPh1P2IcO4/dyurdZnWaobmUa5vRqF4HnzZsHgB3WkRL7shmG\nwc6dOyvMNDQ0FAzD4NKlS3j8+DFmz56N9PR05fXs7OwK9xNIJBLOD/A2I5VKq3RdxMbmQNVUiVic\nU6nrRaGwRECAP27eXIDYWBFcXRWYPXs4rKwsOD1XRe/FunWs/3ljIcuUYXjv4aj7qi46tO6g8/eU\nnCzCkycyDqhJAAAgAElEQVTm6No1v8L7tPmNCPk+uVo1hIu7osJ87t83h40NgatroV5l8YlaBbBr\n1y7l3+np6UhISEDDhg1Ru3ZtdUmU7N69W/n36NGjERwcjOXLl+PatWto27YtIiIi0KFDB7XpHR0d\nucr/ViORSKp0Xbi5WSMyMhulf7TZcHW1rtT1EhcH5OU1QGjoB+jbF9i8mQ3kzhVTfi8GOQ4CAAzx\n1M/PTloa8OwZoOkxudZF6MNQNHazLP8+DR2KerbOetcnl/THj7NO+uQ28fjq6Fc46XdSrzLLkpyc\nrH0iTXNEx48fJ5988gmZMGEC8fLyIn///bdWc0z+/v4kNjaWiMVi4ufnR3x8fMgPP/ygdm6QrgEU\nQ9cA3s41AH1R916IxYRERhpWFnX03tmbPM96Lng5XH4jeQV5xPegL3kaE1vufXJq60vuRz/UW45e\nvQiJj+d2b35BPnmS9kTvMsuiS9upUQEMHz6cZGVlEUIIkUqlZMiQIdpLpgVUARRT1RUAIYRER8eR\nESPmkyZN5pL27edX+cafEPXvRUQEIevWGViYEjxJe0IWnl9ICCHkTsodkleQJ3iZ2v5G/ve/ODJg\nwHzy4YfzSL9+/LxPOfIc0m1LP5KfL+yCtyZ0aTs1bgRjGEbpAM7Ozg5WVlbaDzMoFB3JynJBYmIQ\ndu1KhZOTA5ydjS2RfkyeDEyYALRowR6/fg08eQK0aaN/3h9/zH6Mha2FLT6s/yEAoJVDK73zO36c\nrSdXV72zUmJm5oKQkCA8fcpOx/CRt4gRIbj3LFhYVLzgnZ3Nejr97DP9y+QLjfYCzs7OWLp0KcLC\nwrB06VI0MsXIxpS3lo8+Yv2oNGpUWOkbfwAYNgxo3Lj4ODER2LbNaOLwSgP7BujfrD9v+SUkAJmZ\n+udz8MFBJEvZ+fGAADZc5tChQOfObHyAj7frpzUtzSw5efksLGSVGgCEnA/Blhtb9CqXDzQqgCVL\nlsDZ2RmXL1+Gs7MzQkJCDCEXhaLETP3emkrHxx+zPu+LePddNhA6H5w5A+iyDigEr3JeodWmVqUs\nCLXl66/Zxlpfnrx6ArlCrvJaXZu62DJAv4b422+BAwc031e9OrDlTVET2k6AbytfvcrlgwoVwKNH\nj2Bubo5hw4bBzc0NlpaWMHubfo0UkyY/n7WYKcLHB7h/32ji6EVODvs8QhIVxVrPGANCCIb/ORz5\nhexD1qpWC//6/mscYcowp8scNKrRCCdPskqyiIsXgc2bGbR4p4Ve+dfzXgSm+VGt0tS1qQtbS+PH\nVlGrALZv347AwEAUFBRg+fLluHz5Mh4/fozFixcbUj5KFSYmBvjuu+LjkBDA3d148ujDkSPAlCmq\nr927x64D6MvcuUDLlvrnowuFpBCjPxgNSzNLAOzaYcPqDfXaCPb6Nes+gS+srUuPvpycgFb6L1XA\n/6MR+Njdk9O9Fy7w813zhdpF4BMnTmD//v1gGAZHjx7FqVOnUL16dYwYMcKQ8lGqMC1asE7BimjW\nzHiy6IuPDzBEjWl8VBTrwrlpU8PKxCfmInMMaDag3PlCRWGF/nEqzNNc/ymtf5/8i9rWtdG+YXt0\nLeOq39WV/RyNPoqDDw9i++DtWudfWAi41XLnHMIyOpr93829EM5rnBH/fTwszCy0Lpcv1I4AbG1t\nYWZmhocPH8LZ2Vm5c1efOT0KpSpjoeZ3Pnas/pYhOTnA/v365cE3F+IvoN/efjqnt7EBFizQTwby\n5l9F9GjcA+v76hYqct8+dq2CK+PGsetAZiIz3J1wF+YiTlF5BUOtAmAYBmKxGIcOHULPnj0BAHFx\ncXQNgGIQcnOBiIjS51JS+DGXNDT797MhDoUkO5sdSRiLSccn4WbyzVLnOjTsgH9G/mMkiVj6Ne2H\nDg074NIl4FcVAcDi4oAhA21hb2WvU/4d+8UgtYduu57r2NQxuq8ktQpgypQpmDVrFpKSkjB69GhE\nRUVhzJgxmDXLdMKZUd5ekpOBEt5IAAD16gGHDxtHHl3JywPOn9dsyXTgACCTVXxPRdStC6xerXt6\nffmy9Zdwr1V6gcbCzEK5JqArZ8+yH32pX5+1uCpLo0as/ySAna7SFqfqTljWm/u6aHo6O2oowtgz\nKmrHH++//z7+/PNP5fGHH36IsLAwWKgbx1IoPOLqCpQNPSESAQ0bGkceXbGy4raQee0a0LUrO+1R\nGfmg/gcqzyuIAjK5DHaWdjrlq08H+brkOu49v4eADwPg7q7agEAkYoPPTzs5Dc3qNMM3nt9wzl+h\nAOQ51eBRl3v0+sJCdtEfALbd3IZbKbewod8Gzun5hvMElKWlfpqcQuELQvRrGEyRFSv0S//ff2zj\n4snNGMVgbIzaiOfZz7Gw50Kd0nfvrnvZ9pb2aGDXgNO9P3VcjFr22nk5SEwEPv1UO9PkunWBRYvY\nv33f90XAhwFalck3RvQcTqGoRiYDSjiULcXOnaVNQ02ZtWtLWzEJiUTC7pw1BuuurMOma6qHOZPa\nTdK58deX5nWbo0+TPnj0iHXBoQ6FAmjzQTWkp2vXq2jUCGizcDQuJ1zWSb5q5tV0tpDiC04jgIyM\nDDx79oyzO2gKRR8yMtTbSg8dCowcqfqaqdG3L/cpndRUdq5bVyvr/vx5YNAav/f91O605WORMzCQ\n3eOg6/RY/frAqFHqr4tEwOPHQAEjQ6HCSqtGeUmvJahZraZW8hw7xpr8NmvGrjswDAMRY5y+uMZS\njx8/Dh8fH2zevBk+Pj44XNlW4SgVUjJGqqnE3HV0BIKDVV+zsVFvTmlqeHiwvUQuFBQAHILtmSR1\nbOqgvl19tddf5bxCZq7uTn2cndn60YaXspf47jg7VKxZE6gg/AgAwNIS6LajG5684r5LKyEBqG/r\npPWO3hcvWKstAGi9pTWi06K1Ss8rmtyFUnfQxkNod9CVyd9+ybooLDRu3FtNKBSEZGQIl7+q92Lv\nXkJevRKuTH2YemIqCX0QKkje6n4jmbmZ5Ojjo1rlFf2kkGRqEaq3QwdCEhO1KqIc8kL+XmReYwIX\nQd1Bv72YYszdrKziRTJ1eHuzbnVNlUePgH6673/Sifv32UVgQxMRH4Fhfw6r8J7VfVbj8xafG0gi\nlupW1dG/WX+8fg106cJ2bzSxZrUId+9yL2PB7tP44doY3YUEjL4RTGPpRe6gPT09cf36deoO+i3i\n0SMFVMVIlUgUxhAHAGs3r2mZ6cAB054GatGCdWGtLWfPsu4PdPHpv9A466zo7NwZLerq50xNE7du\nAZGRbBwFbbGxYUNuclmK2PizAhKpBAA3W+NujbupNX+tiJQU4MQJ1jU1IQTZ8mydzWT1RWt30AuN\n9aZReIdhRACyy5zNhqOj8YzD6tTR/EM35ca/CF1kLCw0Ti9eH8xEZnjH9h2N991OuY0ceY5OZdSs\nWTqGAheGHhiK9Jx0mJtzd5CXmZuJT/d8ymlzVmwsIJNaop5tPe0Ee8OrV+z/Z+POYuRBI1o1aJoj\nCg4OLnU8c+ZMreeZtIGuARQjxBrAzZvFf1fWNQBCCElPN5IgGjh6lJDnAofCLVsXEgkhf/whbJnq\nKCgs4HSff6g/efhC/9i7ZVH1G1EoFCQsJkxt3PGKuHmTkGvXNN8XGEjIkSNaZ18OXWRUB69rAHv2\n7EGXLl1w4MABdOnSRflJTU01pH6i8EhODjBrFiCVsseuri44fXoSfH1XokePIPj6rsTp05Pg6upi\nFPmkUm6OteRydppFrtry0KhERrL1bEhkMnYfgKHJK8hD/VX1IS/U/EXs/HynVjtm9YFhGPRy6wWA\nQYsW2sVISEhgN3hpYsECIDjZE09fPdVZToAfM1m90KQhNm3apJM2KiwsJHPnziUjRowgo0aNIk+e\nPCHx8fFk5MiRxNfXl8yfP19lOjoCKIaPEUBBASEpKZrvi4khZPVqvYvTC6mUkMOHVV8rWxc8dpxM\nisWLCXnxouJ7hLYO0wZZvswg5SxbRsjt2+XPa6qL5GTtynmd+5o8TXvK6d6MnAzOI6Cy7N5NyJMn\nxWXyUY+CWAF98w133xglCQ8PB8Mw2LdvH6ZMmYLVq1djyZIlmDZtGnbv3g2FQoGwsDCd8qaoRpVN\n/8GDAJcYPnZ2bJBsY2JnBwwaxO1eY3ecSsLnXooGDbhZrJgK1hbWmm8CUKAowLHoYzqX06YNuz7E\nhYnHJuLis4sA2E1g2nA16Sp+uVZxjM7ERODBA6BGtRo67+QlpHi955tj3+B8/Hmd8tEbvdVOBRQW\nFhJCCDl06BCZM2cO6dq1q/JaWFgYWbBgQbk0dARQjDY9PXXz+U+fxr0VveWydZGby859GxtjrKOU\nrYuTJwm5c0ew4tQizZNynsNWKBRk6IGhJEeew6sMqn4jMa9iSEZOBsnP1y3P+/cJWbdO/fXjxwlZ\nvtz0flSCjAD0QSQSYc6cOVi4cCEGDBhQanXd1tYW0qLJaIreqLPpDwraYVK9ZXVkZrKuE7j2fs+f\nZ10EGBtT2EuRnl68s9SQDPljCGc/OAzD4M9hf6KaeTWBpQLcarmhRrUa6N2b9bKqLbVqsbuP1fHp\np0D1Hlvw/YnvdRfSRNC4D+Dy5csoKCgAIQQhISGYMmUKBg4cyLmApUuXIi0tDUOHDkVeiagY2dnZ\nyihjZZEYY0XLBJFKpZzrIjY2B6ps+sXiHM55RERY4tkzc/j56eGYXkfy84HJky2QnKx6QbFsXbRs\nyX6M/arwUe8lkUhE2LfPFtOnq+8cla2Lon0Dhq6L7T23g4AY5Pf6/LkIq1bZY9my0i4lKvqN7NzJ\nThVqK15sZiwavmcFicRJ7T0DGgyAVz0vnZ/92TMzRERYwc9PhkJFIVJkKXCyU1+eUGhUAGvWrMGq\nVasQHByMffv24fvvv+ekAA4fPozU1FR89dVXsLKygkgkQsuWLREVFYV27dohIiICHdQ46HB0dNT+\nSd5CJBIJ57pwc7NGZGQ2SjdG2XB1teach6cn6zPd0VE751Z8UZGttzZ1YUj4qPeS2NkBbdsCjo7q\nI1SZal1oIk2Whoj4CJ12BdeuzToBdHQsrWzL1sXKyythxphhasepOst5MOEgGlZviLaObctdy8kB\nTp0CBg/WOXsArAdSBwf2t5YsTcakE5Nw5csreuWZrEsAZU1zRH5+fiQrK4t89dVXhBBCfH19Oc0t\nyWQyMmXKFOLr60t8fHxIeHg4iYuLI35+fsTHx4f88MMPKucP6RpAMdquATRoUDls+nVBVV0kJgpv\nc6+J2Ng4Ur26cdcAVq4kOs9360qaLI1k52drlSZZmkx+CPuBVznK1kV2fjZ5mf2SpKWxFnC6kpFB\niJcX63eqdHmEfP89IfkFBq5wDujSdmocAdjZ2eHLL7+Ej48P9uzZw9kdtLW1NdauXVvu/K6ycf4o\nvODq6oJt2yZh7dqVkMsVcHQUISTEeDb92pCRAXTuzEZK0ma9YutW4P33gSG6hWTlBVdXF1y9Ognz\n56/E8+eGr3eFgvUuaW5glzLb/9sOhmEwreM0zmnq29XHol4aHD3piY2FDWwsbDBlLjuS8vPTLZ8a\nNVRbzzk6AqtXE9ReXg9J05JgY1FJQ7i9gSGk4mW3/Px8PHv2DE2aNEF0dDQaN24saHSwGzduoE1l\njPwtAMYY6q9dy07FfPaZ4cokhJ2ndapgCrSyTnvowsGD7CY3dbEBqlJdlOS33wBr69LxIErWhYIo\nwIBRbq7SJ3Lciacn0Mm5E6pbqV6nLFAU6O3IbcMGYMAANvzp8+znIITAwc5B5/x0aTs1PkF6ejo2\nb96MV69eoW/fvsjJycEHH2jvAIlSOejbF1CzNi8YDFNx42/KZGay9cWnpZWHB397AabOm4qb8TdL\n7TglhKC1S2usWbCGn0K04N7ze4h5FYPBHtpPonfpwvrtV8eZ2DP4+drP+HvE3wD0+07CxeFoVqcZ\nbMyqw8ysOK9du9j5/+rV9R9yOTgUj9x23t6J2ta1MfajsXrnqw0azUADAwPh7e0NuVwOT09PLNLk\nq5diFHbtArZt0z8fDw92mGtIcnN1T3vhgnEdqM2cyXon5ZP33uPuwOzePeDvv9Vf7+zZGdfNruO8\n63nl57roOrq07aKzfNI8KWLTY3VKW6gohEyum5VZs2YVGwp4uXlhz5A9SEkBXr7UqQgly3svh1st\nN3TsCESXiNdy+zaQp2Atd/Rl+PBic9MZnWYYvPEHOCiA3NxcdOzYEQzDwM3NjcYDMFG6dwe6djW2\nFNojlbKWR7o24uvWFXtWNAa//goMq9gdvqAUFLAmtOrwHuiNVtJWQNGIggCtslphyADdF07uv7iP\npReX6pT2g/ofYGQrYbxfMgwDW0tbHD3Kdoj44OxZoHnz4uOVK4HNt1dh5eWV/BRgZDQqACsrK1y4\ncAEKhQK3bt0SdP6fojvOzmycUT7w8wNu3uQnL03Y27OhEM10jI3911/AO5q9EQsGw7AxZfnmm29Y\nl8Oa+PBDtiepDoZhMMN/BmyesYuVNvE2mDl6pl5OyDo07IAtA7fonF5XCAG8vNRvesvOZy98+SUw\nVXcrUACATC7Dzts7YafCTX9gt0DM6jxLvwLABvH5+Wf2b0IIopKiOLmi5hONr25ISAhCQ0ORnp6O\n3377DcHqgrVS3hrmzwfefddw5VXWPkVMDBvBTAj8/YG6dfnJa8CnA9DydUteev988M/jf3Am9ozW\n6RiGtcxRFWshMzcTzTY2460BtRBZKBvkly/Z3dahoeyUGyuL/os+9vZAwxKxZ2adnqXz9JiuaFQA\nFy5cwJo1a3Ds2DGsX78e4eHhhpCLogVLlwIbN/KXX5MmQDXhd+wDAOLj9VvwTE/XLfoWH/zyC3CZ\nmycErencmdti/M6drCKqiH+f/guzpmYwO22GKb5T9G68zsWdg4LoHjWuZrWaqFGthk5p27VT3WGo\nUa0GEqYm4PlzRquwjuqwMLPAxn4bwTAMli5l3zG5HCgsJHiR/UL/AgA0alS8oYxhGJwLOKd1gHl9\nUbuUffToUYSHh+Pq1au4coXdoaZQKBAdHY3Ro0cbTECKZiZN0m0h1dgWIjIZGzv39m3Vduwl5cvL\ny4OVlVU5+dLT2UXQ7t0FF7ccq1bplo7Peudi6vh5i8/RP6Q/5i2ahxGD1diWciRHnoPll5ajm0s3\nnfP42EWHmJccEDEiPHrENtatWvGX78SJ8QgM3IGkJAXqOOfgVutQPP1evzgApoJaBfDxxx/jnXfe\nQUZGBnx8fACwzt2cK/KSRDEKtrbsR1s6e3bGlsQtkLkUDztt4mwwqc1kuLmxDbO9eo8EemNjw86D\naivf5LaTlcdubuzehcoEl+dKSGDnsf/6q+K8xnCMSW5pbomlQbot3JbE2sIax32P652Prpw8CYSF\nAStWlD4vkUrgYOuAbt3M0E133VSK6LRonL4ThjXjY0s4/MuG+2UFxIPjednsFxwMjB3LruGlZKUg\nPScdLd4RNsZySdROAdWoUQPt27fHwoUL0bBhQzRs2BCOjo4orGxBS99ycnN1n0JRZyHiPWgIrlyB\nygUwQyKEBQtfXLrEBvfWBS7P5eAAzJmjv5zPs5+XmrI4Kz6L32/9rn/GerLkwhLcSb2jdbq2bdkR\nb1lGHhwJcYaYB8mKURAFdh84Jai31w8+KJ5uvSG5gaPRR3nJlysa1wCmTp2KadOm4fvvv8fQoUMx\nffp0Q8hF4ciiRbr3gCuyEKlXT/igKxcvVmz+ydWC5dYt9mNIzp7V3fsmwzDo26cvzGJZ0ydVz2Vp\nyTrnqwiplF3/qYiw2DBsur5JedzAvgGa1tHdXCxcHI40mRYxFtXQvmF71LXRfpW7dm127rws5wPO\no555Exw5ordoSjzqeqDaow9QytGfbSpgLoJEovsaSEk++6zYiq1/s/6Y2XkmL/lyRaMC+OOPP7B/\n/34cOHAAJ06cQL169QwhF4UjCxYAEyfqnt57oLfSQqRFZotSvVAhY+7m5QELF3KTr6i3rK73Lxaz\nH0Py009A69bapVEQhdJKJXBsIFpnt9ZrVFNYyE6jVcSoVqMwr9s85bFHXQ90cu6kdVlFnIo5hfTc\ndJ3TF9HTtScc7fndcZiWBly9ymuWcHISAShhd9plKdA0FI6OgoZSMRhaPYW9vT0SEhKEkoWiAwyj\nnxmlNF+Kp7Wfwv6sPeZ+MVfZCxWL2eGpUFhZASdOaLb/LxoF2IXbqbVf//xz9mPqjD8yHqdiTgEA\nzERmmDVmFqzDrTFs0DCVz7V9O7B8ufr8atYEJk9Wf70iChQFOqVb6rUUTWo30a1Qnhg1CrhSwnOy\nOF2MjNwMuLqyI2I+6faVExw7jYVSCZxcCPf8/xASEsBL/lFRwPr1xcfn487jdd5rXvLmgkaHFj4+\nPmAYBoQQvHr1Ch07djSEXCaHsS1mVJGSwpoKauoFVkR1q+pI2JiABUsWlOqFNm5s+GkVVWy9sRUW\nzhYY034M7trdRfPnzdGyHkc/CQLxxx9A+/YVuyVQxYIeC1DfrjhIrfdAb+w+vRudu3dWeX///vpN\nw917fg+WZpZoVqdZuWvdd3THloFb8O47BtzwUQbvA97YNmgbalbTLv7EsmVAyYmI7be2o02DNjr5\nF9JE00ZN8MtaB/y5biUkEv69vTo4lO5oHXx4EE7VndQ6oeMdTf6iExMTlZ8XL15o7W9aW0w1HsCf\nh/8kNl/YEMyH8mMTYEP+OvKXYGVqigewcCEhW7bwV94NyQ2SV5DHX4YVsHcvIXkcikrITCAxr2JI\nUlISCY8NJynSFJX37dpFiAFeT0IIIT//TEhMjOb7nmc9JwP2DiDyQjmv5Re9F2FhhJw4of6+PXf2\nkAP3Dqi89kr2SutyIxMiyX/J/2mdTh0RcRFEli/TK4+iuigsJGT16vL++/lEli8jMa84fPFGQpB4\nACKRCEePHi0VzvG7774TVCmZIt4DvbFy10pcJVcBBiZhkfLjj/qlzy/Mh0QqQeOajQEAKy6vwMIe\nC+Fe2x0A62s+M5ONkconcjlw5gzwxrq4QhpWZ7dKSnIk6OHaQ+19qamsiwC+ds9WxLffFv9d0chw\ndfBqBHYN1NttsDqsrVlfQOoY1WqU2mu1rLX/UpNeJ/G6UYnP/QA5OaxPKCHcchQRkx6D+efm46/h\nGmxzKxEaq2vKlCnIyspC3bp1lZ+qiBA+VYxNzKsYTPq32KZun/c+ZeMPAEeOANO4x/vgjIUF8L//\naf6x5hXkqTxPVNi9Tp8OuBgh9o0qb5tXmavo0rYLGIZBO6d2GvM4Kz6LTdc2qbw2cCBw44bqdJ06\n6ecAMCs/C1cSuYch9H7XG32b9NW9QJ54+pR1DQ0ASVlJePTyEWxtgZAQYcoLOhuE+Ix4tKzXUpDG\nf9KkYpPiF9kvEC42nLcFjQrA1tYWU6dOxYgRI5Sfqsrrhq9BnhKT6P3fuwckJemXR4t3WuCfkf+o\nvT54MLsQaQwIIfjo14+Q9Lr0Qx6LPoZxR8YZRyiwG5CePCk+VmXT3yy9mVbvhktNF7RxVB3IY+tW\n3Rbjjz85jlspFS/iSKQSbP/PSF8wgJeyl+jxu/pRnToaNwYOHWL/vp92HyefnuRXsDK0dWoraOSv\n/v2L1/Fe5bwyqALQODZt2rQpjh07hhYtWih7u66uroILZor0b9YfeRPyMHvzbMycYdzef1gY60aZ\n70Aqx58ch6ejJ+rZ1uN9H4BYzG6pj4xUoG1bEZYsCVC7mMYwDG58dQPWFtalzndv3B1dXcp3ezMy\nWGWlrxdITbi5sdY3JeWcPHIyxh8dD5mLDDbxNgj6Mkird8OtlhvcarmpvFa/vsrTANg9AGPHll4Q\nLSJHnqPR0qdZnWb4deCvnGSMTY/F1cSrvLpyrmNdB+v6rgMhRKv6mrmgvIuQtXND0cezNTav4N8g\nY0CzAQCAhy8ewrmGM+ws+d0h2ffNoKrkdGL3nd0BCG9oolEBPHz4EA8fPlQeMwyDnTt3CiKMqeNg\n54BvRnyD+Oh4o+9G/f57/dInvk5E0usktG/YvtT5O6l30LhmY9SzZVuV9HTW37yD7pHqALCNf+/e\nG5S7KmNjs3H9ehBOn1ZvUVG28Qegdg7ayordWyA03t7lz9VqVQvWP1tD1kgmyMhQnb+fOnXY51Yp\n57sqBNWD/MJ85BdWEHhABxiGwfsO72udTpUrDctCG3TvqKNNLEdWXl6Jie0monUDLTeAcISLixDe\n4XcdmkUul5OZM2eSUaNGkWHDhpEzZ86Q+Ph4MnLkSOLr60vmz5+vNq2pWgEpFArl3ynSFINYA2iy\nAtKHi/EXyYpLKzTet2YNIb/8on95vr7zCZBF2Oas6JNFfH3LvwuZuZnkTsqdUufK1kXsq1j9heKR\nA38fIPZd7XW2Cot+GU367OpT7nxSEiFNm5Y9x+97sfXGVhIRF8FrnkKiUChIg3btCYLeWOQFgbQf\n2r7Ub5RPpHlSMvzP4YLlHxbG/s4UCgVpP1T35+LVCmjy5MlYv349unQpHzru4sWLFSqVI0eOoFat\nWli+fDlev36NwYMHw8PDA9OmTYOnpyeCgoIQFhYGLy8v/TWYgZh7Zi6qF9bAg135uFFwC3Z18nBg\nxibe7IG14cwZ1o94yUhF2tK5UWd0bqTa/rwk+o40ikhKUqDUlnoAgK3KLfXRadH4/dbv2NBvg8q8\nChQF8D7gjXMB5wxnLw02SMvUqarrfeigobhx64bOvX+3Wm74pf8v5c43aKB+EVgda6+sRVeXrpx7\nqs3qNEMD+wbaFcITF59dxJora3Bw+EHOaRiGwfLpM/D1v2MgaywT1CCjaFomLScN3f/prtwTxee0\nTNOmrIuLIkMT31Bf5LvmG8bQRGuVwQGZTEays7MJIYS8evWK9OrVi3Tt2lV5PSwsjCxYsEBlWlMd\nATx6Ek1cm08q0YvNIu7u00lsbJxgZarr6W3fTkhkpGDFkt23d5frgeuLNiMAVXDp9V66RMj+/fpK\nqs473kYAACAASURBVJ7LlwnJyip97kL8BZKalSpcoSpISkoiMTGs3bsqTsecJomZibyVV1BYQGad\nmkUKFfwb2cvyZVrtSUjNSiUp0pRSvWXnju3J3bvC9M4Nvf+n5HNpO6rhdQQwd+5ctUpjyZIlFSoV\na2t27jYrKwtTpkzB1KlTsWzZMuV1W1tbSKVSbXWVUQmZvxfix0tQ3ivgSuzeHWRQWQIC9Et/Pu48\nFESh1q7e1tIWZqJiHw3377NrAPpYAIeEBODy5SCIxSXc6roHISREhWtHHbG3Z+fFhULVJvgzsWdg\nY2GjXDPRl6z8LJWLjPn5pV1+WFkVBxQvi5ebbiPrAkWByj0L+YX5cK7hDBHDv5G9tYW1yrUedfzv\n5v/gUsMFvu/7YprvDIxb/QVG952JevWE6SUbev9P0Shg7KqxBjE0UasA7t27h9zcXAwaNAgfffSR\n1qHWkpOT8d1338HPzw/9+/fHihIOvLOzs1G9gnBHEl3dLApEem46YmJlKDWFUfcRYJ4LsThHMHml\nUqkgeb94+QIKooDESnXe7aq3A+TF38Pmzfbo1SsP7drpvghoZWWBvXuHY/nyBUhNZeDgQDBr1nBY\nWVmUesbj4uNwq+EGj9oepdKrqovrqddhb2GP5rXZOZk6ddiPIV+f8c3GA4Sfd7ZQUYhOf3TCae/T\nqG5Z/PvYscMG8fHmCApifcRIpVLY20vQqRN/zyqTy9A7tDfOeJ9BNfPy4eCGNBwi6O9SnfIBgLSc\nNNSxZjV7gHsAACAxUYLxYz7HML9TmDCuAwoKJIJ972P7j8Xd83eV003jBoxDcnKyxnSEEGxesgTf\nzJ2rsSGfMKEWFi/OQK1aBB3bdIRvW1+sS1mH9+LeK/Uu8E5Fw4PHjx+TFStWEH9/f7J+/XoSF8dt\nuuPFixfk008/JZEl5im++eYbEhUVRQghZN68eeT48eMq05riFNC3R78lnb/2Lj2F4XGIoOVvnKcw\ndEHVtMfOnYTcvClYkYKRmcntvr139pJ7qffKnVdVF7tv7yZhMWH6isaJXr0IiY4Wvpz8gvzy5/IJ\nKTkTUNF02Bd/f0Hupt7VqWxd3EPwwYarG8isU7NUXssryCOtfmlF0mRp5a/lCWsoUYSu0zL//vkn\n+d7enpz4S/N00blzhMjKeMW4lnRNq2k3XdpOzmsAUVFRZNKkSWTYsGEa7124cCHp3Lkz8ff3J35+\nfsTf3588evSI+Pn5ER8fH/LDDz+orURTVACEEBITIyYODtONvgZw+DAhjx8LVqSSrTe2kn8e/8Nb\nfp07E3L/vu7puf7QV68m5NYt3ctRR0ICIfISLn1k+TIy4+QMwSxDKiIpKYns2kXIxYvlr91OuU2y\n87N5LS/4XLCgVm+58txy9Zgrz1X+XZEvpXnzMsixY4KJpuTPw39qZeWlUCjI9+3bEwXA/m+A90QQ\nX0BZWVk4ffo0jh49ipycHAwaNEjjqOLHH3/Ejyoc1ezatUu3YYoJ4OLSGD16TAKwEikpCjg4iLBk\nCX9eAbnCoforZO2VtWjToI1GPyyejp6lLGz++Qf45BP1dueaOHuWdQEhNK1a8e+7CGCtrkoiV8jR\nsl5LQeZoH754WM4jpEzGxk0uWgdwclL9nLrY1ZckJSsFabI0vFfvvVJ5auuxkyuqfCmlydJQaF6I\nB3sfAIDKqSGxOB4//bQD9+7l4s6damjRQv2mQj7wHuiN6/9d5zz3f/LgQfS9excMgD537+JUaCj6\nqNpEogEFUSAuI07tRkG9UacZjh07RiZOnEg+//xzsmnTJpKQkKCXduKKqY0A7qbeJa9zX5c6t2ED\nIXPnsrb05+POC1a2EMPbKwlXSHxGvNbpJk5kbdKFIjs/m/Tf01/lFAgh6usi9lUsmRs2VzjBCCG5\nuZrv4ZMJRyeQqMSoUuc++aTY8ktdXfDRywx9EErWXVmndz5cUWdls/vgbrVpYmPjiLu7YUfj2lCy\n908ATqOA0FDVVl3/Jf9HPt//OadydWk7GUJUr+56eHjAzc0NHh7sYlxJDb1q1SphtBGAGzduoE0b\n1X5RjMHkfydjVKtR6NCwg/KcXM72xsLFZ1CgKECfJn0EKVsikcDRsThq0uLFQK9erC/6ykJ0NOul\nsUOHiu+TF8pxNekqujQqv+8EKF8XRcjkMpyKOYXPPD7jQ1yVtGwJHD2qvf9/Pim5G1hdXXy4+UMc\nHnEYLjWN4BVPRwgh6Di8I66+V2xl0/5+e0QeiFQ7uvLzC8aePTNQel9JNnx9DW+Rp4oTf/0FZswY\n9JEV7+g9YWMDZudOtaOAxETWo2lTFdE6CUdXGbq0nWqngKqqu4eyrP90PWJj2cb3hx/Yc0VTGb3c\nehlUlp49DevxcuuNrXid9xrTO+keBzoxEYiP16wALMws1Db+FWFjYVOq8ZfLAV9fYP9+/lwD37hR\n2gRzY9RGMGAwsZ0esTi1pOzv/9tv2VjQJeUKHxOOWtX4nf/adnMb6tjUEUzBFpk9jvl7jNKXkqbN\nT9psKjQGdy9dQpanJyLLuAi3u3hRrQIoO8VYEiFNQdUqgHbtNLuxrSpYW7NzyyXJyQFiYtjeoaHQ\n1IhqYsgfQ7CgxwLOEbUGNh8ISzO2hcnJYRvVL77QrsyePTXfk1+YDwuRhV4vetFA1sKCgb8/G8uA\nLwVQdt3D/31/ZOVn8ZO5Gq4lXQPDMPB0ZCPDKxSsyWfDhuzfrVuXX1OpbV2bt/Jnn56NaR2noUPD\nDrAy13HhhyMlbe252NgXx+ktPQIwlTi9M9esYZ1olVykSU3Vy6HWqZhTKFAUoF/TfjxIWIxp1JiJ\ncuTxEaTJ0tCgAeuXvSRPngArV7L3HIs+ZhwBtWTVJ6vQtLaKMaYa6tvVVzYqFhbAf/+xjQ/fbP9v\nO2aHzdYrj757+uLu87sA2O/KnKcYLPHx5Z+5RrUacKrOsxvWMiRnJeN59nPlcUYG0O/Nb18kAr78\nsvSo4FXOK97KnjpvKo5tOYYhE4Zg4qyJ+HLal+g2phumzhPG1WrRKMD+rD0n1wchIQFwdw9CcbD2\nok2FAYLIpzVJSUC3buy8HcAOS7t1AzRsfu3Rg13sV0V1q+rCLMRrvWogMKa0CDzn9ByS9Lrilc+r\niVfJ9SRhZC652DduHOvqwBioW5itiNxcQoYMISQnR/O9CoVCo+mipgVxyWsJ76Z2CgUh7doRIpEU\nn1Nlj25oytZFQWEBcV3rSjJzOW620IAxwp8qFAoye/5szt9hbGwc8fWdTzp1mk18feebzAKwkoKC\n0sccnuvaNXbPh67wughsLExtEXjpUsDRERg92vBll1zsi49nHUbZ2+uWV25BrsodnprYeXsnriZe\nxc/9f9YqXUEBEBHBbQqIC+oWPlURGclGM9PgsURrCCFovaU1/vb526gLrUeOvEBy8jv4+uvSsvE1\nV0x0WJg1Ftq8F28DBYoCmDFmKr8HXdpOOgWkgS+/ZO3fVZGXB+zYYRg5XFx0b/wVRIFmG5ohIzdD\n67TD3xuO9Z+uBwDExQG//cYtnbk5t8b/Vsot5Bbkai2XKvIK8pAsTUbTpsBI/uKWKGEYBtfHXzdY\n438n9Q7WX12vPM7IABISgLp1FfAo7SmD14b5bQx/ajAePiwdMq4kN2+qv8aRQfsGISopSq88SkIV\ngBqWXVyGVzmvULeu+qhMFhbsd7rl2nbsv7dfMFkKC/VLL2JEeDLpiU5ziNXMqykdw5mbVxyEvIjM\nzOLpT00sv7Qcia8TtZZLFbvv7MavN35F3brA+/rthwLAjmDKBpkp6SRPaOpY10GT2k2Ux//+y3Y4\nGjcuRLduxfdFJUVBQfhdnCkZ6tLY4U8rFbduAdeuqb528yYQG6s26Y4drGVXRewZsqdcECe90H3G\nSRhMYQ1AoVCQlZdWkrSMPE73P3zxUJAAJUVzvZ98wroiNhbyQrnGtZCSTJ7M+iziEy6b4vhcA1Ao\nCBk0iBCplD1Oz0kn58TneMtfH0rWxevc18Rrp5cgrpq1dX9gDAzhC8hQSCSl15u0RZe2k44AVMAw\nDKZ3mo5PelkiOlrz/R51PeBaS7g4yX//DXh66paWEIJHLx9p7c21JKdiTmH+ufmc71+7VpgpGE2U\nnKJYtAg4cECfvIDDhwG7N56Zn2U+w8kYYYOPc2XjRjvcZQ2eYG9lj9P+pwVx1ew90Bvf9vyW9v4N\nRIMG7EcT+YX5+OfxP7yUSRVABURGqt6ZV5aQEHZuViisrXX3o/NS9hLj/xmvV/n9mvbDlv+3d+Zx\nVVXr//9sBgcEzbyYGsZgDqFXuwppaU5p4NX6XrJEBdTSftmtFKcUvSiKgSllt66WYi8nTBORrqmI\ndFNIJcWBWc0URWQQZ2bh7Of3x+ZMcA6cvc+IZ71fL14vtmevvR6W6+y11rOe57Pe2AwASE4W8gGa\nguOaD8O8V3UPG9Man4ClL9V11didtRsBAcDYsYZ7bv9n+iPitQjDPVBH7lXdw2s7XlMM4NnZgJtb\nHZydjV83x3FYs2IN8/3rSng4UFra9D3XrwuzEz0gIuy7uA81dfofgs0GgAbwxGNK3BRU1VbB3l7z\nYdwN6dcP2JIbhehz0Qa3p7RUd3+6JpzbOeO3d38z2Je4UychKkoTZWXA/v26PaficUXzN0nAzsYO\nKTdS8Gz3Wr1E4bZv1x6TbUo6tumIqLFRiuvoaMDFRYYuXYSZ4A9ZP5jROoYCIuHL0aFD0/d16qRV\nU0QmE/aumtvza23XGtv/sd0gCXpsAGgATzz8Paci/azupxT5+QEfvDIVk/pOMrg906YBZ88a/LGi\neVj9EKcLTqNfP2D4cM33lJRA4Zpoju4duuOf3v80nIH12NnY4dsJ36IgvxCBgSsxatQKBAauRF7e\nDZ2fIZMJbS6XWdiRsQNpt7Rs7BkZjuPwt65/A8dxyMu7gbt3V2L16i8QGLgS6ZczkF6cbha7GA3g\nOEGfQ1WbQxNOToJWiQZsbYEff9Rt0mkwpG85GAdL2ATOzyeaNMncVggbXDyvUw6JRu5V3qOjfx41\niC25t3Ppo0MfGeRZUhCz2WdotcjDfxymS6WXJJU1FJeu/EEePeZbrAKmuXiSNoHFknozlRYkLlBc\ns0QwM/Lll0DnzsCUqTK9QwXz8m4gNHQbrl2rgodHW4SHS9M6zy3NxZ7sPVg1apVe9jRk0ybA3V17\nfoQmVHXfbz68ibb2bdGpbScMdB2I9avWN1teTMJPH+8huFxdCjxuD9TIl+R16NGxDn9e+F1rOXm7\n37rF49lnbSS3uzF4emkX3P/uF+C+qo6T5ShgmguLSAQ7cQLYuVP4YujKG28IWaZ9+zZ/rxYeVj/E\n9QfXMaDLAAAGVgO1Rh5UP4BvjC9SZ4rPePzHP4Cvc0Lw8KyLXiqReXk3MHbsN7h6VTg8PTW1Ar//\nvgJJSeIPn/F09jT4yx8ABg1qfPj67NnAggXaN82Heg3F5oLNqHRVOtYdrjtgjvccg9tnW9cd6JsB\nvKASc53rAMocr7jcsEE4XEd+sHrDdgekt7sx6Hf6Pfym+vJ3LAL67rUYBUyrxttbvNDbv/+tUdp3\n/XrBFTRHh69FhzYdFC9/qbA9ABWcWjlhUc/t+N//xDvhPDyA1T7L9PZrh4ZuU3kJAUA7XL26EqGh\n2/R6riG4V3UPMZkx8PISVgCqTJnStFS1amIRAKMmGL3o2Rc4qV4XTvXFkIGeintatVJX+XztNQ3t\nnv8pXto0DI9ljw1uo1ie69oaSvEzADYyoNrBYhQwrZrWrXULF1TFw0N40zcgKAiYPl3co8pqynC/\n6r64QvWw3qOCrY0tnrHtjXKJSr+OrRxRV6ffDo6htM7PF51H/MV4vWxpiC1ni4ulFzV+NmJE0/tf\nHMfB/01/tL0hbK4bU15g9ep30RnPABcFKQNcbINn0AWrVyu1rN9/X3DZyWnfXkO71zrDI3uCQhLb\nnISHz4Br34VAm/qs6Ucd0aP8suUoYForDx5ID9OTyYTTklT4y1+aDyRSZd7yeej7Tl+8HPSyJBOM\nOgBkZGQgKCgIAJCfn4+pU6ciMDAQK1euNGa1kiAi1MpqMWyY4M6RQnw88O6sGr204pVa56qI1zrn\nwBlctqBDmw747DUhhvmDD4DcXCFU8rGOE2Tn/s5wue1idHkBd3dXpCZ/g05/dAQIaH/FEaeSv27S\nldOvn6Z2r0TPp7TogJgYd3dXjFlRhxHTPsUrryxBQECUxbinrJoFC4QvvhS2bBE2D/VgqNdQ3P3L\nXVz+62VpDzDYlnQDoqOjacKECeTv709ERLNnz6a0tDQiIlq+fDklJSVpLGeuKKDLdy7TwE0D9XpG\ndTXRx4fm0I506ToI165dJycnyz3vVM65c0SPHhFt3040d67u5aTKC0iJ9mhY1+O6x3TkyhGN9zaK\nHLIvIY+ewRbX7kREh9MPU3hyuLnNsAjMHgXE842ln3VF1li+o6KCqEcP3SP/eJ6nwW8PJqyAZUlB\nuLq6YsMGpYRwTk4OvOr1DIYPH47U1FRjVS2JXp16wefWb0jXI6y6dWvg63FfIWhAkORnuLu7Yu/e\nTzB5cpTJZnpEhLVLlugkF1FWU4bFSYvRseMNfPjhSmzdugK3b2uPs1+VvEpNKM+U8gIN6yp4VIAD\nlw9o/Dvd3V2RlPQJAgKiMGrUCrw8czaGhz+wmBn2vOXzMGL6CIycMRKhEaGI2xhn1ENa9EFMfzIH\nBrWP4zT68nVCw5F1JSU38Ne/rsTo0brlr3Ach2k+02F7RaJUgOghQwQFBQWKFcCwYcMU/56amkqL\nFi3SWMaceQDJyUR37uj3DJmM6MoVw9gjdXaz9cJWir8Yr/P9CbGxFOzkREf2NT8r53mewhNWk8fz\n83RapeTdz6NH1Y9E2a8JY8z0cm7nUJ1M++ytqc9MjTkOaZGKmP6kL1L6hUHs43miw4elz/7lVFcT\nHThARNLyV65du04eHvMJLt6WtQJoiI3KaFdRUYH27dubqupmqa6rRkl5CYYPbxzeKJaiIiDo4wKU\nVjSjCdIAnhciw6oNII3v3c0bns6ezd8IYTaUuHYtviwrw5F165qdFXEch0sxdbj2Zzi0RSpdvnNZ\nsQ/i9pQbnFpLPMjAyKxKXoXc0lytn5tS+rk5TBlFpQ9UXo7EBQt07k+mhoiQGBWlv31lZcCOHfqn\n7XKcoFpYW9tkBODHH6tLk8uvhXyhVUDJp5KqN1kegKenJ9LS0uDt7Y2UlBQMaeKE88LCQlOZBQBI\nL03HNxf+g+9f36L3szgOGPLPL3AocwBed9U9U6qqikNBQTuUlpYrVpRlZWU6t8WKqBXILspu9O/9\nuvbDyoXaN92PHzyI17OzwQEYm5mJPVu2YMT48VrvB4Br16qgKVIpL68KhYWF+Or0VxjpMhKvPvuq\nTrbrgpi20JUvX/kSkAn9bdnaZcgpyoGtjS0ePX6EdvbtYMvZNtt+puS98e8hKzkLlW6VcLjhgJkT\nZqKoqMjcZqmRsmMHfIqKhP6UlaVTf9IHMf2iVUoKjv36K17PyhLsS0/Xz74vvgCKi6WVVeXzz4HS\n0ia/VxMn3kdxcZVCFNLDoy2Ki6uUZWonAjgvvm4pqxZdUXUB5eXlUWBgIPn7+9PSpUu1arebwwVU\nXk7Uu7d+53EaAzHLWykuAp7nKXjwYOKF9SbxgHDdzA7UlIBQwlRfgm11/VJVWK4GBITpbK9YjL3Z\nN/+b+WQ3zc6iXSyqG36D327+/8nUSO1P+iCmX/Dp6RTs6WlS+8QQEBCm4v7R7XulWkbKu5NpAdWj\nz0EMDeF5oj17NG7yN+LxY6JrWs6SEdW5VV4OCINOL4mEyEg6Ym+v2tsowcGhWd/ou3PeI/u/OhPc\nXiG4jiC4DiNbL0f6v//3fzrbKxZjDwA8z9PgieLazxzE/jeWHF91tKiBiWpriSIjKWHXLjri4KDe\nn+ztjboX0GS/4Hmi//xHmOGR4PtvZJ8O/b0RKSlEcXF6WK2BzZup4KcDkvYA5GWkvDutXgqipLwE\nxeXFGNBVv5RqVTgOiEs9i94vdcaL7s81ee/588DXXwO7dulbp3CO67T4aahyq9Ip0Srr5k2U9+uH\nVJX9GMrMhGNcHHwmTtRa7u+vjcOeR7tR63ZK8W9211rjbZ+39fsjzAjHcVg4bSGm/zQdla6VFnsO\n7sQ3JuL4b8ctzvePVq2QlZqKci8vpMrbjOdBMhkcT5xosj8ZDY4DqqqAR4+Adu2QdfKkun0Q9gQc\nExLg89NPuvv0HR11OxtVDK6ueNbDA0lJ/REaGoXCQh7dutkgPLzpCEB59FpoaBSACeLr1WPMMgqm\nXgEcuZhMIUdWGvy561PX07G8Yzrdq22Sqeus90zBGaqqrTKMi6CoqNkgZCmrDX0xRby3pbtY5Jg9\n9l0KDx/qtiQWSaO2ePCA6JdfxD2ktlaY1bdwLDoKyFLh8ofj1g/LDf7c4CHBGOk2UuvnvIqyg76T\nzK3pW3HpziXFKsDpmFPTs9dTp4CLmiUd0KVLswbJ6+GuCfdZ6mxZLDq3H0Ng5UogJ0e3e+fPB342\nzDGGcogI30ZEqEfy3L4NJCSIe5CdHfCqSsBCXp5hDGwJGHwY0hNz7AEYa6IXHU2Uk6P5s/Bwom+/\nbbq8lJkez/O0OGxx07PXXbuIEhObftD+/UTx2nMJTD1bNtWsV6f2MzMWswJISCC6f1+3e6uqDP5F\nS4iNpTmOjnRk40aie/cM89Dbt4lefll7RMhbbxFdvmyYuhry++9EAQGSi7NNYJFkFGfo7KaRwtLt\nP9ORs5oPEikra77Pavui8zxPM36aQX/e/VNfE7Vz7hxRRkaTt0iVdZCCxbz0LIAW3xbaoh5EoBpx\nFNy1K/EHDxrAMMXDtX+WnS24jIxBRYVwGpVErM4FpJoeL/9pLj1+3vJ5GOw/GM8MdsNg39fxxuR3\nMNh/sFFS6nsPuIe/dNUsDOfoCMln1nIch1l/m4XnOjS9wdwIMTHjAwcKB5Q2galkHUjTUt/CIAuX\nPzAY0dGCiJlUeF7QOy4okP6MO3eQuHAhfOvj+X0ePsRRQ2RQypG7/qqrBbG3ykrl/6+np+AyMgYO\nDkD37ibtSy16ABjqNRRnbc8i2T1Z8XPW5iyGeQ/TWqbnc72QZnMBt/9+A9X/KEH5uDtI4y6g13O9\nDG7ftAHTMKib+gk9a9ZIdzHm3VcWHPrcUNjbitD/IAKmTgUui1QNrKgQ9gw0wHEc1qxYY3RfeWJc\nHB5t346jup44bwYS4+JQtHGjRdtoEMaNA3x8pJe3sQGSkwEXF3HlVF6GRITEPXvweqVwuJBPZaVx\nso7t7IRJUNu2SNy3z2T/v4lbt5qsrhY9AGhLjx/52khsS9+muO9e1T3F9cljJaCT/dTK0MkXceJY\niVFs3LMH+O475bWLizS5CRkvw7SfpqGwTGI2LMcBv/wC9O4trtz168JJ1WaC6lP3vyovt0hpAaCB\nvMCaNRZpo97I/yYXF+UxalKRTxiIgN+1H9GpVvfQoUB+PgAgMTkZvg8eQD7t4AD4ZGUZ/oVpZwdM\nnw4CkBgebhJ5C+J5JH7yicmkNFr0ACCP2nDIFw7+kEej1PF1KCpTujtqZbWK6+vXCbj/T+By/ez5\nogNQshhFRcZp6AtYiz3HP8SoUYK639ChN9CUDJKqW2vigokKt9bCsIVImZGCbk56nH8qRbWwb19B\npMjU8DyQn4/EuDjlUj893fJm2FVV6jZeuKC0sbAQyG4szyHHlEt9KXUpypw6JaweDU1xMbBuHSCT\nNbYvMxO4ckX4neOESUj9wJN18iROeXkhbMQIhAwZgrARI5Dq5YXMEycMbyOE1Z3v1avGG2hU69q/\nH74w4qDWEMk7DkZC7EaGLtEoN28qQ5CnTAkjoIzgUh/H7jKYgDKjyBhcu3adugz3IzydrnNmn8FV\nH0tKiEaNMszGVX1GpUk4eZL4SZO0SwtUVJjOlibg33qLgl94QbONv/xCFBmpvPnMGaL//U9xKVWV\n0lQKmIoysbFE1417LkIj+6KjiXTY2DVFhrip5C001tWnj851WW0UUHPRKGPGEOXmCr8rUqftdxL+\n5kSwjzHagStStD3uVd6jQX6D1JKsXpr4kvQOx/PaY1HFUFlJ1KePcAqMMaitJfr4Y6KaGuGa5ylh\n717NqftRUUSjRxvHDpEkbN+uu7zA8eMK6V+e5yn4+eclvVDEvvR4nhdeJKp1paYSffWV8qYG1/yp\nUxTs6moSvRye5yn4xRdN0hZiMZh8hNS6bG3pyI8/6lTeKqUg8vJuIP7HbDxV3B/792RhYD8vZGcL\nqdNvvCHcc/So0u0oT53+17+24sTZ/hj2zhWsXq37gStEhHUhIVgUGdns5ufx8wmA668AVO8jJJ+v\nAbACgCCdXMfXoW/nvgCAL1O/xJCRQ3Ax/aJCkuDT6Z9K32jlOMBTN2noJmnbFjh7FmjXUK1QHGrt\nJ4/caNtW8LcOGSKk2LdqBXAcsk6dUqTu19TUoHXr1kLqfkEBfA4cUD6U5zUermE09u4FfH2B9u2R\ndeGCZnkBTfIHI0Yofk2Mi4NvQYHaUt9YcgmJcXHwzc9Xr8vbW4j0ktOtm9p1Yno6fEtKTGff5csm\nqUssWuUjjCBvobWu1FT4TJpk0LpUK7AoxIxi2g5QiI+/TsZKJxCzlH519DuESeruHExqQ55/H6q4\nZ0/WHtqVuUutnEGSrC5dIoqJEV/OyKi138yZQsKZDmid6fG8sBowVnKOJsLD9Ypl17jU9/YmPiJC\np2QpnWe9U6cSn50t2oVhdreHiLpafE6Erjx8SDRunLAS14LVuYCkuFj0gT9xovFSugmuXs2j1j26\nqrlz7Ht3os3Ho5utS6rqI8/z9PnixcRnZxPpuHQUzfz5RGfPKuvS8cvKJyWpuxVE6G83+UXPz9f4\n4hRrX5MY8OWn1a3w/vs6ldf5pZeeTgl79oh2YZjd7SGiLqsZAIiEPaQmsDoX0K1bPDQdoFBYgput\nmgAAC5dJREFUyGu6XW8Sjx+Hb16ecqn6/ffwmTVL6/0eHm74ckko5hybC1mvWtj+YY9/LwzH+yO0\nl5EjVfVREY/u7W28ZaO/P9C7t3pdEyfWj7/lgFP9CWDHjwPbtgk/ABKvXFF3Kxw4YJhltGpY4g8/\nACUlwLx5je2TCs8Do0cLf4ebm77Wal/qt2sHRYT9wYPA4MGAs7PuD87LAzZsAKKihOsBA5C1bZto\nF4ZFuD3MpSBqyXh7K3/PzTWMa1fKQGRMLGoFwPNEe/cS1dRoXqo6OBAv37TU+gjp7hxJm30SN9PE\nwvM8Bb/0knpdZ84QjRypvKmsTIhCIhMu9e/eJfrjD3WpAEO0hQHkC0QRFkZ09arGj7S2hfx8WQvW\nMTI0VrUCkFNdTTRihNDXVbA6F5CUQ5RFwfNEixYR3bzZ/FK1Cd+cFM0cnufpXx991PyLKy9PEeKU\nEBurOODFWEt2OartoaiL57W+fEy91NdoH5Eg9tUEam6jY8cs42VaWqqI5GrUL/bvFyJ4rBSrHACI\nGvVLnuetTwtIHtETEBCFUaNWICAgCklJukf0aKS6WjilBRAiaNauBVxc1JJP5D9qyScffAAcOqTx\nkVI0c7TKH2RlCe4BOWlpwKlTimzU12trARgxPR7KzNdGqfiAVinpZtvPFPZVVQnLaPlhHjIZ8Ouv\namUVbqO9e4UU7nv3DG6faDIyFNnYjfqFg4MQNcWwLlQO3cGcOUiUqs9kiMHIkJjrSEgFGRlEs2aJ\nL1dRQVRXp7zWY+ao5r7o10+IDpFz7pzGzd2WtHEnBTEzvSbtU/1/KSkhmjxZccnfuUPB7u4Wd1as\nHIO7tZ4ArHYFoAIfF0fBL71kfZvAckhEbL7GMnfvCrHo7doJ4k/R0eKNcHBQ/p6SAmzeDMTE6GZf\nVZVQPwBkZyPxvffgm5MjbJZeu4ajtbXKzcGBA9Xjt+thG3dKdLavc2dg927FZeK+fSaLzZeCmuSE\nBdrHMA+JPA/fJiRHmsSgQ1Ez8DxPy5cvJ39/fwoKCqJ8DdrXUkYxvdLc9+0j+ugjov/+V3S9WpHJ\n1HS91eqqrSU6f155782bRL16KS75ykrFRq6xY7BbEk9Syr8ULN0+c2HtKwDVfmHxm8BHjx6lJUuW\nEBFReno6ffjhh43ukaIFFDxokPoXorSUaMMG5U0NrvnbtynYzU1ZxghnlSrqqquj4KefVtZVVUU0\ndKjSXcTzaq4jc7hXWgJPUsq/FCzdPnNh7QOAar+weBfQuXPn8Gr92ZsDBgxAttRliwqJcXHwvXhR\nfVk8fDhQvxkKQPi6qFwn/vwzfG/dUpaJjzdemnt8PHwrKpR1HToEH9WNT45TU+lUdV+oyR9YiHvl\nSaUlubVYv2DIUe0Xb0h5gKFHpKZYtmwZpaSkKK5HjRpFsgazbzGjmJRlMUtzb5mwtlDC2kIJawsl\nFh8G6ujoiIqKCsU1z/Ow0UPES3VTDNBNQ1tKGVPax2AwGKaCIzLd8UVHjx7FsWPHEBkZifT0dGzc\nuBGbN29Wu+fcuXOmMofBYDCeKAYNGtT8TSqYdAAgIoSFheFy/bm0kZGRcHd3N1X1DAaDwVDBpAMA\ng8FgMCyHFi0FwWAwGAzpWEwmsKp7qFWrVvjss8/QXVXm18p466234OjoCABwcXFBRESEmS0yPRkZ\nGYiKisLOnTuRn5+PJUuWwMbGBj179sSKFSvMbZ5JUW2Lixcv4oMPPoBbvTT1lClTMG7cOPMaaALq\n6uqwdOlS3Lp1C7W1tZg9ezaef/55q+wXmtqia9eu4vuFAaOQ9EKXJDFroaamhvz8/MxthlmJjo6m\nCRMmkL+/PxERzZ49m9LS0oiIaPny5ZSUlGRO80xKw7bYu3cvbd261bxGmYG4uDiKqNfFevjwIY0c\nOdJq+4VqWzx48IBGjhxJsbGxovuFxbiAjJEk1lK5dOkSKisrMXPmTMyYMQMZGRnmNsnkuLq6YsOG\nDYrrnJwceHl5AQCGDx+O1NRUc5lmcjS1xfHjxxEYGIhly5ahsl719Eln3LhxmDt3LgBAJpPB1tYW\nubm5VtkvVNuC53nY2dkhJycHx44dE9UvLGYAKC8vh5P8JCkAdnZ24HnjnOxl6bRp0wYzZ87E999/\nj7CwMCxcuNDq2mLs2LGwVcmQJpVYhXbt2qGsrMwcZpmFhm0xYMAAfPrpp4iJiUH37t3xzTffmNE6\n09G2bVs4ODigvLwcc+fOxbx586y2XzRsi+DgYPTv3x+LFy8W1S8sZgAwdJJYS8bNzQ1vvvmm4ven\nnnoKpaWlZrbKvKj2hYqKCrRv396M1piXMWPGwLP+OMCxY8fi0qVLZrbIdBQVFWH69Onw8/PD+PHj\nrbpfNGwLKf3CYt6wAwcORHJyMgAgPT0dvXr1MrNF5iMuLg5r1qwBAJSUlKCiogLOYs6GfQLx9PRE\nWloaACAlJUV0wsuTxMyZM5GVlQUASE1NRd++fc1skWm4c+cOZs6ciUWLFsHPzw8A8MILL1hlv9DU\nFlL6hcVEAY0dOxYnT57E5MmTAQhJYtbK22+/jZCQEEydOhU2NjaIiIiw2tWQnMWLFyM0NBS1tbXo\n0aMHfH19zW2S2QgLC0N4eDjs7e3h7OyMVatWmdskk7Bp0yY8evQIGzduxIYNG8BxHJYtW4bVq1db\nXb/Q1BYhISGIiIgQ1S9YIhiDwWBYKdY9rWQwGAwrhg0ADAaDYaWwAYDBYDCsFDYAMBgMhpXCBgAG\ng8GwUtgAwGAwGFYKGwAYLZozZ87glVdewbRp0xAUFIQpU6YgISFBr2cGBQWp5aE8fvwYo0eP1uuZ\nISEhOHHihF7PYDAMjcUkgjEYUnn55ZfxxRdfAAAqKysRGBgId3d39OnTR/IzDx06hDFjxsDb2xsA\nwHFcMyUYjJYHGwAYTxQODg6YPHkyEhMT0atXLyxfvhzFxcUoLS3F6NGjMWfOHPj4+GDfvn1o3749\ndu/erVBeVWXZsmUIDQ1FfHy8mhBbSEgIxo8fj2HDhuG3337D4cOHERkZibFjx2LQoEG4fv06Bg8e\njPLycmRmZsLDwwOff/45AGDXrl3YsmULZDIZIiIi0L17d8TExODgwYPgOA7jx49HYGAgQkJCcP/+\nfTx8+BCbN29WE0lkMAwJcwExnjg6deqE+/fvo7i4GC+++CK2bNmC2NhY7N69GxzH4c0338ShQ4cA\nAAcOHFBoqajSp08f+Pn56SxJUlhYiHnz5iEmJgY7d+5EQEAAYmNjce7cOZSXlwMQ9K62bduGWbNm\nYe3atbh69SoOHz6M3bt3Y9euXUhKSkJeXh4AYVWze/du9vJnGBW2AmA8cRQWFqJLly5o3749MjMz\ncfr0abRr1w61tbUAhNPW5s+fDy8vLzg7O+Ppp5/W+Jz3338fU6dORUpKisbPVVVUOnbsiGeeeQaA\nsArx8PAAADg5OaGmpgYAFO6kgQMHYt26dbhy5QoKCwsxffp0EBHKysqQn58PAHB3dzdASzAYTcNW\nAIwWj+qLuLy8HLGxsfD19UV8fDw6dOiAdevW4d1330V1dTUAoFu3bnBycsJ3332HiRMnan2ujY0N\nIiMj1Y7jbNWqlUKaOzc3V5RtmZmZAIC0tDT06tUL7u7u6NmzJ3bs2IGdO3fCz88PvXv3VtTNYBgb\ntgJgtHhOnz6NadOmwcbGBjKZDHPmzIGbmxvq6uqwYMECpKenw97eHm5ubrh9+zY6d+6MSZMm4bPP\nPkNUVFSj56lu+Lq7u2PGjBnYvn07AOCdd97B0qVL8fPPPyvOXm0K1WdlZGRg+vTpCoXXrl27YsiQ\nIZgyZQoeP36MAQMGoHPnzvo3CIOhI0wNlGGVHDlyBFeuXMEnn3xiblMYDLPBVgAMq2P9+vU4ffo0\nNm3aZG5TGAyzwlYADAaDYaWwnSYGg8GwUtgAwGAwGFYKGwAYDAbDSmEDAIPBYFgpbABgMBgMK4UN\nAAwGg2Gl/H827qoWdm5ZaQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, From 184fc76db0682161e1bd5cc430fb522d7898a2c7 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 25 Dec 2017 00:49:15 -0800 Subject: [PATCH 44/55] Finished Advent 2017 --- ipynb/Advent 2017.ipynb | 59 ++++++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index b6a1215..96d5420 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -2511,7 +2511,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 125, "metadata": {}, "outputs": [ { @@ -2529,7 +2529,8 @@ " d = perform(dance, d)\n", " if d in seen:\n", " print(d, 'is seen in iterations', (seen[d], i))\n", - " break" + " break\n", + " seen[d] = i" ] }, { @@ -4016,7 +4017,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `numba.jit` decorator really helps here, speeding up execution from 13 seconds to 1 second. It also helped on Day 15, but not as dramatically, and was not able to help on Day 22.\n", + "The `numba.jit` decorator really helps here, speeding up execution from 13 seconds to 1 second. It also helped on Day 15, but not as dramatically, and was not able to help on Day 15 or Day 22.\n", "\n", "\n", "# [Day 24](https://adventofcode.com/2017/day/24): Electromagnetic Moat\n", @@ -4193,7 +4194,7 @@ " for c in ctable[port] - chain:\n", " # Update chain, port, strength\n", " # then recurse and possibly update best_strength\n", - " # then backtrack and rest chain, port, strength\n", + " # then backtrack and restore chain, port, strength\n", " chain.add(c)\n", " port = other_port(c, port)\n", " strength += sum(c)\n", @@ -4220,7 +4221,7 @@ "source": [ "# [Day 25](https://adventofcode.com/2017/day/25): The Halting Problem\n", "\n", - "I won't write a parser for my input; instead I'll translate it into a `dict`:" + "I won't write a parser for my input; instead I'll translate it into a `dict` by hand:" ] }, { @@ -4235,13 +4236,12 @@ " \"machine()[state][value] == (new_value, move, new_state)}\"\n", " L, R = -1, +1\n", " A, B, C, D, E, F = 'ABCDEF'\n", - " return {\n", - " A: ((1, R, B), (0, L, C)),\n", - " B: ((1, L, A), (1, R, D)),\n", - " C: ((0, L, B), (0, L, E)),\n", - " D: ((1, R, A), (0, R, B)),\n", - " E: ((1, L, F), (1, L, C)),\n", - " F: ((1, R, D), (1, R, A))}" + " return {A: ((1, R, B), (0, L, C)),\n", + " B: ((1, L, A), (1, R, D)),\n", + " C: ((0, L, B), (0, L, E)),\n", + " D: ((1, R, A), (0, R, B)),\n", + " E: ((1, L, F), (1, L, C)),\n", + " F: ((1, R, D), (1, R, A))}" ] }, { @@ -4268,7 +4268,7 @@ } ], "source": [ - "def turing(machine, state='A', steps=12667664):\n", + "def turing(machine, state, steps):\n", " \"Run the Turing machine for given number of steps, then return tape.\"\n", " tape = defaultdict(int)\n", " cursor = 0\n", @@ -4277,7 +4277,36 @@ " cursor += move\n", " return tape\n", "\n", - "sum(turing(machine()).values())" + "sum(turing(machine(), 'A', 12667664).values())" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4770" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def turing(machine, state):\n", + " \"Run the Turing machine, starting at state; yield tape each step.\"\n", + " tape = defaultdict(int)\n", + " cursor = 0\n", + " while True:\n", + " tape[cursor], move, state = machine[state][tape[cursor]]\n", + " cursor += move\n", + " yield tape\n", + "\n", + "quantify(nth(turing(machine(), 'A'), 12667664).values())" ] }, { @@ -4397,7 +4426,7 @@ " run23_2() == 913,\n", " 24: lambda: strongest_chain() == 1695 and\n", " strength(max(chains(), key=length_and_strength)) == 1673,\n", - " 25: lambda: sum(turing(machine()).values()) == 4769\n", + " 25: lambda: quantify(nth(turing(machine(), 'A'), 12667664).values()) == 4769\n", "})" ] }, From 3ccf589fd11ed27d204d38f46fd1c736e78d5899 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 25 Dec 2017 00:55:59 -0800 Subject: [PATCH 45/55] Finished Advent 2017 --- ipynb/Advent 2017.ipynb | 115 +++++++++++++++------------------------- 1 file changed, 43 insertions(+), 72 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 96d5420..d400560 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -1017,8 +1017,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.07 s, sys: 12.6 ms, total: 5.09 s\n", - "Wall time: 5.08 s\n" + "CPU times: user 5.09 s, sys: 19.4 ms, total: 5.11 s\n", + "Wall time: 5.11 s\n" ] }, { @@ -1754,8 +1754,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 18.7 ms, sys: 1.36 ms, total: 20.1 ms\n", - "Wall time: 23.7 ms\n" + "CPU times: user 13.7 ms, sys: 346 µs, total: 14 ms\n", + "Wall time: 13.7 ms\n" ] }, { @@ -2179,8 +2179,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 516 ms, sys: 2.49 ms, total: 519 ms\n", - "Wall time: 520 ms\n" + "CPU times: user 488 ms, sys: 1.32 ms, total: 490 ms\n", + "Wall time: 489 ms\n" ] }, { @@ -2283,8 +2283,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 533 ms, sys: 2.49 ms, total: 536 ms\n", - "Wall time: 536 ms\n" + "CPU times: user 509 ms, sys: 1.64 ms, total: 511 ms\n", + "Wall time: 510 ms\n" ] }, { @@ -2320,8 +2320,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 15.2 s, sys: 35.9 ms, total: 15.2 s\n", - "Wall time: 15.2 s\n" + "CPU times: user 15.3 s, sys: 66.6 ms, total: 15.4 s\n", + "Wall time: 15.5 s\n" ] }, { @@ -2375,8 +2375,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 9.88 s, sys: 16.8 ms, total: 9.9 s\n", - "Wall time: 9.91 s\n" + "CPU times: user 9.87 s, sys: 26.7 ms, total: 9.9 s\n", + "Wall time: 9.92 s\n" ] }, { @@ -2511,7 +2511,7 @@ }, { "cell_type": "code", - "execution_count": 125, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -2748,14 +2748,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.71 s, sys: 19.9 ms, total: 1.73 s\n", - "Wall time: 1.75 s\n" + "CPU times: user 1.42 s, sys: 6.51 ms, total: 1.42 s\n", + "Wall time: 1.42 s\n" ] }, { "data": { "text/plain": [ - "<__main__.Node at 0x114f66fd0>" + "<__main__.Node at 0x11859e0b8>" ] }, "execution_count": 77, @@ -2788,8 +2788,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.59 s, sys: 10.7 ms, total: 5.6 s\n", - "Wall time: 5.61 s\n" + "CPU times: user 5.51 s, sys: 6.74 ms, total: 5.52 s\n", + "Wall time: 5.52 s\n" ] }, { @@ -3630,8 +3630,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.32 s, sys: 89.5 ms, total: 5.41 s\n", - "Wall time: 5.41 s\n" + "CPU times: user 5.35 s, sys: 108 ms, total: 5.45 s\n", + "Wall time: 5.47 s\n" ] }, { @@ -3881,8 +3881,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 21.3 s, sys: 46.2 ms, total: 21.4 s\n", - "Wall time: 21.4 s\n" + "CPU times: user 21.2 s, sys: 62 ms, total: 21.2 s\n", + "Wall time: 21.3 s\n" ] }, { @@ -3965,8 +3965,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 984 ms, sys: 8.51 ms, total: 993 ms\n", - "Wall time: 997 ms\n" + "CPU times: user 944 ms, sys: 3.78 ms, total: 948 ms\n", + "Wall time: 947 ms\n" ] }, { @@ -4086,8 +4086,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.39 s, sys: 10.5 ms, total: 2.4 s\n", - "Wall time: 2.4 s\n" + "CPU times: user 2.33 s, sys: 6.18 ms, total: 2.34 s\n", + "Wall time: 2.34 s\n" ] }, { @@ -4125,8 +4125,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.52 s, sys: 18.5 ms, total: 2.53 s\n", - "Wall time: 2.55 s\n" + "CPU times: user 2.4 s, sys: 3.9 ms, total: 2.4 s\n", + "Wall time: 2.4 s\n" ] }, { @@ -4168,8 +4168,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 664 ms, sys: 3.29 ms, total: 667 ms\n", - "Wall time: 670 ms\n" + "CPU times: user 612 ms, sys: 1.7 ms, total: 613 ms\n", + "Wall time: 614 ms\n" ] }, { @@ -4253,7 +4253,7 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 127, "metadata": {}, "outputs": [ { @@ -4262,7 +4262,7 @@ "4769" ] }, - "execution_count": 122, + "execution_count": 127, "metadata": {}, "output_type": "execute_result" } @@ -4280,35 +4280,6 @@ "sum(turing(machine(), 'A', 12667664).values())" ] }, - { - "cell_type": "code", - "execution_count": 128, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4770" - ] - }, - "execution_count": 128, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def turing(machine, state):\n", - " \"Run the Turing machine, starting at state; yield tape each step.\"\n", - " tape = defaultdict(int)\n", - " cursor = 0\n", - " while True:\n", - " tape[cursor], move, state = machine[state][tape[cursor]]\n", - " cursor += move\n", - " yield tape\n", - "\n", - "quantify(nth(turing(machine(), 'A'), 12667664).values())" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -4348,20 +4319,20 @@ }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 129, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Day 5: 5.4 sec\n", - "Day 15: 25.8 sec\n", - "Day 17: 5.7 sec\n", - "Day 21: 5.6 sec\n", - "Day 22: 22.0 sec\n", - "CPU times: user 1min 20s, sys: 499 ms, total: 1min 21s\n", - "Wall time: 1min 21s\n" + "Day 5: 5.1 sec\n", + "Day 15: 26.1 sec\n", + "Day 17: 6.1 sec\n", + "Day 21: 6.0 sec\n", + "Day 22: 24.1 sec\n", + "CPU times: user 1min 21s, sys: 3.5 s, total: 1min 25s\n", + "Wall time: 1min 26s\n" ] } ], @@ -4426,7 +4397,7 @@ " run23_2() == 913,\n", " 24: lambda: strongest_chain() == 1695 and\n", " strength(max(chains(), key=length_and_strength)) == 1673,\n", - " 25: lambda: quantify(nth(turing(machine(), 'A'), 12667664).values()) == 4769\n", + " 25: lambda: sum(turing(machine(), 'A', 12667664).values()) == 4769\n", "})" ] }, @@ -4441,14 +4412,14 @@ }, { "cell_type": "code", - "execution_count": 124, + "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAAwGg2Gl/H827qoWdm5ZaQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, From 28e83deef94fd47cce27f1afd65cf1ccdcd1dea3 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Tue, 26 Dec 2017 00:11:31 -0800 Subject: [PATCH 46/55] Finished Advent 2017 --- ipynb/Advent 2017.ipynb | 661 +++++++++++++++++++++------------------- 1 file changed, 341 insertions(+), 320 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index d400560..125b1ff 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -15,13 +15,11 @@ "* I'll clean up the code a bit: adding docstrings, making variable names longer and more descriptive, adding `assert` statements.\n", "* I will discuss any errors I made along the way; usually I won't show the erroneous code, just a description of what I did wrong.\n", "* The way Advent of Code works is that you read the puzzle descriotion for Part One, but only when you correctly solve it do you get to see Part Two. This is typical in software development: you deploy some code, and then some new requirements arise. So it makes sense to program by creating small functions and data types that form a *vocabulary* for the domain at hand, and can be recombined to solve new problems in the domain.\n", - "* Each day's code should run in a few seconds; certainly less than a minute.\n", + "* Each day's code should run in a few seconds; certainly less than a minute. (As it turns out, the total run time for all my solutions was just under a minute.)\n", "* There is a contest to see who can solve each day's puzzle fastest; I do not expect to be competitive.\n", "\n", "\n", "\n", - "\n", - "\n", "# Day 0: Imports and Utility Functions\n", "\n", "I might need these:" @@ -1013,14 +1011,6 @@ "execution_count": 21, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 5.09 s, sys: 19.4 ms, total: 5.11 s\n", - "Wall time: 5.11 s\n" - ] - }, { "data": { "text/plain": [ @@ -1033,7 +1023,7 @@ } ], "source": [ - "%time run2(program)" + "run2(program)" ] }, { @@ -1221,11 +1211,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "First I'll read the data into two dicts as follows: the input line:\n", + "First I'll read the data into two dicts as follows: the input line\n", "\n", " tcmdaji (40) -> wjbdxln, amtqhf\n", " \n", - "creates:\n", + "creates the two entries:\n", "\n", " weight['tcmdaji'] = 40\n", " above['tcmdaji'] = ['wjbdxln', 'amtqhf']" @@ -1750,14 +1740,6 @@ "execution_count": 46, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 13.7 ms, sys: 346 µs, total: 14 ms\n", - "Wall time: 13.7 ms\n" - ] - }, { "data": { "text/plain": [ @@ -1806,7 +1788,7 @@ "\n", "assert knothash2('') == 'a2582a3a0e66e6e86e3812dcb672a272'\n", "\n", - "%time knothash2(stream2)" + "knothash2(stream2)" ] }, { @@ -2175,14 +2157,6 @@ "execution_count": 60, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 488 ms, sys: 1.32 ms, total: 490 ms\n", - "Wall time: 489 ms\n" - ] - }, { "data": { "text/plain": [ @@ -2200,7 +2174,7 @@ " hash = knothash2(key + '-' + str(i))\n", " return format(int(hash, base=16), '0128b')\n", "\n", - "%time sum(bits(key, i).count('1') for i in range(128))" + "sum(bits(key, i).count('1') for i in range(128))" ] }, { @@ -2279,14 +2253,6 @@ "execution_count": 64, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 509 ms, sys: 1.64 ms, total: 511 ms\n", - "Wall time: 510 ms\n" - ] - }, { "data": { "text/plain": [ @@ -2299,7 +2265,7 @@ } ], "source": [ - "%time flood_all(Grid(key))" + "flood_all(Grid(key))" ] }, { @@ -2320,8 +2286,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 15.3 s, sys: 66.6 ms, total: 15.4 s\n", - "Wall time: 15.5 s\n" + "CPU times: user 15 s, sys: 30.7 ms, total: 15 s\n", + "Wall time: 15.1 s\n" ] }, { @@ -2375,8 +2341,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 9.87 s, sys: 26.7 ms, total: 9.9 s\n", - "Wall time: 9.92 s\n" + "CPU times: user 9.71 s, sys: 7.49 ms, total: 9.72 s\n", + "Wall time: 9.72 s\n" ] }, { @@ -2398,6 +2364,58 @@ "%time judge(criteria(4, A()), criteria(8, B()), 5*10**6)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When I got this solution on Day 15, I was happy to end there. But looking back, after Day 25, I noticed this day's run time was the slowest of all, so I wondered if I could speed things up, using `@jit`. Unfortunately, `@jit` doesn't work with generators, so I'll have to rewrite the code:" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 645 ms, sys: 2.26 ms, total: 648 ms\n", + "Wall time: 646 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "597" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "@jit\n", + "def duelgen(prev1=516, factor1=16807, prev2=190, factor2=48271, \n", + " m=2147483647, mask=2**16-1, N=40*10**6):\n", + " matches = 0\n", + " for _ in range(N):\n", + " prev1 = (prev1 * factor1) % m\n", + " prev2 = (prev2 * factor2) % m\n", + " matches += (prev1 & mask == prev2 & mask)\n", + " return matches\n", + "\n", + "%time duelgen()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That was an excellent speedup (and the same answer); I'll leave optimizing Part Two as an exercise for the reader." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2409,7 +2427,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -2427,7 +2445,7 @@ " 's15')" ] }, - "execution_count": 67, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -2439,7 +2457,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -2448,7 +2466,7 @@ "10000" ] }, - "execution_count": 68, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -2466,7 +2484,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -2475,7 +2493,7 @@ "'lbdiomkhgcjanefp'" ] }, - "execution_count": 69, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -2511,7 +2529,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 71, "metadata": {}, "outputs": [ { @@ -2542,7 +2560,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -2551,7 +2569,7 @@ "48" ] }, - "execution_count": 71, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2569,7 +2587,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -2578,7 +2596,7 @@ "'ejkflpgnamhdcboi'" ] }, - "execution_count": 72, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2605,7 +2623,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -2614,7 +2632,7 @@ "355" ] }, - "execution_count": 73, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -2649,7 +2667,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 75, "metadata": { "collapsed": true }, @@ -2691,7 +2709,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 76, "metadata": { "collapsed": true }, @@ -2714,7 +2732,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 77, "metadata": {}, "outputs": [ { @@ -2723,7 +2741,7 @@ "355" ] }, - "execution_count": 76, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } @@ -2741,24 +2759,24 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 78, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.42 s, sys: 6.51 ms, total: 1.42 s\n", - "Wall time: 1.42 s\n" + "CPU times: user 1.33 s, sys: 4.04 ms, total: 1.33 s\n", + "Wall time: 1.33 s\n" ] }, { "data": { "text/plain": [ - "<__main__.Node at 0x11859e0b8>" + "<__main__.Node at 0x10daae390>" ] }, - "execution_count": 77, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } @@ -2781,15 +2799,15 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 79, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.51 s, sys: 6.74 ms, total: 5.52 s\n", - "Wall time: 5.52 s\n" + "CPU times: user 5.53 s, sys: 4.42 ms, total: 5.53 s\n", + "Wall time: 5.53 s\n" ] }, { @@ -2798,7 +2816,7 @@ "6154117" ] }, - "execution_count": 78, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -2835,7 +2853,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 80, "metadata": {}, "outputs": [ { @@ -2853,7 +2871,7 @@ " ('set', 'p', 826))" ] }, - "execution_count": 79, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -2872,7 +2890,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 81, "metadata": {}, "outputs": [ { @@ -2881,7 +2899,7 @@ "7071" ] }, - "execution_count": 80, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -2933,7 +2951,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 82, "metadata": { "collapsed": true }, @@ -2963,7 +2981,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -2972,7 +2990,7 @@ "8001" ] }, - "execution_count": 82, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -3020,7 +3038,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 84, "metadata": { "collapsed": true }, @@ -3049,7 +3067,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -3058,7 +3076,7 @@ "'VEBTPXCHLI'" ] }, - "execution_count": 84, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -3080,7 +3098,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -3089,7 +3107,7 @@ "18702" ] }, - "execution_count": 85, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -3109,7 +3127,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -3122,7 +3140,7 @@ " Struct(a=(7, -12, -1), id=4, p=(-1425, 4298, 617), v=(32, -166, -32))]" ] }, - "execution_count": 86, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -3147,7 +3165,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 88, "metadata": {}, "outputs": [ { @@ -3156,7 +3174,7 @@ "243" ] }, - "execution_count": 87, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -3188,7 +3206,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -3197,7 +3215,7 @@ "648" ] }, - "execution_count": 88, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -3235,7 +3253,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 90, "metadata": { "collapsed": true }, @@ -3275,7 +3293,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -3299,7 +3317,7 @@ " ((1, 1), (1, 1)): ((0, 1, 1), (1, 0, 0), (1, 1, 0))}" ] }, - "execution_count": 90, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -3321,7 +3339,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 92, "metadata": { "collapsed": true }, @@ -3339,7 +3357,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 93, "metadata": { "collapsed": true }, @@ -3359,18 +3377,18 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 94, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def enhance(grid): \n", - " \"Expand small pieces into bigger ones and stitch them together.\"\n", + " \"Divide the drid into pieces, enhance each piece, and stitch them together.\"\n", " return stitch_grid(map2d(enhancements.get, divide_grid(grid)))\n", "\n", "def divide_grid(grid):\n", - " \"Slice the grid into d x d pieces and enhance each piece.\"\n", + " \"Divide the grid into d x d pieces and enhance each piece.\"\n", " N = len(grid[0])\n", " d = (2 if N % 2 == 0 else 3 if N % 3 == 0 else error())\n", " return [[tuple(row[c:c+d] for row in grid[r:r+d])\n", @@ -3394,7 +3412,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 95, "metadata": { "collapsed": true }, @@ -3415,7 +3433,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 96, "metadata": {}, "outputs": [ { @@ -3424,7 +3442,7 @@ "((0, 1, 0), (0, 0, 1), (1, 1, 1))" ] }, - "execution_count": 95, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } @@ -3437,7 +3455,7 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 97, "metadata": {}, "outputs": [ { @@ -3446,33 +3464,13 @@ "[[((0, 1, 0), (0, 0, 1), (1, 1, 1))]]" ] }, - "execution_count": 96, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "divide_grid(_)" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "((((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0)),),)" - ] - }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "map2d(enhancements.get, _)" + "divide_grid(_)" ] }, { @@ -3483,7 +3481,7 @@ { "data": { "text/plain": [ - "((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0))" + "((((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0)),),)" ] }, "execution_count": 98, @@ -3491,55 +3489,75 @@ "output_type": "execute_result" } ], - "source": [ - "stitch_grid(_)" - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[((1, 0), (0, 0)), ((1, 0), (1, 0))], [((0, 1), (0, 1)), ((0, 1), (0, 0))]]" - ] - }, - "execution_count": 99, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "divide_grid(_)" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "((((0, 0, 0), (1, 0, 0), (1, 0, 0)), ((1, 0, 1), (0, 1, 0), (0, 1, 0))),\n", - " (((1, 0, 1), (0, 1, 0), (0, 1, 0)), ((0, 0, 0), (1, 0, 0), (1, 0, 0))))" - ] - }, - "execution_count": 100, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ "map2d(enhancements.get, _)" ] }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1, 0, 1, 0), (0, 0, 1, 0), (0, 1, 0, 1), (0, 1, 0, 0))" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stitch_grid(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[((1, 0), (0, 0)), ((1, 0), (1, 0))], [((0, 1), (0, 1)), ((0, 1), (0, 0))]]" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "divide_grid(_)" + ] + }, { "cell_type": "code", "execution_count": 101, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((((0, 0, 0), (1, 0, 0), (1, 0, 0)), ((1, 0, 1), (0, 1, 0), (0, 1, 0))),\n", + " (((1, 0, 1), (0, 1, 0), (0, 1, 0)), ((0, 0, 0), (1, 0, 0), (1, 0, 0))))" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "map2d(enhancements.get, _)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, "outputs": [ { "data": { @@ -3552,7 +3570,7 @@ " (0, 1, 0, 1, 0, 0))" ] }, - "execution_count": 101, + "execution_count": 102, "metadata": {}, "output_type": "execute_result" } @@ -3563,7 +3581,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 103, "metadata": {}, "outputs": [ { @@ -3572,7 +3590,7 @@ "12" ] }, - "execution_count": 102, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } @@ -3590,7 +3608,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 104, "metadata": {}, "outputs": [ { @@ -3599,7 +3617,7 @@ "147" ] }, - "execution_count": 103, + "execution_count": 104, "metadata": {}, "output_type": "execute_result" } @@ -3623,15 +3641,15 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.35 s, sys: 108 ms, total: 5.45 s\n", - "Wall time: 5.47 s\n" + "CPU times: user 5.2 s, sys: 80.6 ms, total: 5.28 s\n", + "Wall time: 5.28 s\n" ] }, { @@ -3640,7 +3658,7 @@ "1936582" ] }, - "execution_count": 104, + "execution_count": 105, "metadata": {}, "output_type": "execute_result" } @@ -3660,7 +3678,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 106, "metadata": { "collapsed": true }, @@ -3671,8 +3689,8 @@ "def parse_net(lines):\n", " \"Read the initial state of the network.\"\n", " lines = list(lines)\n", - " current = (len(lines) // 2, len(lines[0].strip()) // 2)\n", - " return Net(current, UP, 0,\n", + " center = (len(lines) // 2, len(lines[0].strip()) // 2)\n", + " return Net(center, UP, 0,\n", " {(x, y) \n", " for (y, row) in enumerate(lines) \n", " for (x, node) in enumerate(row)\n", @@ -3681,7 +3699,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 107, "metadata": {}, "outputs": [ { @@ -3690,7 +3708,7 @@ "Net(current=(1, 1), heading=(0, -1), caused=0, infected={(0, 1), (2, 0)})" ] }, - "execution_count": 106, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } @@ -3714,7 +3732,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 108, "metadata": { "collapsed": true }, @@ -3734,7 +3752,7 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 109, "metadata": {}, "outputs": [ { @@ -3743,7 +3761,7 @@ "Net(current=(1, 0), heading=(1, 0), caused=5, infected={(0, 1), (-1, 1), (-1, 0), (2, 0), (1, 1)})" ] }, - "execution_count": 108, + "execution_count": 109, "metadata": {}, "output_type": "execute_result" } @@ -3755,7 +3773,7 @@ }, { "cell_type": "code", - "execution_count": 109, + "execution_count": 110, "metadata": {}, "outputs": [ { @@ -3764,7 +3782,7 @@ "Net(current=(2, 0), heading=(0, -1), caused=41, infected={(5, -1), (3, 2), (-1, 0), (3, -3), (1, 0), (1, -2), (4, -2), (-1, 1), (2, -3), (5, 0), (2, 2), (0, -1), (4, 1), (1, 1)})" ] }, - "execution_count": 109, + "execution_count": 110, "metadata": {}, "output_type": "execute_result" } @@ -3778,13 +3796,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This testing revealed a problem: I had (yet again) messed up the order of (x, y). (I think it is confusing that we have two traditional orders: (x, y) and (row, col), and they are not the same.) After fixing that, I was\n", + "This testing revealed a problem: I had (yet again) messed up the order of (x, y). (I find it confusing that there are two traditional orders: (x, y) and (row, col), and this is yet another reminder that I have to pay extra attention to keep them straight.) After fixing that, I was\n", "ready to solve the problem:" ] }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 111, "metadata": {}, "outputs": [ { @@ -3793,7 +3811,7 @@ "5460" ] }, - "execution_count": 110, + "execution_count": 111, "metadata": {}, "output_type": "execute_result" } @@ -3808,116 +3826,103 @@ "source": [ "**Part Two**\n", "\n", - "It looks like I can't re-use any of my code from Part One (except by copy-and-paste), because I want to replace my `set` of `infected` nodes with a `dict` of node `status`, which can be `I`, `F`, `C`, or `W`:" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "Net2 = namedtuple('Net2', 'current, heading, caused, status')\n", - "\n", - "def parse_net2(lines):\n", - " \"Read the initial state of the network.\"\n", - " lines = list(lines)\n", - " current = (len(lines) // 2, len(lines[0].strip()) // 2)\n", - " return Net2(current, UP, 0,\n", - " {(x, y): 'I'\n", - " for (y, row) in enumerate(lines) \n", - " for (x, node) in enumerate(row)\n", - " if node == '#'})\n", - "\n", - "def burst2(net):\n", - " \"Simulate the evolved virus through one step and return the new state of the network.\"\n", - " (current, heading, caused, status) = net\n", - " cur = status.get(current, 'C')\n", - " if cur == 'C':\n", - " heading = turn_left(heading)\n", - " status[current] = 'W'\n", - " elif cur == 'W':\n", - " # heading unchanged\n", - " status[current] = 'I'\n", - " caused += 1\n", - " elif cur == 'I':\n", - " heading = turn_right(heading)\n", - " status[current] = 'F'\n", - " elif cur == 'F':\n", - " heading = turn_around(heading)\n", - " status[current] = 'C'\n", - " return Net2(add(current, heading), heading, caused, status)" + "It looks like I can't re-use any of my code from Part One (except by copy-and-paste). I have the following concerns:\n", + "- I want to replace the `set` of `infected` nodes with a `dict`, `status[node]`, which can be `I`, `F`, `C`, or `W` (default `C` for clean).\n", + "- I need to run 10,000,000 steps, so I want it to be efficient.\n", + "- I have some confidence from doing Part One successfully, so I'm comfortable stressing efficiency over simplicity.\n", + "I'll use variables inside a function, `bursts`, that does `N` repetitions; I'll avoid creating a new `Net` object each iteration." ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "26" - ] - }, - "execution_count": 112, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Of the first 100 bursts, 26 will result in infection\n", - "repeat(100, burst2, parse_net2(test)).caused" + "def bursts(N, net):\n", + " \"Run N steps of bursts on the network depicted by `lines`.\"\n", + " (current, heading, caused, infected) = net\n", + " status = defaultdict(lambda: 'C', {pos: 'I' for pos in infected})\n", + " for _ in range(N):\n", + " S = status[current]\n", + " if S == 'C':\n", + " heading = turn_left(heading)\n", + " status[current] = 'W'\n", + " elif S == 'W':\n", + " # heading unchanged\n", + " status[current] = 'I'\n", + " caused += 1\n", + " elif S == 'I':\n", + " heading = turn_right(heading)\n", + " status[current] = 'F'\n", + " elif S == 'F':\n", + " heading = turn_around(heading)\n", + " status[current] = 'C' \n", + " current = add(current, heading)\n", + " return caused" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 21.2 s, sys: 62 ms, total: 21.2 s\n", - "Wall time: 21.3 s\n" - ] - }, - { - "data": { - "text/plain": [ - "2511702" - ] - }, - "execution_count": 113, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Ready to answer Part Two\n", - "# (A little nervous about 10,000,000 repetitions, but I think it will be under a minute.)\n", - "%time repeat(10000000, burst2, parse_net2(Input(22))).caused" + "# Of the first 100 bursts of the test network, 26 will result in infection\n", + "assert bursts(100, parse_net(test)) == 26" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "I had another bug here that gave me the wrong answer the first time: I had put the \"`caused += 1`\" line under the condition where the status *was* `'I'`, whereas it actually belongs under the condition where the status *becomes* `'I'`.\n", - "\n", - "# [Day 23](https://adventofcode.com/2017/day/23): Coprocessor Conflagration\n", - "\n", - "Part One looks straightforward. I won't make the \"X might be an integer\" mistake again:\n", - "\n" + "I had another bug here that gave me the wrong answer the first time: I had put the \"`caused += 1`\" line under the condition where the status *was* `'I'`, whereas it actually belongs under the condition where the status *becomes* `'I'`. With that fix, I get the right answer:" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 13.5 s, sys: 9.95 ms, total: 13.5 s\n", + "Wall time: 13.5 s\n" + ] + }, + { + "data": { + "text/plain": [ + "2511702" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time bursts(10000000, parse_net(Input(22)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "# [Day 23](https://adventofcode.com/2017/day/23): Coprocessor Conflagration\n", + "\n", + "Part One looks straightforward. I won't make the \"register X might be an integer\" mistake again:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, "outputs": [ { "data": { @@ -3925,7 +3930,7 @@ "9409" ] }, - "execution_count": 114, + "execution_count": 115, "metadata": {}, "output_type": "execute_result" } @@ -3958,15 +3963,15 @@ }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 116, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 944 ms, sys: 3.78 ms, total: 948 ms\n", - "Wall time: 947 ms\n" + "CPU times: user 939 ms, sys: 2.89 ms, total: 942 ms\n", + "Wall time: 940 ms\n" ] }, { @@ -3975,7 +3980,7 @@ "913" ] }, - "execution_count": 115, + "execution_count": 116, "metadata": {}, "output_type": "execute_result" } @@ -4017,17 +4022,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `numba.jit` decorator really helps here, speeding up execution from 13 seconds to 1 second. It also helped on Day 15, but not as dramatically, and was not able to help on Day 15 or Day 22.\n", - "\n", + "The `numba.jit` decorator really helps here, speeding up execution from 13 seconds to 1 second.\n", "\n", "# [Day 24](https://adventofcode.com/2017/day/24): Electromagnetic Moat\n", "\n", - "First I will read the data and store it as a table of `{port_number: [all_components_with_that_number_on_either_side]}`. I also define two simple utility functions:" + "First I will read the data and store it as a table of `{port_number: [components_with_that_port]}`. I also define two simple utility functions:" ] }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 117, "metadata": {}, "outputs": [], "source": [ @@ -4057,7 +4061,7 @@ }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 118, "metadata": {}, "outputs": [], "source": [ @@ -4079,15 +4083,15 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 119, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.33 s, sys: 6.18 ms, total: 2.34 s\n", - "Wall time: 2.34 s\n" + "CPU times: user 2.32 s, sys: 2.56 ms, total: 2.32 s\n", + "Wall time: 2.32 s\n" ] }, { @@ -4096,7 +4100,7 @@ "1695" ] }, - "execution_count": 118, + "execution_count": 119, "metadata": {}, "output_type": "execute_result" } @@ -4118,15 +4122,15 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 120, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.4 s, sys: 3.9 ms, total: 2.4 s\n", - "Wall time: 2.4 s\n" + "CPU times: user 2.39 s, sys: 1.44 ms, total: 2.39 s\n", + "Wall time: 2.39 s\n" ] }, { @@ -4135,7 +4139,7 @@ "1673" ] }, - "execution_count": 119, + "execution_count": 120, "metadata": {}, "output_type": "execute_result" } @@ -4161,15 +4165,15 @@ }, { "cell_type": "code", - "execution_count": 120, + "execution_count": 121, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 612 ms, sys: 1.7 ms, total: 613 ms\n", - "Wall time: 614 ms\n" + "CPU times: user 638 ms, sys: 3.98 ms, total: 642 ms\n", + "Wall time: 642 ms\n" ] }, { @@ -4178,7 +4182,7 @@ "1695" ] }, - "execution_count": 120, + "execution_count": 121, "metadata": {}, "output_type": "execute_result" } @@ -4226,7 +4230,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 122, "metadata": { "collapsed": true }, @@ -4236,12 +4240,12 @@ " \"machine()[state][value] == (new_value, move, new_state)}\"\n", " L, R = -1, +1\n", " A, B, C, D, E, F = 'ABCDEF'\n", - " return {A: ((1, R, B), (0, L, C)),\n", - " B: ((1, L, A), (1, R, D)),\n", - " C: ((0, L, B), (0, L, E)),\n", - " D: ((1, R, A), (0, R, B)),\n", - " E: ((1, L, F), (1, L, C)),\n", - " F: ((1, R, D), (1, R, A))}" + " return {A: [(1, R, B), (0, L, C)],\n", + " B: [(1, L, A), (1, R, D)],\n", + " C: [(0, L, B), (0, L, E)],\n", + " D: [(1, R, A), (0, R, B)],\n", + " E: [(1, L, F), (1, L, C)],\n", + " F: [(1, R, D), (1, R, A)]}" ] }, { @@ -4253,7 +4257,7 @@ }, { "cell_type": "code", - "execution_count": 127, + "execution_count": 123, "metadata": {}, "outputs": [ { @@ -4262,7 +4266,7 @@ "4769" ] }, - "execution_count": 127, + "execution_count": 123, "metadata": {}, "output_type": "execute_result" } @@ -4284,6 +4288,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "There is no **Part Two** today; we're done!\n", + "\n", "# A Note on Reuse\n", "\n", "One interesting question: for what days did my Part Two code reuse the Part One code? How so?\n", @@ -4312,27 +4318,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Verification and Timing\n", + "# Verification and Run Times\n", "\n", "A little test harness and a report on run times:" ] }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 124, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Day 5: 5.1 sec\n", - "Day 15: 26.1 sec\n", - "Day 17: 6.1 sec\n", - "Day 21: 6.0 sec\n", - "Day 22: 24.1 sec\n", - "CPU times: user 1min 21s, sys: 3.5 s, total: 1min 25s\n", - "Wall time: 1min 26s\n" + "Day 15: 10.3 sec\n", + "Day 17: 5.5 sec\n", + "Day 21: 5.3 sec\n", + "Day 22: 13.9 sec\n", + "CPU times: user 56.3 s, sys: 193 ms, total: 56.5 s\n", + "Wall time: 56.6 s\n" ] } ], @@ -4377,7 +4382,7 @@ " safe_delay(scanners) == 3823370,\n", " 14: lambda: sum(bits(key, i).count('1') for i in range(128)) == 8316 and\n", " flood_all(Grid(key)) == 1074,\n", - " 15: lambda: judge(A(), B(), 40*10**6) == 597 and\n", + " 15: lambda: duelgen() == 597 and\n", " judge(criteria(4, A()), criteria(8, B()), 5*10**6) == 303,\n", " 16: lambda: perform(dance) == 'lbdiomkhgcjanefp' and\n", " whole(48, dance) == 'ejkflpgnamhdcboi',\n", @@ -4392,7 +4397,7 @@ " 21: lambda: sum(flatten(repeat(5, enhance, grid))) == 147 and\n", " sum(flatten(repeat(18, enhance, grid))) == 1936582,\n", " 22: lambda: repeat(10000, burst, parse_net(Input(22))).caused == 5460 and\n", - " repeat(10000000, burst2, parse_net2(Input(22))).caused == 2511702,\n", + " bursts(10000000, parse_net(Input(22))) == 2511702,\n", " 23: lambda: run23(Array(Input(23))) == 9409 and\n", " run23_2() == 913,\n", " 24: lambda: strongest_chain() == 1695 and\n", @@ -4407,7 +4412,7 @@ "source": [ "# Development Time\n", "\n", - "Here is a plot of the time taken to program solutions to both parts of each puzzle each day, for me, the first person to finish, and the hundredth person. I'm usually about triple the time of the first solver, and a little slower than the 100th." + "Here is a plot of the time taken to program solutions each day, for me, the first person to finish, and the hundredth person. I'm usually about triple the time of the first solver, and a little slower than the 100th." ] }, { @@ -4417,9 +4422,9 @@ "outputs": [ { "data": { - "image/png": "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\nAAwGg2Gl/H827qoWdm5ZaQAAAABJRU5ErkJggg==\n", + "image/png": "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\nIk4AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4430,16 +4435,32 @@ "def plot_times(times):\n", " plt.style.use('seaborn-whitegrid')\n", " X = ints(1, len(times[0]) - 2)\n", - " for (label, c, *Y) in times:\n", - " plt.plot(X, Y, c+':', label=label)\n", + " for (mark, label, *Y) in times:\n", + " plt.plot(X, Y, mark, label=label)\n", " plt.xlabel('Day Number'); \n", " plt.ylabel('Minutes to Solve Both Parts')\n", " plt.legend(loc='upper left')\n", "\n", "plot_times([\n", - " ('Me', 'o', 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50, 18, 40, 25, 50, 10, 10),\n", - " ('100th','v', 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18, 21, 45, 20, 54, 21, 11),\n", - " ('1st', '^', 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5, 7, 10, 6, 19, 6, 2)])" + " ('o--', 'Me', \n", + " 4, 6, 20, 5, 12, 30, 33, 10, 21, 40, 13, 12, 30, 41, 13, 64, 54, 74, 50, 18, 40, 25, 50, 10, 10),\n", + " ('v:', '100th', \n", + " 6, 6, 23, 4, 5, 9, 25, 8, 12, 25, 12, 9, 22, 25, 10, 27, 16, 41, 18, 21, 45, 20, 54, 21, 11),\n", + " ('^:', '1st', \n", + " 1, 1, 4, 1, 2, 3, 10, 3, 4, 6, 3, 2, 6, 5, 2, 5, 5, 10, 5, 7, 10, 6, 19, 6, 2)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I asked [Kevin Wang](https://github.com/kevmo314), last year's overall time leader and my colleague at Google, how he manages to go so fast. His answers:\n", + "\n", + "- \"My code tends to be eccentrically terse.\"\n", + "- \"I save the most time by just observing that a problem is an adaptation of a common problem\" (such as a topological sort, or a search problem, or the Chinese Remainder Theorem).\n", + "- \"A lot of it is just finding patterns and not making mistakes.\"\n", + "- \"I also try to minimize the amount of code I write: each line of code is just another chance for a typo.\"\n", + "- \"For AoC it's important to just read the input/output and skip all the instructions first. Especially for the first few days, you can guess what the problem is based on the sample input/output.\"" ] } ], From 0135bb39fac3e3709db788d8a8b1dc13c2b80abf Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Wed, 27 Dec 2017 15:02:25 -0800 Subject: [PATCH 47/55] Finish Advent 2017 --- ipynb/Advent 2017.ipynb | 99 +++++++++++++++++++++++------------------ 1 file changed, 56 insertions(+), 43 deletions(-) diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb index 125b1ff..4eb3558 100644 --- a/ipynb/Advent 2017.ipynb +++ b/ipynb/Advent 2017.ipynb @@ -493,7 +493,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**:" + "## Part Two" ] }, { @@ -575,7 +575,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**:" + "## Part Two" ] }, { @@ -735,7 +735,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For **Part Two** I can re-use my `spiral` generator, yay! Here's a function to sum the neighboring squares (I can use my `neighbors8` function, yay!):" + "## Part Two\n", + "\n", + "I can re-use my `spiral` generator, yay! Here's a function to sum the neighboring squares (I can use my `neighbors8` function, yay!):" ] }, { @@ -838,7 +840,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two:**" + "## Part Two" ] }, { @@ -945,7 +947,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two:**\n", + "## Part Two\n", "\n", "Part Two seems tricky, so I'll include an optional argument, `verbose`, and check if the printout it produces matches the example in the puzzle description:" ] @@ -1148,7 +1150,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two:** Here I will just replace the `set` of `seen` banks with a `dict` of `{bank: cycle_number}`; everything else is the same, and the final result is the current cycle number minus the cycle number of the previously-seen tuple of banks." + "## Part Two\n", + "\n", + "Here I will just replace the `set` of `seen` banks with a `dict` of `{bank: cycle_number}`; everything else is the same, and the final result is the current cycle number minus the cycle number of the previously-seen tuple of banks." ] }, { @@ -1275,7 +1279,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two:**\n", + "## Part Two\n", "\n", "A program is *wrong* if it is the bottom of a tower that is a different weight from all its sibling towers:" ] @@ -1447,7 +1451,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two:**\n", + "## Part Two\n", "\n", "Here I modify the interpreter to keep track of the highest value of any register at any time." ] @@ -1487,7 +1491,7 @@ "source": [ "# [Day 9](https://adventofcode.com/2017/day/9): Stream Processing\n", "\n", - "For this problem I could have a single finite-state machine that handles all five magic characters, `'{}'`, but I think it is easier to first clean up the garbage, using regular expressions:" + "For this problem I could have defined a single parser that handles all five magic characters, `'{}'`, but I think it is easier to first clean up the garbage, using regular expressions:" ] }, { @@ -1556,8 +1560,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two:**\n", - "\n", + "## Part Two\n", "At first I thought that the amount of garbage is just the difference in lengths of `text2` and `text3`:" ] }, @@ -1730,7 +1733,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**:\n", + "## Part Two\n", "\n", "Now it gets *really* complicated: string processing, the suffix, hex string output, and dense hashing. But just take them one at a time:" ] @@ -1860,7 +1863,7 @@ "source": [ "This one seemed so easy that I didn't bother testing it on the simple examples in the puzzle; all I did was confirm that the answer for my puzzle input was correct.\n", "\n", - "**Part Two:**\n", + "## Part Two\n", "\n", "This looks pretty easy; repeat Part One, but keep track of the maximum number of steps we get from the origin at any point in the path:" ] @@ -1974,7 +1977,7 @@ "source": [ "That's the answer for Part One.\n", "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "I did almost all the work; I just need to count the number of distinct groups. That's a set of sets, and regular `set`s are not hashable, so I use my `Set` class:" ] @@ -2078,7 +2081,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**\n", + "## Part Two\n", "\n", "A packet is safe if no scanner catches it. We now have the possibility of a delay, so I update `caught` to allow for an optional delay, and define `safe_delay`: " ] @@ -2181,7 +2184,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**\n", + "## Part Two\n", "\n", "So as not to worry about running off the edge of the grid, I'll surround the grid with `'0'` bits:" ] @@ -2327,7 +2330,7 @@ "source": [ "Notice I also decided to use `@jit` (i.e. `numba.jit`) to speed things up, since this is the slowest-running day yet.\n", "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "A small change: only consider numbers that match the **criteria** of being divisible by 4 or 8, respectively;" ] @@ -2520,7 +2523,7 @@ "source": [ "That's the right answer.\n", "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "My first thought was to define a dance as a permutation: a list of numbers `[11, 1, 9, ...]` which says that the net effect of the dance is that the first dancer (`a`) ends up in position, the second (`b`) stays in position 1, and so on. Applying that permutation once is a lot faster than interpreting all 10,000 moves of the dance, and it is feasible to apply the permutation a billion times. I tried that (code not shown here), but that was a mistake: it took 15 minutes to run, and it got the wrong answer. The problem is that a dance is *not* just a permutation, because a dance can reference dancer *names*, not just positions.\n", "\n", @@ -2660,7 +2663,7 @@ "source": [ "That's the right answer.\n", "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "But Part Two is not so easy, if we care about the run time. Insertion into a `list` has to move all the elements after the insertion down, so insertion is O(N) and `spinlock` is O(N2). That's no problem when N = 2017, but when N is 50 million? We're gonna need a bigger boat, where by \"boat\" I mean algorithm or data structure. My first thought is a (circular) linked list, because insertion is O(1). I can implement the three key methods: `skip` to move ahead, `insert` to add a new node after the current one, and `find` to find a piece of data (with a linear search):" ] @@ -2933,7 +2936,7 @@ "source": [ "That was easy. (One tricky bit: the `pc` is incremented by 1 every time through the loop, regardless of the instruction. Therefore, the `'jgz'` jump instruction increments by \"`vy - 1`\" so that the net increment is \"`vy`\".)\n", "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "In Part Two we have to run two copies of the program, and send messages between them. I'll break up the loop in `run18` into\n", "two functions. First, `run18_2`, creates (in `ps`) two structures to hold the state variables necessary to run a program:\n", @@ -3090,8 +3093,7 @@ "metadata": {}, "source": [ "That's the right answer.\n", - "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "This is a surprisingly easy Part Two; I already generated the characters in the path; all I have to do is count them: " ] @@ -3199,7 +3201,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**\n", + "## Part Two\n", "\n", "I'll add the function `remove_collisions`, and now the thing we repeatedly do is the composition of `remove_collisions` and `update`. Also, instead of finding the `id` of the `closest` particle, now we just need to count the number of surviving particles:" ] @@ -3632,7 +3634,7 @@ "source": [ "That's correct!\n", "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "Huh — It looks like I don't need to change any code for Part Two, just do `18` repetitions instead of `5`. \n", "\n", @@ -3824,7 +3826,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**\n", + "## Part Two\n", "\n", "It looks like I can't re-use any of my code from Part One (except by copy-and-paste). I have the following concerns:\n", "- I want to replace the `set` of `infected` nodes with a `dict`, `status[node]`, which can be `I`, `F`, `C`, or `W` (default `C` for clean).\n", @@ -3836,7 +3838,9 @@ { "cell_type": "code", "execution_count": 112, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def bursts(N, net):\n", @@ -3865,7 +3869,9 @@ { "cell_type": "code", "execution_count": 113, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "# Of the first 100 bursts of the test network, 26 will result in infection\n", @@ -3956,7 +3962,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Part Two**\n", + "## Part Two\n", "\n", "The hint of \"You'll need to **optimize the program**\" reminded me of a puzzle from 2016 where I had to understand what the program was doing and make it more efficient. It wasn't obvious what Day 23's program was doing, but I began the process of re-writing it as a Python program, converting the `jnz` instructions to `if` and `while` statements. Eventually I realized that the inner loop was doing \"`b % d`\", and my program became the following:" ] @@ -4032,7 +4038,9 @@ { "cell_type": "code", "execution_count": 117, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def component_table(pairs):\n", @@ -4062,7 +4070,9 @@ { "cell_type": "code", "execution_count": 118, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def chains(chain=(), port=0, ctable=ctable):\n", @@ -4115,7 +4125,7 @@ "source": [ "I was worried it was going to be slow, so I measured the `%time`, but it turned out not too bad.\n", "\n", - "**Part Two**\n", + "## Part Two\n", "\n", "Now we want to find the strength of the longest chain, but if there is a tie, pick the strongest one:" ] @@ -4296,18 +4306,18 @@ "Here are my answers:\n", "\n", "\n", - "* **Total Reuse**: The major function defined in Part One is called again in Part Two:\n", - "
Days 3 (`spiral`), 6 (`spread`, but `realloc2` is copy-paste-edit), 9, 12, 14 (`bits`), \n", + "* **Total Reuse (11 days)**: The major function defined in Part One is called again in Part Two:\n", + "
Days 3 (`spiral`), 6 (`spread`, but `realloc2` is copy-edit), 9, 12, 14 (`bits`), \n", "15 (`A, B, gen, judge`), 16 (`perform`), 19 (`follow_tubes`), 20 (`update, particles`), 21 (`enhance`),\n", "24 (`chains`, `strength`)\n", "\n", - "* **Generalization**: A major function from Part One is generalized in Part Two (e.g. by adding an optional parameter):\n", + "* **Generalization (1 day)**: A major function from Part One is generalized in Part Two (e.g. by adding an optional parameter):\n", "
Days 13 (`caught`)\n", "\n", - "* **Copy-edit**: The major function from Part One is copied and edited for Part Two:\n", + "* **Copy-edit (7 days)**: The major function from Part One is copied and edited for Part Two:\n", "
Days 5 (`run2`), 8 (`run8_2`), 10 (`knothash2`), 11 (`follow2`), 17 (`spinlock2`), 18 (`run18_2`), 22 (`parse_net2`, `burst2`)\n", "\n", - "* **All new**: All the code for Part Two (except possibly reading and parsing the input) is brand new: \n", + "* **All new (5 days)**: All the code for Part Two (except possibly reading and parsing the input) is brand new: \n", "
Days 1, 2, 4, 7, 23\n", "\n", "I think I did a reasonably good job of facilitating reuse. It seems like using generators and higher-order functions like `repeat` helps.\n", @@ -4320,7 +4330,7 @@ "source": [ "# Verification and Run Times\n", "\n", - "A little test harness and a report on run times:" + "A little test harness and a report on all the run times that are over 5 seconds per day:" ] }, { @@ -4410,21 +4420,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "All the days together run in a but less than a minute; only 4 days take more than 5 seconds each; and only 2 take more than 10 seconds.\n", + "\n", "# Development Time\n", "\n", - "Here is a plot of the time taken to program solutions each day, for me, the first person to finish, and the hundredth person. I'm usually about triple the time of the first solver, and a little slower than the 100th." + "Here is a plot of the time it took to program solutions each day, for me, the first person to finish, and the hundredth person. My mean time to solve is a little slower than the 100th solver, and five times slower than the first solver." ] }, { "cell_type": "code", - "execution_count": 125, + "execution_count": 132, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nIk4AAAAASUVORK5CYII=\n", + "image/png": "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\nAhARERExU/4fVvCSb2uTD9sAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4436,6 +4448,7 @@ " plt.style.use('seaborn-whitegrid')\n", " X = ints(1, len(times[0]) - 2)\n", " for (mark, label, *Y) in times:\n", + " label = '{} (μ={:.0f} min)'.format(label, mean(Y))\n", " plt.plot(X, Y, mark, label=label)\n", " plt.xlabel('Day Number'); \n", " plt.ylabel('Minutes to Solve Both Parts')\n", @@ -4457,9 +4470,9 @@ "I asked [Kevin Wang](https://github.com/kevmo314), last year's overall time leader and my colleague at Google, how he manages to go so fast. His answers:\n", "\n", "- \"My code tends to be eccentrically terse.\"\n", - "- \"I save the most time by just observing that a problem is an adaptation of a common problem\" (such as a topological sort, or a search problem, or the Chinese Remainder Theorem).\n", + "- \"I try to minimize the amount of code I write: each line of code is just another chance for a typo.\"\n", + "- \"I save the most time by just observing that a problem is an adaptation of a common problem\" (such as a topological sort, or union-find, or A* search, or the Chinese Remainder Theorem).\n", "- \"A lot of it is just finding patterns and not making mistakes.\"\n", - "- \"I also try to minimize the amount of code I write: each line of code is just another chance for a typo.\"\n", "- \"For AoC it's important to just read the input/output and skip all the instructions first. Especially for the first few days, you can guess what the problem is based on the sample input/output.\"" ] } From f4cc9a62d55dea16c3891e4eb99034bb26ccdf1d Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Wed, 27 Dec 2017 15:05:21 -0800 Subject: [PATCH 48/55] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c1edc8..9c0022b 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,6 @@ Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the f # Etudes for Programmers I got the idea for the "etudes" part of the name from this [1978 book by Charles Wetherell](https://books.google.com/books/about/Etudes_for_programmers.html?id=u89WAAAAMAAJ) -that was very influential to me when I was learning to program. +that was very influential to me when I was first learning to program. ![](https://images-na.ssl-images-amazon.com/images/I/51ZnZH29dvL._SX394_BO1,204,203,200_.jpg) From 4b22bb35f21c84b8325288aff417cbb0218585ad Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Wed, 27 Dec 2017 15:25:59 -0800 Subject: [PATCH 49/55] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c0022b..8970458 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the f |Logic and Number Puzzles| |---| -|[Advent of Code 2017](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%202017.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2017; currently ongoing.*| +|[Advent of Code 2017](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%202017.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2017.*| |[Advent of Code 2016](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2016*.| |[Translating English Sentences into Propositional Logic Statements](https://github.com/norvig/pytudes/blob/master/ipynb/PropositionalLogic.ipynb)
*Automatically converting informal English sentences into formal Propositional Logic.*| |[The Puzzle of the Misanthropic Neighbors](https://github.com/norvig/pytudes/blob/master/ipynb/Mean%20Misanthrope%20Density.ipynb)
*How crowded will this neighborhood be, if nobody wants to live next door to anyone else?*| From 841d9fcf60cf96c4983a6d43061fbe079bf8194c Mon Sep 17 00:00:00 2001 From: Roland Meertens Date: Thu, 28 Dec 2017 12:06:02 +0100 Subject: [PATCH 50/55] Added all jupyter notebooks to Travis --- .travis.yml | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index aab1bf3..eb1b383 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,41 @@ python: install: - pip install jupyter script: - - jupyter nbconvert --to notebook --execute ipynb/BASIC.ipynb - jupyter nbconvert --to notebook --execute ipynb/Cheryl.ipynb - + - jupyter nbconvert --to notebook --execute ipynb/Advent 2017.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Advent of Code.ipynb + - jupyter nbconvert --to notebook --execute ipynb/BASIC.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Beal.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Bike Speed versus Grade.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Cheryl-and-Eve.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Coin Flip.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Convex Hull.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Countdown.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Differentiation.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Economics.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Fred Buns.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Gesture Typing.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Ghost.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Golomb-Puzzle.ipynb + - jupyter nbconvert --to notebook --execute ipynb/How To Count Things.ipynb + - jupyter nbconvert --to notebook --execute ipynb/How to Do Things with Words.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Life.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Mean Misanthrope Density.ipynb + - jupyter nbconvert --to notebook --execute ipynb/pal3.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Palindrome.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Probability.ipynb + - jupyter nbconvert --to notebook --execute ipynb/ProbabilityParadox.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Project Euler Utils.ipynb + - jupyter nbconvert --to notebook --execute ipynb/PropositionalLogic.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Riddler Battle Royale.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Scrabble.ipynb + - jupyter nbconvert --to notebook --execute ipynb/SET.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Sicherman Dice.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Sierpinski.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Snobol.ipynb + - jupyter nbconvert --to notebook --execute ipynb/Sudoku IPython Notebook.ipynb + - jupyter nbconvert --to notebook --execute ipynb/TSP.ipynb + - jupyter nbconvert --to notebook --execute ipynb/WWW.ipynb + - jupyter nbconvert --to notebook --execute ipynb/xkcd1313.ipynb + - jupyter nbconvert --to notebook --execute ipynb/xkcd1313-part2.ipynb + - jupyter nbconvert --to notebook --execute ipynb/xkxd-part3.ipynb From 6abcba36bb1e03df9542bacb31762b1cbece19f2 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sun, 31 Dec 2017 18:57:51 -0800 Subject: [PATCH 51/55] Add Keybee keyboard to Gesture Typing --- ipynb/Gesture Typing.ipynb | 344 ++++++++++++++++++++++++------------- 1 file changed, 229 insertions(+), 115 deletions(-) diff --git a/ipynb/Gesture Typing.ipynb b/ipynb/Gesture Typing.ipynb index 1ec2c2d..a4b8f75 100644 --- a/ipynb/Gesture Typing.ipynb +++ b/ipynb/Gesture Typing.ipynb @@ -639,7 +639,7 @@ { "data": { "text/plain": [ - "3.2333097802127653" + "3.233309780212764" ] }, "execution_count": 21, @@ -676,23 +676,29 @@ }, "outputs": [], "source": [ - "def show_kbd(kbd, name='keyboard', K=20):\n", - " \"Plot the keyboard with square keys, K units on a side.\"\n", - " H = K / 2 # (K is Key width/height; H is half K)\n", + "def show_kbd(kbd, name='keyboard'):\n", + " \"Plot the keyboard and show title/stats.\"\n", " for L in kbd:\n", - " x, y = K * kbd[L].x, -K * kbd[L].y\n", - " plot_square(x, y, H, label=L)\n", + " plot_square(kbd[L].x, -kbd[L].y, label=L)\n", " plt.axis('equal'); plt.axis('off')\n", " plt.title(title(kbd, name));\n", " plt.show()\n", "\n", - "def plot_square(x, y, H, label='', style='k-'):\n", - " \"Plot a square with center (x, y), half-width H, and optional label.\"\n", + "def plot_square(x, y, label='', style='k:'):\n", + " \"Plot a square with center (x, y) and optional label.\"\n", + " H = 1/2\n", " plt.plot([x-H, x+H, x+H, x-H, x-H], \n", " [y-H, y-H, y+H, y+H, y-H], style) \n", " plt.annotate(label, (x-H/4, y-H/4)) # H/4 seems to place label well.\n", " \n", - "def title(kbd, name): return '{}: path length = {:.1f}'.format(name, workload_average(kbd))" + "def title(kbd, name): \n", + " X, Y = span(kbd[L].x for L in kbd), span(kbd[L].y for L in kbd)\n", + " return ('{}: size: {:.1f}×{:.1f}; path length: {:.1f}'\n", + " .format(name, X, Y, workload_average(kbd)))\n", + " \n", + "def span(numbers):\n", + " numbers = list(numbers)\n", + " return max(numbers) - min(numbers)" ] }, { @@ -702,9 +708,9 @@ "outputs": [ { "data": { - "image/png": "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\n+DNG2sdQVZcAOyd54dxpSR6b5OgRsjYAl9Jdj2M/qN3/TDrJo+nu/98eK6efKrsQeOGWL77tWXTX\n3xur6toRs7YbFoO2xYuAA4BzBi9XXZXklGkHJflPwI39gzbAOcCjkzx52lm9k4HjkqxJshp4M/DN\nkbLOp5sbH7sYdpn7P/VZp9U4n7s/XOY7gP0mTpt6VlV9o6r+fKSM7Y7fx6DGcv0sfLOWRs5yzlpK\n3GKQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSwze4qZHEG4S2J+uqahbfG7GkWAyS\npIZTSZKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpY\nDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKk\nhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUg\nSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpY\nDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKk\nhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUg\nSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpYDJKkhsUgSWpY\nDJKkhsUgSWpYDJKkxv8HwqVDBjxNM0gAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -787,9 +793,9 @@ "outputs": [ { "data": { - "image/png": "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\nAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -822,7 +828,9 @@ { "cell_type": "code", "execution_count": 26, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def improved(kbd, swaps=1000, scorer=workload_average, scores=[]):\n", @@ -849,9 +857,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nAJ0QMAAAnXwAPHsCD9Iu2zcAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -935,9 +943,9 @@ "outputs": [ { "data": { - "image/png": "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\nGhaDJKnxH5X1NnZZb1gBAAAAAElFTkSuQmCC\n", + "image/png": "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\n3f8GOAh4QM9x20LP9a+g9X6mtthbOA1VikG89q14rP8v4Fkpxm2oEoyxBngO8Bgze12C8WZS9R3A\nzAJwOPCtXUrkAAADYUlEQVSKvmMtRkUX877c/TxgCzM7GsDMlgHvAj7o7n9MuJ2pnuufD2xmZi9t\nPHyfXqFmVvVZOea8l5lNz9DMbG8ze1zfYImlvvLaQIov581st9adQPtQf5+TTKKbCMzd/wA8DXie\nmb0wwZjr6ZvTzO4LnA4cM8nvwnLe3lt0MU90SXM4cISZXQncDKxx97clGHdaopzPBIKZ/czMLqb+\nsumEBONOS3QgHg4cHG+hvAw4BfhVgnGBZD3ziX/rn2ifbwl8PN6a+CNgDyDFuNMS5XQAd78NOAR4\ng5kdlmDcaQlyvpT6Sva0xq2JK83siP7pFoei72ZJ/ReL8VawM4HD3f1HCcetSmgPlPAXoAW9l8qZ\nUEE5s51Dy3NsNJXUb5q7Xww8NOWYUTWBMSch5A4wTgkndFTlDtBRlTtAR1XuAItd0TNzSauEmbmI\nzEw98wVQSs4SCvkSu8984pRzOIou5gUJuQN0oRMmqZA7QEchd4COQu4AXeg+83kqYSYZVbkDdBRy\nBxhHPfPkqtwBOqpyB1js1DOXaeqZi5Sr6Jl5KW2BUnKWUMjVM09LOYej6GJekJA7QBc6YZIKuQN0\nFHIH6CjkDtCFeubzVMJMMqpyB+go5A4wjnrmyVW5A3RU5Q6w2KlnLtPUMxcpV9Ez81LaAqXkLKGQ\nq2eelnIOR9HFvCAhd4AudMIkFXIH6CjkDtBRyB2gC/XM56mEmWRU5Q7QUcgdYBz1zJOrcgfoqMod\nYLFTz1ymqWcuUq6ii/nokmZUgBbr8kjuHAPJGYBqkWUq9b1Uzgkt51B0MRcRkVrRPXMREampmIuI\nDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyA\nirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5\niMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjI\nAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyACo\nmIuIDICKuYjIAKiYi4gMgIq5iMgA/H8qeE1xw+Q5QgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -945,9 +953,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEKCAYAAAD6q1UVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFt9JREFUeJzt3XmUXGWdxvHvQ8IShEgiiAgmioAwgEBEQEBWoyyOynhQ\nwmA4Ayi4ooiMyCCCIzADCC6IuICEAQIom8sRRoKDJoJoAiZwWAIxhE0ICYtshvCbP+5beCmqOoWp\n7req3+dzTp++S9Wtp29VP3XrrdtdigjMzKwsK+QOYGZmQ8/lb2ZWIJe/mVmBXP5mZgVy+ZuZFcjl\nb2ZWIJd/JpLmSNopd45ukjRe0guSuvK4kjRP0m7d2FYvkXSgpN+8gstn2Q/dvj+tt/hOzSQiNouI\n63PnGATL/MMRSRtKekbSlKEIlG5zjqQnal9LJF05BLfbrkB77g9s2jzJDHpOSftKmi7pKUnTOrj8\npyXdI+kxSb+XtMNgZxyORuYOYINL0oiIWJo7R5NvA78fyhuMiM3q85LuAS4ZgpsWVYFqCG6rXz0K\nnA5sDAz4CkfSNsBJwI4RcbOkw4DLJa0d/ovVV8RH/pnUj7IkHSfpEknnp6PSW9LR8Rcl/UXSfEkT\na9e9TtKJkm6U9LikyyWtkdY1jjQPkjQfuDYtf186+l0kaZqkjdPyoyRd2pTtG5LOSNOjJf1A0gOS\nFkj6qiSldStIOlXSI5LmAnt38HPvByxu5OrANpJulfSopHMkrZS2M1vSi7cnaWTKsUUHGXYGXgNc\n1kkASTunn/3odBv3SNq/tn4vSTPTfTFf0nG1q/9f+v5Yum+3/fvVdEq6P+6WtEeHWZQeF3NTlqkt\n7vvJKcfDkr5Uu+4qks5Lt3mrpC9IWpDWTQHGAT9NOY9sXA04oNX2uiUipkXEj4EHO7j4G4E5EXFz\nmp9CdV++ttu5hr2I8FeGL2AesFuaPg54GngX1RPyecA9wNHACOAQ4J7ada8DFgCbAKOAHwPnp3Xj\ngReAH6V1KwMbAn+lOqoaAXwBuIvqld+4tO5V6forAA8Ab0/zlwPfAVYB1gRuAD6a1h0G3Aa8HlgD\nmAYsBVZo8zOPBu5Ilz8OmNLBPvpTbfu/BU5I674ATK1d9v3ALR3u+x8C5zQtuwXYr83ldwaWAKcA\nKwI7pX22YVq/E7Bpmt6MqsTeV7s/lgKqbe9A4G/AQVTlehhwf4ePlcOBGcA6KctZwIVN9/3ZwErA\nW4Fngbek9Senx87otE9vAe5tup1da/MDbq9Fzn+nemJflL7Xpxd1cL8cDExbxmVWB24CtkmP1U8D\nf8z9+9yPX9kDlPrFy8v/6tq69wJPNAoDWC39Eo5O89cBJ9YuvwnwXCqSRtmMr63/j6aiFHAfsFOa\nvx44IE1PBO5K02unX/aVa9fdD7g2TV8LfKy2biIDl/8ZwJG1n7mT8v9obX7PWrZ1gMeB1dL8pY1t\nL2Obo9L13vkK7qudqcp6ldqyi4Fj2lz+dOC0NN24P1aorT8QuLMp01LgtR08Vm5rKuh1UrYVare1\nTm39jcCH0vTdwLtq6w7m5eW/W21+wO0Nwu/EMss/Xe7o9DP/DXgYeNtg5BnuXx726R1/qU0/AyyM\n9EhP81A9CTQsqE3PpzoKXLO27L7a9OvTZQBI210ArJsWXQRMStOTgAvT9Li03QfTUMFi4LvAWrXt\nNudoSdKWVK9szmiz/heSnkxDDpNqq+o/x/x0m0TEg8B04IOSXk31xPA/aVtn1bb1xaab+iDwaER0\nfLZNsjginm2VRdK2aSjtYUmPAYfy0vuilYcaExHxDNUT8mrtL/6i8VRj3IskLaJ6MlhC9UTdUH8s\nPV3b7ut56f6s33cDabe9ISfpEODfgE0iYiXgI8DPJb0uV6Z+5Td8+9cbatPjqY6CFlIVNrz0LI0H\nqIYjmq9/f5q+FDhV0rrAPsB2afkCqiP/19SeiOoebJGjnZ3T+nvTewarASMk/VNEbB0Re7W5XvP2\nH6jNT6EaElsRmBERDwFExMeBj7fZ3uR0vVdqjKRRqaih2s+z0/QFwDeB90TEEkmnU41DQ/fPlrkX\nOCgifte8QtJA+x+q+2s94PY0P65p/XJllXQ08KUW2xHVMcfo5dl+sgXw04i4m2qjV0t6ENieDt/D\nsYqP/PvXAZI2lrQqcDxwaa2gm88suQTYW9Ku6Y3RI6lKfQZARCykemPyXKr3Fu5Iyx8CrgFOl7R6\nerNxff397xMuAT4jaV1JY6jGfNs5G3gzsCXVL/B3gZ8B717Gz/nJtP2xVMUytbbuCmAC8Bk6KHRJ\n6wG7Ur2n8koJOF7SipLeSfXmduNsodWoXhksUXU2yv616z1CNWT35n/gNls5GzhR0jgASWtJel9T\nznYuAY6WtEZ6ov9k0/qHgPWblnV8llJEnBQRq0fE6Kav1Qcq/nTiwMpUT+IjJK0sqd2B6U1Uj+U3\npetOpHpPa06nOa3i8s/nlR5lNV/+fKoSe4DqzbjD2102Iu4EDqA6xfIRquL654h4vnaxC4HdqY5i\n6yan7d9G9ebdpUDjJfb3gaup3jj8A/CTtuEjno2IhxtfVG+YPhsRi5bxM19I9QQ0l+pN6q/Vt5lu\n8010dtR3ADA9IuY1r1B1JtSkFtdpeJDqjcsHqPb9oRFxV1r3CeCrkh6nen/l4lrGZ1Lm6WmoZpsB\nftZ26uu+AVwJXJNubwbVm5/ttlOfP4Hq1d48qn16KdV7RQ0nA8emnEd0sL1u+QjV0OaZwI5UQ0vf\na6xMQ3g7AETEFKoDgF+nn/8Mqved7hyEXMOaouWreetlkq6jOrvnnNxZcpN0LNVZN5MH8TZ2ptrf\nzcMkfU3VOfIfjohdc2exoecjf+tbaSjoYKqhEFsGSa+TtH0avnsL8Hk8Tl4sl39/Kv7lWjrr417g\n5xExPXeePrES1RPlE8CvqP6G46ysiSwbD/uYmRXIR/5mZgVy+ZuZFcjlb2ZWIJe/mVmBXP5mZgVy\n+ZuZFcjlb2ZWIJe/mVmBXP5mZgVy+ZuZFcjlb2ZWIJe/mVmBXP5mZgVy+ZuZFcjlb2ZWIJe/mVmB\nXP5mZgVy+ZuZFcjlb2ZWIJe/mVmBXP5mZgVy+ZuZFcjlb2ZWIJe/mVmBXP5mZgVy+ZuZFcjlb2ZW\nIJe/mVmBRuYO0C8kLQLG5M7RgQCUO0QHnLO7+iFnP2QEWBwRY3OHGGyKiNwZ+oKkiIief+A6Z3c5\nZ/f0Q0bon5zLy8M+ZmYFcvmbmRXI5W9mViCXv5lZgVz+ZmYFcvmbmRXI5W9mViCXv5lZgVz+ZmYF\ncvmbmRXI5W9mViCXv5lZgVz+ZmYFcvmbmRXI5W9mViCXv5lZgVz+ZmYFcvkPEUlfl/SZ2vwvJX2v\nNn+qpM/mSfdSkl4r6QJJcyXdJGm6pPfnztVM0guSTqnNf17Sl3NmaiZpqaSZkuZImiXpCEk99ylR\ntZyz0vdxuTO1I+nJ3BmGA5f/0JkObA+QfvnXBDatrd8emJEhVytXAL+OiA0i4u3AfsB6mTO18hzw\nL5J6+fNWn4qICRGxGTAR2BM4LnOmVho5t0rf780daAD+7NkucPkPnRmk8qcq/TnAk5JeLWklYGNg\nZq5wDZJ2A56LiO83lkXEgog4M2Osdp4HvgcckTtIJyJiIfAx4FO5s7TQc69GbHC5/IdIRDwILJG0\n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\nDNV9Pjm9UimCy78FSR8F5kfEtLToLGBjSe/MGGsgF1GNT/dk+QOrAeelUz1vBjYBvpI3UksBEBH3\nR8S3c4cZQOQOMMwcCqwFnFU71XOmpH1zBxtMql6NDy+SIiJ6/ujIObvLOburH3L2Q0bozZw+8jcz\nK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzN\nzArk8jczK5DL38ysQMP2XzrnzmBmVrM4IsbmDlE3LMvfzMwG5mEfM7MCufzNzArk8jczK5DL38ys\nQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzNzArk8jcz\nK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzN\nzArk8jczK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/\nM7MCufzNzArk8jczK5DL38ysQC5/M7MCufzNzArk8jczK5DL38ysQC5/M7MCufzNzArk8jczK9D/\nA0XbOuVPdisIAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -955,9 +963,9 @@ }, { "data": { - "image/png": "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\nSY3/D8A5ahkgRRcLAAAAAElFTkSuQmCC\n", + "image/png": "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\nrDwu5h3WoL/5L8D+Q7ftl25vpGHP/A3AxyU9QNIDgQ8Db2qaqaHbI2KniNgBeA9wVFsDT3r8IuIP\nwGeBj6SbjgI+FxHX5spk889/achm8w3gQ5JWj4i7JW0BPDwizs0ZKiIulfRt4F3AusCXIuLqnJkA\n1b7eAFjU4ti9But+AvilpEOAp5H/Rc/mmYt5h016mR4Rt0j6BbAH8B2qWflpLWXqNRzig8AFwJ3A\nkxoHam5tSRcAawP/A9i1xbH7k66YXoQPB84EnhMRS9sI5J55udxmsVFOoSripP9PzpjlHhGxBDgV\n+HJE3JU7D7AktVm2oXrx+3JbA7dQOPcErge2b57GSudi3mEN+5vfAnaTtCOwdkRc2FKmfgvDLEv/\nihIRPwM2lrRxG+M1OX6SdgB2A3YGDpX0sNyZbH65mNusIuJ2qsv8EyhkVl6oe3rmkramek79qaWx\new3W/SxwSHoz9KPAMa0ksmK5mHdYC5fpJwOPp8Vi3sHPma+VPpp4IdV+OjAioqWx+5OsJOlg4JqI\nODvddBywtaRdmgZyz7xcau+8M5tOkmZcpGzaeWbeYSX2N/27WcZX6PGbyZ3BZudiblauXu4ANj1c\nzDusxNZBB3vm86mfO8CwEs8pq7iYmxXKhdPmwsW8w0rsb7pnPr5Cj99M7gw2Oxdzs3L1cgew6eFi\n3mElXqa7Zz4n/dwBhpV4TlnFxdysUC6cNhcu5h1WYn/TPfPxFXr8ZnJnsNm5mJuVq5c7gE0PF/MO\nK/Ey3T3zOennDjCsxHPKKi7mZoVy4bS58C/a6rBBf3NQFApZ7gF9Z1r18kDuHKOWrSwu5mZmHeA2\ni5lZB7iYm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkHuJibmXWAi7mZ\nWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkH\nuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iY\nm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1wP8Hw4HYs28rccsAAAAASUVORK5C\nYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1171,7 +1179,7 @@ { "data": { "text/plain": [ - "['NWPOO', 'HEOOP', 'JRMLI', 'HWPKL', 'VEMKO', 'UWOPI', 'VDOMK', 'HELLI']" + "['URKLL', 'YSMLO', 'YWPKO', 'GWOMP', 'NRMMI', 'GSKOI', 'URPPO', 'UDOPL']" ] }, "execution_count": 35, @@ -1362,8 +1370,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.14 s, sys: 306 ms, total: 3.44 s\n", - "Wall time: 3.45 s\n" + "CPU times: user 3.08 s, sys: 377 ms, total: 3.46 s\n", + "Wall time: 3.46 s\n" ] }, { @@ -1506,8 +1514,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 94 µs, sys: 0 ns, total: 94 µs\n", - "Wall time: 95.8 µs\n" + "CPU times: user 108 µs, sys: 1 µs, total: 109 µs\n", + "Wall time: 116 µs\n" ] }, { @@ -1540,36 +1548,36 @@ { "data": { "text/plain": [ - "{'BELIEVED': 'BELIEVES BELIEVER BELIEVED',\n", - " 'BENDS': 'BENDS',\n", - " 'BITEY': 'HURRY BITEY',\n", - " 'CEILINGS': 'CEILINGS',\n", - " 'COATING': 'COATING',\n", - " 'COLORERS': 'COLORERS',\n", - " 'COUPLES': 'COUPLES',\n", - " 'DUSTING': 'SHARING DUSTING',\n", - " 'DYING': 'EYING DYING',\n", - " 'ENJOYS': 'ENJOYS',\n", - " 'FREED': 'TREES TREED FREES FREER FREED FEWER FEEDS DRESS',\n", - " 'GET': 'YET TRY HEY HER GET CRY',\n", - " 'GUESSES': 'GUESSES GUESSED',\n", - " 'HOSPITAL': 'HOSPITAL',\n", - " 'IMAGING': 'OKAYING IMAGING',\n", - " 'LETTER': 'LETTER',\n", - " 'LUCKY': 'LUCKY',\n", - " 'MAY': 'MAY LAY',\n", - " 'ONCE': 'ONCE',\n", - " 'PALE': 'PALE',\n", - " 'PARTIES': 'PARTIES PARTIED',\n", - " 'PLAYER': 'PLAYER PLAYED PLATED OKAYED',\n", - " 'REPEAT': 'REPEAT',\n", - " 'RUSHES': 'RUSHES RUSHED FISHES FISHED',\n", - " 'SAMES': 'WAKES WAKED SANDS SAMES ASKED',\n", - " 'SHARP': 'SHARP',\n", - " 'SINGE': 'WINGS SONGS SINGS SINGE SINCE AUNTS',\n", - " 'SPEND': 'WORKS SPEND DOWNS',\n", - " 'TAUGHT': 'TAUGHT',\n", - " 'WALLED': 'WALLED WALKER WALKED'}" + "{'ACCEPTING': 'ACCEPTING',\n", + " 'APPEAR': 'APPEAR',\n", + " 'ARTS': 'WETS WERE SETS ARTS',\n", + " 'BATHROOM': 'BATHROOM',\n", + " 'CHOICES': 'CHOICES',\n", + " 'CROWDING': 'CROWDING CROSSING',\n", + " 'DISCOVERS': 'DISCOVERS',\n", + " 'EVERY': 'SHEET EVERY',\n", + " 'FEED': 'TREE REDS FREE FEWS FEES FEED FEDS',\n", + " 'FIELDS': 'FORMED FIELDS',\n", + " 'FOREHEADS': 'FOREHEADS',\n", + " 'GLANCE': 'GLANCE',\n", + " 'HITS': 'NOTE HUGE HITS GUYS BUYS BOYS BORE BITS BITE BIRD',\n", + " 'IGNORER': 'IGNORER IGNORED',\n", + " 'KISSED': 'NODDED MISSES MISSED LOWERS KISSES KISSED KIDDED',\n", + " 'LIFTS': 'LIFTS',\n", + " 'MARRIES': 'NARROWS MARRIES MARRIED',\n", + " 'MEMBER': 'MEMBER',\n", + " 'NOD': 'NOS NOR NOD KID HIS HID BOX',\n", + " 'PALED': 'PAPER PALES PALER PALED',\n", + " 'SENSES': 'SENSES SENSED',\n", + " 'SHITTING': 'SHUTTING SHITTING SHIRTING',\n", + " 'SIMPLES': 'SIMPLES',\n", + " 'STOMACHES': 'STOMACHES STOMACHED',\n", + " 'STRETCHING': 'STRETCHING',\n", + " 'SWING': 'SWUNG SWING',\n", + " 'TRUER': 'TRUST TRUER TRUED TRIED',\n", + " 'WRAPS': 'WRAPS',\n", + " 'YARD': 'YARD USES USED HATS HATE HARD GATE',\n", + " 'YOU': 'YOU'}" ] }, "execution_count": 49, @@ -1590,7 +1598,7 @@ "----\n", "\n", "It would be nice to see potentially confusable word paths on a keyboard.\n", - "I'll add functionality to `show_kbd` to call the new function `plot_paths` if any `words` are passed to `show_kbd`:\n", + "I'll add a call to `plot_paths` in `show_kbd`:\n", "\n" ] }, @@ -1602,22 +1610,20 @@ }, "outputs": [], "source": [ - "def show_kbd(kbd, name='keyboard', K=20, words=()):\n", - " \"Plot the keyboard with square keys, K units on a side.\"\n", - " H = K / 2 # (K is Key width/height; H is half K)\n", + "def show_kbd(kbd, name='keyboard', words=()):\n", + " \"Plot the keyboard and show title/stats.\"\n", " for L in kbd:\n", - " x, y = K * kbd[L].x, -K * kbd[L].y\n", - " plot_square(x, y, H, label=L)\n", - " plot_paths(kbd, K, words)\n", + " plot_square(kbd[L].x, -kbd[L].y, label=L)\n", + " plot_paths(kbd, words)\n", " plt.axis('equal'); plt.axis('off')\n", " plt.title(title(kbd, name));\n", " plt.show()\n", " \n", - "def plot_paths(kbd, K, words):\n", + "def plot_paths(kbd, words):\n", " \"Plot paths for each word.\"\n", " for (i, word) in enumerate(words):\n", - " Xs = [+K * kbd[L].x for L in word]\n", - " Ys = [-K * kbd[L].y for L in word]\n", + " Xs = [kbd[L].x for L in word]\n", + " Ys = [-kbd[L].y for L in word]\n", " plt.plot(Xs, Ys, '-o')" ] }, @@ -1635,9 +1641,9 @@ "outputs": [ { "data": { - "image/png": "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\n1bj7RX1QDFcBT7v7bDP7DbAAOFTF0HsqBgn05oUS77AfAf7b3X9X4KyjgXuAo9z9/tSy4pI4B361\nE+y6Arg8vqkRmAY3zXM/I9+soCgW37sHbzQb+wG7AHOBt4BFtYt99ZsTU1mv8L6twD+AIcDWwFR3\nf6YAOQ3AtkR/9mpP4DMUrhgagIOJDmmeATwKzAQuUDH0XkV/L4CUhO8AC3IphTwcR3SYYg8g62LI\nKHqH9Pgas1W7wa7Jm6qBraMdXf4x9313IfAV4Cs2YUQ9+zSPYAFRMSwAPgysLKtLI6sLG9x9HwAz\nOxC4Adi9EEHu/lb87n0msLEQGYmsBWY2HjgNuJvoXJfkoay/F0CKm5kdAZwIZHWyNM+svYEjgQOB\nL8UniFO1ApZPJDpe1aERWBmVUboa29cxEXglCqYFGBVfX2DxSeetzGyrAsZcBXwKGFrAjA5/AC4D\nbu6DrJKnYpBeiz8Z9Etgurtv6IPInwIz3X0Z8AM2H+1JzQK46BZYtAm4js3nGJ6AG8zsvamG1W+c\nzl3VLewIzCEap8yubqF+4/RUczZ7+520mU0hev2/Uagcd19LdGL/7AJkBFlE2+El7v7PAmZtMVQM\nko8ZwGjgGjN72syeib+fknZQ/ImnfyfOK1wDTDGzQ9PMaXBfMgeOaoE7LoTVI+CtG6G1FT5P9DHI\n1Hhr81xeap7KsiGrWAksqF7GS81Tsz3x3AuDO54nonfW070wJxmT87ycaBxUqJOZDuDur7n7jwuU\nscXRyWcJlOovFymrOHJKOauYaMQgIiIBFYOIiARUDCIiElAxiIhIQMUgIiIBFYOIiARUDCIiElAx\niIhIQL/gJgEz0wYhW5K17j6yvxdioFExiIhIQIeSREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQ\nEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagY\nREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIq\nBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGA\nikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQk\noGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhER\nCagYRERKp2HJAAAApUlEQVQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagY\nREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIq\nBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGAikFERAIqBhERCagYREQkoGIQEZGA\nikFERAL/D9dUkOSX0vFjAAAAAElFTkSuQmCC\n", + "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1656,7 +1662,7 @@ "\n", "- The letters are obscured by the circles. Solution: offset paths away from the center.\n", "- When the paths are the same, they overwrite each other. Solution: offset each path towards a different corner.\n", - "- There is no indication what direction the path is going in. Solution: put a diamond on the start position.\n", + "- There is no indication what direction the path is going in. Solution: put a black square on the start position.\n", "\n" ] }, @@ -1668,15 +1674,15 @@ }, "outputs": [], "source": [ - "def plot_paths(kbd, K, words):\n", + "def plot_paths(kbd, words):\n", " \"Plot paths for each word, each with a different offset (and color).\"\n", - " Q = K / 5 # Q originally meant a quarter of a key width; but 1/5 looks nicer.\n", + " Q = 1/5 # Q originally meant a quarter of a key width; but 1/5 looks nicer.\n", " offsets = [Point(-Q, -Q), Point(-Q, +Q), Point(Q, +Q), Point(Q, -Q)]\n", " for (i, word) in enumerate(words):\n", - " Xs = [+K * kbd[L].x + offsets[i % 4].x for L in word]\n", - " Ys = [-K * kbd[L].y + offsets[i % 4].y for L in word]\n", + " Xs = [kbd[L].x + offsets[i % 4].x for L in word]\n", + " Ys = [-kbd[L].y + offsets[i % 4].y for L in word]\n", " plt.plot(Xs, Ys, '-o')\n", - " plt.plot(Xs[:1], Ys[:1], 'kd')" + " plt.plot(Xs[:1], Ys[:1], 'ks')" ] }, { @@ -1686,9 +1692,9 @@ "outputs": [ { "data": { - "image/png": "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\nATWc5UXqYBs1AAAAAElFTkSuQmCC\n", + "image/png": "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\nGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgl\ndhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYR\nkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGM\nUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFi\nFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJfYcZtYQ/78K\nw40Zj9dQzThV3rZGxVO8YoYrzt31iD2ABsXrnI+sv5aK17njVfNh0QaKVISZNbh7Q9ZiiXRkKsW0\ns6qenrVDPKC+yvGqJuvvneJ13nhK7Dk2gcRX7XiNVY5XTfWKp3gdkRJ7+2vMcryMl0YaFU/xkqrm\nsaAau6TW22zoMLh6IAxaAPOnwRXL3Ofkm7ZQ3du62VD6czU9GcQK5rOQK3x1/mUkpRp7NlViX8k6\ntdjbWWer8/U2G3oC/PlxOPW3cPjjcOoJ8OfeZkMLzFLfah262VB25c+cxqmczOGcxqnsyp+tW8Fl\ndEid7b3rjPEqua90hO2rWCy12FuqdqvPzBrdvb6zxDvQbPzjcGqP2LiVwMnwyAT4JO5rcuK1ej1t\nexvPaZxKbWzkGuBvvMMoZhe7bixhMFvwetHzp7WQ3enPDMWrYLzH2YnD2LrVvnInd/lcH11KuHY4\n9qqWW7pWI4i0qbEzxRsIg3rkjOsB7AmHA0sxmwlMAV4Apjjc3GohPRnU4kAFqAVW8BpwcdEr9wRn\n8yluLXr+tJ5UvIrHW8GPqWXrFuNqCftQ6RrLsIzEVGPvRMxsW+AnwO6E0tajwCXu/kGZ41wPzHH3\nG6Phx4C57n5ONPwD4HV3H1fGmOsISdoAB+49AIbna7GPgrsmwReAPYARwHBgxCrYrzssJUr0wAuH\n9+Pkp87k2A/qYgtZA1yDA88DmwGvAKe5+7IU65u4RWRmWwJPRNs1EFgHvB0N7+vua5PGTbF+E4Fv\nu/tj0fBJwOfd/Zhyx4qWPwSY4O57xsaNAZa7+/UViLfc3XuVdZmFzu7u5C7m8Q2ajz0DJgBfq9B7\n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\nItZewJGE/uBfiS5uVohPh/k7l9K9soiy1oPAkWa2N1CXNqmXUhOOLppubWZbVyHeD4GzgO5pZioh\n3kPAtaQsw6jG3poSeyeVZmeOeqbcDpzu7quKDNmYYtqbgIuiC6nfJ0WNPS13/wtQa2Znh2EcrA7s\nxaSJHqw+ZcyV0XJup7hacKp4xGrsZrYr4bh9t9Lx3H0xocx0dsr5i4pHeD3Hep77/0g6qrFvGs4F\n+gE3mxmEA8mB77j7/UkWkLw0Yl8AXosSLsDNwOfN7BB3n5h2xRM6EfihmV1KKBvMAS6GpP3oF/du\nXaPHN9xSgLodoLYW1qyB98JtCUJCfwA4uYj1bUw5/eZRjb0pAZ7u6WqoaePFl30d4Syv4vGi6z4/\nTjmvaux5qMYuiVTza9vVjdXWLRAGHgBv7phntpJuKSBSaSrFSFL17b0ClRCVbkYXqNEPyj9XXUm3\nFKh2TVjxNj1K7J1UR71XTCdV3/RP/AtT8N77+SevLfWWAvUbnaK8sh5PciixSyIZr2M25h+9Zk26\n8aXGq5hMx8v4vlkU1dglkazW2DeyHk8D++V5SjV26dDUYpek6tt7BSqljbJWuKUAdW9BnyXhb8Hb\nEpQjXkUo3qZH3R07qXZo1TZWMVa11ecbWcFfScobr4KyHk9yqMUuiXSE0kgFNSpe542X8X2zKKqx\nSyKbYo1dpLNSi12Sqm/vFaiUrNeEFW/To8TeSZlZQ3yHrvRw07hqxq/ittUrXqeOJzlUihERyRi1\n2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhF\nRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQy\nRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJ\nXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1E\nJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRj\nlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TY\nRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVE\nMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJG\niV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDLm/wGIYCrFxnvMOwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1713,9 +1719,9 @@ "outputs": [ { "data": { - "image/png": "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\nfkKV+hjcfRrQ08xOyk0zszFmtl8VYq0C/kl4Hau9U2v8JW1mowjf//xRpJnFSZrKbgJOan32ymMR\nXr/J7v5CFWNtNJQYpBKnAIOBK1LDVZ82s89nHcjMTgZeS3baAFcAo8xs/6xjJY4EDjGzV8zseeCH\nwMIqxbqe0DZe7cTQK/c+JbGO9+qc+iC9zJ8CW+RNyzyWu7/p7r+uUoyNjk6JIZGuejoCxeoccbpy\nrM5EFYOIiESUGEREJKLEICIiESUGERGJKDGIiEhEiUFERCJKDCIiElFiEBGRiA5wk4iZ6QMhG5Nl\n7j6w7dk2LkoMIiISUVOSiIhElBhERCSixCAiIhElBhERiSgxiIhIRIlBREQiSgwiIhJRYhARkYgS\ng4iIRJQYREQkosQgIiIRJQYREYkoMYiISESJQUREIkoMIiISUWIQEZGIEoOIiESUGEREJKLEICIi\nESUGERGJKDGIiEhEiUFERCJKDCIiElFiEBGRiBKDiIhElBhERCSixCAiIhElBhERiSgxiIhIRIlB\nREQiSgwiIhJRYhARkYgSg4iIRJQYREQkosQgIiIRJQYREYkoMYiISESJQUREIkoMIiISUWIQEZGI\nEoOIiESUGEREJKLEICIiESUGERGJKDGIiEhEiUFERCJKDCIiElFiEBGRiBKDiIhElBhERCSixCAi\nIhElBhERiSgxiIhIRIlBREQiSgwiIhJRYhARkYgSg4iIRJQYREQkosQgIiIRJQYREYkoMYiISESJ\nQUREIkoMIiISUWIQEZGIEoOIiESUGEREJKLEICIiESUGERGJKDGIiEhEiUFERCJKDCIiElFiEBGR\niBKDiIhElBhERCSixCAiIhElBhERiSgxiIhIRIlBREQiSgwiIhJRYhARkYgSg4iIRJQYREQkosQg\nIiIRJQYREYkoMYiISESJQUREIkoMIiISUWIQEZGIEoOIiESUGEREJKLEICIikf8P3Lvmwv17SsgA\nAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEKCAYAAAAGvn7fAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYHGW1x/HvScIkAZKQQEgIS4CwEwNE1hBgAAEBEdSL\nsgkXQcAFWbzKopfMYJQdUWRVFtldAAVULgi0gIEIhC3sZCEJgbAkIRtkPfePtzpT09M9U9XT3TNT\n+X2ep5+Zqn6rTlV39em3T71dbe6OiIhkR7eO3gAREaksJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2\nEZGMUWIvwcymmNk+FV7ncWb2RCXXmTL+Y2b2rXauY0Mzm2dmVqntkvYxszFmdmuK9ivMbNNqblOJ\nuHuZ2fRax10VKbHXXpf+4oC7T3f3vl7lL0CY2Ylm9lb0JvJ3M1uvlbb9zexeM1sQvSEfWUa8Xczs\nITP72MxmmdkfzGxwNWOWo5XkmOb5qMkxWOINpOzYZnaRmU0zs0+ix/zsVtoeZGZPmNkcM5tpZteb\n2Rrlxu5qlNgzyMy6d/Q2tIeZ1QM/Bw4BBgBTgTtbWeRq4DNgIHAMcI2ZbR1b3/pmtk6RONvHJvsD\n1wFDo9sC4KZyY1aR0f7EXKtPW5V+A7kB2Mbd+wGjgGPM7LASbfsCPwPWA7YGNgAuqfD2dF7urluR\nGzAF2Cf6f2tgMvCNaHo94M/AB8Ak4NRo/iBgIdA/tp6RUbvuwHHAk8CVwFzg1XyM2Hr/CnwMvAmc\nGLtvJ2AcMAd4N1pHj9j9K4DvRstNiubtB7wWLXMlkAO+lXD/dwKeAT4B3gMujeYPjWJ1A3YF5gPz\notunwOSonQFnA28DHwJ3AWsljH0J8JuCx2UFsEmRtqsDi4FhsXm/B34Rmz4TeB7oF5v3ayDXyjbs\nAHxS4r4kMecAo0os39Zx8N/RvHnR43dSLO4iYFnscR8MjAH+EG3DPOBlYGQr+7YC2DT6vw64FHgn\nep6vBnpG9+0FTI8ev1nRcfffsfUMAO6PjpHxhET6RHTfv6I4C6JtOryt9aV8fa4PvAT8T8L2XwFe\nrHUe6aibeuxtMLORwIPA99z9D1Ft+X5ColgP2Bc4zcz2c/dZwGPA12OrOAa4092XR9O7AG8BawMN\nwD1mtlZ03x+AaYQX6+HAL6LeK8By4HTCi2k3YB9CIo87lJCQtzGztYG7gXOBdQhvQLvH9mtDM5tt\nZhuU2PVfAVd46B0NA/4Yu88B3P1pd+/j7n2j7RoP3BG1+QHwZWAPYAgh0V0di/+imR1RInah/HE6\nvMh9WwBL3X1SbN6LwLYrN9b9cuAJ4EEzW9PMLgRGR9tXyl7AKyXuSxKzv7uPa2X9rR0Hs4CDosf1\neOCXZra9uy8CDgRm5h93d38/WuYQwmPfj3B8XtVK7LiLgM2AEdHf9YHzYvcPBvoQnsMTgavMrF90\n39WEN5h1CW9Gx9F0bOwVtflctJ1/amt9Znakmb3Q2saa2VlmNp/wBrE6TcdbW1p7PrOno99ZOuuN\n0GNvIBxAe8Tm7wxMLWh7NnBD9P/XgSej/7sRekGfj6aPA2YULDseOJrwUXEpsHrsvl8AN5bYvtOA\nu2PTK4C9YtPfBMYVLDOd5D32HKEnuHbB/KGEN5luBfOvAe6LTb8K7B2bXg9YUrhcidj7EpLbcKA3\noUSyjOgTU0Hb0YREF593IvBokbY3EnqmE4EBrcQfQfjUVKrHnThmieVLHgcl2t9L06fCvYBpBfeP\nAR6KTW8NLGwlfrzHvoDYJyFCp2FyLNbC+HMWPS87R8f2EmCz2H0/Ax4vFqet9SV53Ar2Ybtov9dI\n0Ha/6PkcljZOV72px966k4F/u3t8JMtQYP2otzvbzOYA5xB6LRBKKVub2VBgf2Cuuz8XW/7dghjv\nEHovQ4DZHnpl8fvWBzCzzc3sfjN7z8zmEmrQhXXjGbH/hxASeVyaEQknAFsCr5vZeDM7uFRDMzsZ\n2BM4KjZ7KHBv/nEiJPqlhHJVq9z9EaJeLKEENpnQM5xRpPkCQj01rl/UvtBrhMfs3Wi5YvuyGfB3\nQiIt1eNOE7OUUscBZnagmT0VncidQ+iltzhHUOD92P+LgF5m1urr28wGEnq9z8Wep38QPkXkfezu\nKwrWvSbh3EJ3mj8nSY6vUutLxd1fJJzjOL+1dma2K3A78DVv/gkr05TYW3cKsJGZXR6bN53QoxkQ\n3fq7ez93PwTA3RcTyhbfJJRhCoehrV8wvREwM7oNKDhzvxFNCeAaQmIa5u5rAT+h5Umw+Mmq96Ll\n4zZsdW/jK3Kf5O5HuftA4GLgz2bWu7Cdme0BNAJfdvd4spwGHFjwOK3h7u8ljH+Nu2/h7usREnwP\nQk+70JtADzMbFpu3HQUfu83su4TncxtCTfiPZtajoM1Q4GGg0d1b+4ifKGYbih4HZlZHOH9zMTDQ\n3fsTkm3+ua7kCcmPCIl129jztJaH8ltbPiR8ioqX8hIfXxXSAyg5bNPMdgD+Qqjj52q1UZ2BEnvr\n5gNfBPY0swuief8B5pvZj82sl5l1N7NtzWzH2HK3EmqOh9AysQ8ys1PNrIeZHQ5sBfzN3WcQTo5e\nYGY9zWwEodecX74PMM/dF5nZVsB32tj2vxFq7YdF23gaCXrLeWZ2dGwkySeEhJLvaVnUZkPCeYFj\ni/SGriOcI9goajvQzFqracdj9zSzbaP/NwKuJ9T7PylsG33CuQc438xWN7PRFDzuZnYMcBawr7u/\nQ/hkYcBtsTbrA48AV7r7b1vbvoQxV5jZnq2sZt1ixwHhZGYd8JG7rzCzAwmf/PJmAWubWeEnhkJt\njnzxUKf4LXBF1HvPjyDav/UlIep13wM0mFnv6Jg8tqDZ+7SSeNOw4KT8eQgz2xn4HvDPEu2HE94Q\nT3X3v1diG7qUjq4FddYb4eN/flRMf8LJ0sZoejDhpM17hNrdOGKjGqI2bwKPFcw7jnAS79eE0RCv\nE5JN/v4hhBNfHxNOrH07dt8ehB77PMKIgwaa1zOXE6tnRvP2B94gnLj8NeHE7rei+zaM1rVBif2/\nlZBE8qMsDonmr6yxR/uzjKZRMfOBl6N2RjjZ+zrhjeEtYGxs/ROBI0vE7kc4GTmf8ElmLGCx+88h\nvBnmp/sT6tALCEMjv1Gwvu2BLQrmrQZ8JTZ9XrRf8X2ZV07M6LGdS2x0VMrj4DuEpDibMNLlDuD8\n2P2/I/S2Z9M0KuaW2P1Fz4MUO1YIbyI/J5xcn0v41PH96L5i9fz462Id4IFoufHABcDDsbYnRc/f\nbOC/EqzvqPzxU2SbjZCoP4qen9eBswrazAd2j/6/kaZjcz6xY3NVuFn0IEiFmdkjwO3ufmNHb4vU\nlpkdTRhv/ZMS9x8HnODurfXou5xotNEgdz++o7dlVdej7SaSlpntRBgHnaj0INni7rd39DbUgplt\nCdS5+8tRaeQEoF2XrJDKUGKvMDO7mTCe/AfuvrCDN0ekmvoAd1q43MMs4BJ3v7+Dt0lApRgRkazR\nqBgRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2\nEZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGR\njFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxR\nYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIX\nEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJ\nGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgl\ndhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCX2AmbWEP+/BtO5jMdr\nqGWcGu9bTvEUr5zpqnN33WI3oEHxuuYt64+l4nXteLW8WbSDIlVhZg3u3pC1WCKdmUoxHaymH886\nIB5QX+N4NZP1507xum48JfYCq0Diq3W8XI3j1VK94ileZ6TE3vFyWY6X8dJITvEUL6lavhZUYxcA\nrKdtzCDGsiZDWMBMZvFTX+xTi7Xta7bxcBi7Hgx5D2ZOhJ/O8+JtVWOvjWo9f51Bmn2Drrd/VdHR\nZ29X9RudYCQAdWzMCN7mXJwGnHNxRvA2dWxc2LYPbHwMvL0A3MEXgB8Db/ehZdsoXm5Veiw7Il61\nnr/OsH9p9q0r7l+1bj1q+zbS+XVAr6++hrGKxxvEWL7EMOqi6TrgSwxjDmOBY+JNh8PYa2HYGtH0\nGsC1MGwSLdtGcpXa8E6oviPjWaMZsCFbcGvR568Pz1ijTcq3HzKPHjsPYfNrZ9K38Pnr35M3Xxpk\ni+PrHz+Q3i8Nsh9Wb3eaKxbvP3X0Wv4RPfh9bKYzrP8KnsGa9i3vFBg2BtZJeHzWV3L7OxMl9o6X\n6/B4azJkZVLIq4vmF1gPhqxRMG8NYDAt24Jq7BXVkyet0UYBu8Vuq9EHK3z+uneHXWbxwYU38vjG\nc/ncOosYvtpy+p8Fy4s9fx86kx7dlEvj8/81ky/vNYT7qrdDzcXjLTe6vTCYnSZN5rgVO7Zs2/ch\n3nloOqdHkwbsBJzUC9ZOcXzmKrbxCdTytaDEXiDtg29m6wNXAdsQTkb/Hfihuy+tZDwzuxyY6u6/\njqYfBKa5+0nR9KXADHe/InW8BcxkCTRLDkuA16g3swmEF44Dd+0GMxcSXix5C4H3YWaJ7U78CcjM\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1739,9 +1745,7 @@ { "cell_type": "code", "execution_count": 55, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def confusingness(kbd):\n", @@ -1749,9 +1753,11 @@ " neighbors = neighboring_keys(kbd)\n", " return mean([confusable(w, neighbors) for w in COMMON])\n", "\n", + " \n", "def title(kbd, name): \n", - " return ('{}: path length = {:.1f}, confuse = {:.0%}'\n", - " .format(name, workload_average(kbd), confusingness(kbd)))" + " X, Y = span(kbd[L].x for L in kbd), span(kbd[L].y for L in kbd)\n", + " return ('{}: size: {:.1f}×{:.1f}; path length: {:.1f}; confusingness = {:.0%}'\n", + " .format(name, X, Y, workload_average(kbd), confusingness(kbd)))\n" ] }, { @@ -1802,8 +1808,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 112 ms, sys: 990 µs, total: 113 ms\n", - "Wall time: 112 ms\n" + "CPU times: user 121 ms, sys: 1.85 ms, total: 122 ms\n", + "Wall time: 121 ms\n" ] }, { @@ -1830,14 +1836,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 168 µs, sys: 0 ns, total: 168 µs\n", - "Wall time: 171 µs\n" + "CPU times: user 174 µs, sys: 1 µs, total: 175 µs\n", + "Wall time: 177 µs\n" ] }, { "data": { "text/plain": [ - "3.2333097802127653" + "3.233309780212764" ] }, "execution_count": 58, @@ -1863,9 +1869,9 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEKCAYAAAAW8vJGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAF/NJREFUeJzt3Xm4JGWZpvH7oUoBNwQXtNncGwUUSrQVl0YcRkRtRQVB\nbZh2aR1HRdHpjVFEW23brbtdcGcE2VxQbHTUUVQUxFYLbBYdRFCWQgWrkJJNqHrnj4iD+R3qVJ2i\nMvJUnbp/15XXyYjIiDe2zCfii8g8qSokSZqyyVzPgCRp/WIwSJIaBoMkqWEwSJIaBoMkqWEwSJIa\nBsMaJLkkyV5jnuYhSb4zzmmuZf1vJnnRHNU+OsmbZ/naHZKsTDLx/XSut9GGIskeSS5Mcm2Sv5jr\n+dF4GAxzZ95/gWRMH66Dr6fVBNAkap+W5DdJrkly9uo+XJO8JsnPk/wuyeVJ3j0XoTnNm4F/q6q7\nVdUX53heVivJnv36vibJxasY/ogkp/fDL03yv0aGPTzJef22eu1I/4VJzkqyzaSWYxLmeqfSgJIs\nmOtZYMMIwKn5zBzUPhTYpqruDrwM+FSSrWd47SnA7lW1BbAzsCvw6snM5ox2AC6Y43mYreuAjwOv\nn2H48cC3+m2xJ/CKJE/vh70dOAx4BHB4knv3/Q8DPltVVww213PAYFgLSR6a5OIkz+u775vks/1R\nxM+TvKrvv3WS65JsOTLuov51Ux/WmyR5X390csFoc1U/3VOS/LY/TX/JyLBHJTkzybIkV/TTWDgy\nfGWSVyS5ELiw77d3kp/047yPtfgATHJEks8kObFvLvhhkoePDP/bJBf1w85L8qy+/47AUcBjkyxP\nsnRkslslObUf53tJ7j/Leblbko8lWZLksiRvSZJ+2CFJvpPknUmW9ttjn5Fx75fk2/3R9teSvD/J\nMf3gb/d/r+nn6c/+ONqqpzcuVXVuVd080mshsN0Mr72kqpb1nQuAlcCDZlsryUv7fW1qW+3a998x\nXfPisiTnJnnGyDhH9+vqNtsryUXA/YGpYXfMtKbXfv85tn++aZJjk1zd1/p+knv1w2bctuNSVT+o\nquOAS2Z4yQ504UBVXQx8F9ipH3Z/4JtVdSXwM2D7JDsAzwbeO875XC9UlY/VPOh2or2ARcAvgaf2\n/QP8EDic7k16P+AiYO9++KnAy0am8x7gX/vnhwA30x3tLQAOAK4B7t4PPx14H3AHuiOU3wB79sMW\n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\nAAAAAElFTkSuQmCC\n", + "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1875,8 +1881,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 10.4 s, sys: 19.7 ms, total: 10.4 s\n", - "Wall time: 10.4 s\n" + "CPU times: user 10.1 s, sys: 18.6 ms, total: 10.2 s\n", + "Wall time: 10.2 s\n" ] } ], @@ -1911,14 +1917,14 @@ }, "outputs": [], "source": [ - "def dissatisfaction(kbd):\n", - " \"The product of workload average and confusingness, scaled by 5.\"\n", - " return 5 * workload_average(kbd) * confusingness(kbd)\n", + "def dissatisfaction(kbd, scale=5):\n", + " \"The product of workload average and confusingness, scaled.\"\n", + " return scale * workload_average(kbd) * confusingness(kbd)\n", "\n", "def title(kbd, name): \n", - " return ('{}: path length = {:.1f}, confuse = {:.0%}, overall = {:.1f}'\n", - " .format(name, workload_average(kbd), confusingness(kbd), \n", - " dissatisfaction(kbd)))" + " X, Y = span(kbd[L].x for L in kbd), span(kbd[L].y for L in kbd)\n", + " return ('{}: size: {:.1f}×{:.1f}; path length: {:.1f}; confusingness: {:.0%}; overall: {:.1f}'\n", + " .format(name, X, Y, workload_average(kbd), confusingness(kbd), dissatisfaction(kbd)))" ] }, { @@ -1928,9 +1934,9 @@ "outputs": [ { "data": { - "image/png": "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\nrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYz\nMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPB\nzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBg\nMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4\nGMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwK\nDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOz\ngoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzM\nrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYzMys4GMzMrOBgMDOzgoPBzMwKDgYz\nMys4GMzMrOBgMDOzwv8HncS9VgcZunsAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1945,7 +1951,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now let'stry to minimize confusion. This should take around 2 minutes:" + "Now let's try to minimize confusion. This should take around 2 minutes:" ] }, { @@ -1955,9 +1961,9 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZwAAAEKCAYAAAAmfuNnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHBRJREFUeJzt3XncHWV9/vHPRcISlkBiEBBIBBGxrKIiliIQQAT8CVRR\noAgtolgtgogI8qMsFsQfiFIXxLagYQcF1GqBlqUiCCphpwqBEMImxAQJSeCXhG//uO+TTA7PlvA8\n9z1JrvfrxStnnbnOzJy5ZuM8igjMzMyG2gq1A5iZ2fLBhWNmZkW4cMzMrAgXjpmZFeHCMTOzIlw4\nZmZWRL+FI+kBSe8rEaYUSeMkvSppUApX0mRJ4wdjWG0i6VBJty7G66tMh8Gen8sqSW+U9EtJf5Z0\nVu08tnia3y9JJ0u6qHamxdXvFzQitoiIX5YIU1iv/wOSpFskzZH0oqSZkv6nZDBJu0m6S9JLkp6Q\n9JEC4+xtpd26/1Grl2Ib8pySzpL0cF5hPyTp4/28foykSyS9IOlPLVhBfAp4LiLWjIgvVs7SJ0nr\nSvqJpKfycjm26/lRkq6QNE3Sc5IukrR6fm6kpOskTc+Pq/G+8yXtW/rzDJFBXeYl7SXpVkkzJD0t\n6fuSVuvj9Tflaf+CpLslfai/cbRmi1DSsNoZGgL4TESMjIg1IuLtpUYs6S+AS4ATgJHA1sBdJUZN\n+tzq74XLsZeAvSNiTeBvgXMlbd/H668GngY2AN4InD3kCfs2DniocoaBehX4D+Cv6XnFejqwJukz\nvQVYFzglP3cEMBFYB9gI2A9A0nuB9SLi2qEMviRasv4bCXwFWA94O2m57WtP+Chg/YhYizTNL5a0\nTl8jGMghte7duCvzVsOLku6V9FZJx0v6o6QpknZvvPdmSWdIujNvFV4jaa38XGeL+jBJU4Ab8+Mf\nyofxpucG3Sw/fpykq7qynSvpm/n2SEn/mpt5qqSvdLZsJK0g6WxJz0uaBOzd3+dm8Ve820l6MG/J\nXiBppTzu+yUtGJ+k4TnH1r0M50TgexFxQ0S8GhEzImLyQAJI2il/9hPyOB6TdFDj+b0kTczzYoqk\nkxtv/+/87wt53r5n4dt0Vp4fj0r6wACzKC8Xk3KWy3uY94fkHM9J+nLjvatI+mEe54OSvihpan5u\nAjAW+FnOeWznbcDBPQ1vsETEqRHxSL79G+BW4L29fP7dSV/Y4yLipYiYHxH3DnRckv5K0m15a3OK\npEPy4yMlTcifcbKkExvvOVRpC7U5v/bIz10IHAp8KU+38ZIulHRa4/07daZzvv8lSU/m1/+PpF3y\n473O28ESEc9FxPeA39Hzd/HNwLURMSsiZgLXAJvn5zYCbo6IuaR5tLHSnvs5wJGLm2WI1kmHSvqV\npHMkTQNOlrSxpBu1cK/tYkkjFzfvkoqIy/N65+WI+DPwL8AOfbz+/jyNO4YDG/Y3kj7/AyYD4/Pt\nk4HZwG6ksvoh8Bhpa3wYcDjwWOO9NwNTSW05AvgRcFF+bhxpK+YH+bmVgbeStiLH5+F9EXgkf5Cx\n+bnV8vtXIG09vjvfvwb4LrAKMAa4A/hkfu7TpC27NwFrATcB84EVevnMNwN/BJ4jLbA7DWAa3dcY\n/q+A0/JzXwQub7x2H+DePob1KHBaHt5TwARgVOP5e4EDennvTsBc0lbJisD78jR7a37+fcDm+fYW\nwDPAhxrzYz6gxvAOBf4/cBjpS/9p4KkBLitHAbeTtpZWBM4DLu2a9+cDKwFbAS8Db8vPn5nnwcg8\nTe8Fnugazy6N+30Or4ecXwJmANPzv83b0/v7TuRhjMjL3/t7ef4k4DrgImAacCfwvgEOeyzwIvBR\n0vdgFLBVfm4CaVlfNX/uPwB/15hfr/Q2v4ALO8tlL/d36kxnYFPgCWCdRqaN+pu3PXyWDfua1vSy\nLDfePyzP27Fdj+8N/Jz0fRtF2mA9Mj/3GeBrpHXBr4A9gaOBkwYy/bvGsylDs046lPRd/Ux+38qk\nPbVd87DfANwCnNPHunjCUEzzxnC+2dt8bbzmZ8CcPI9+3u8wBzDS7g95feO5D5K+GMr3V88jHpnv\n3wyc0Xj920lfCLFwBTeu8fz/ZdGVs4AnyV9U4JfAwfn27sAj+fY6pBXMyo33HgDcmG/fCHyq8dzu\n9F047wZWI32ZDsmfcaN+ptEnG/f3bGRbD/gzsHq+fxVwbB/DeoVU4m8hrVR+BFw8wAVkJ1JBrNJ4\n7ArgxF5e/w3g6/l2Z36s0Hj+UODhxv0R+TVvHMCy8hCLlsJ6OdsKjXGt13j+TuCj+fajwG6N5z7B\nawtnfON+n8Mbiv9IG1u9fsFI5TefdOhtGPAx0hd+9ACGfTzw4x4eXyEvH29rPPYp4KY+5ternfnF\n4hXOW4BnySvArhy9ztshmM69Fc56wH/maTwPuL6Tk7TyPh+4h3TobX3SntIapHK8pfm5+xn/YK+T\nmvPq8X7GvQ9wVy/fr14LZ5Cm++7An4C3DHAe7QEc3d9rl+Qczh8bt+cA0yKPNd+HVDwdUxu3p5BW\n4mMajz3ZuP2m/BoA8nCnkhYYgMuAA/PtA4FL8+2xebjP5N3eGcD3gLUbw+3O0auI+G2kXfW5ETEB\nuA3YC0DSL5QuJHhR0oGNtzU/x5Q8TiLimfz+D0tak1RGF+dhndcY1vH5vXOACyLi0YiYDZyR3zNQ\nMyLi5Z6ySHqPGif6SMddx/Q0kIZnOzciYg7pC7d67y9fYBxwTZ4f00krqbmkL2JHc1ma3Rjum1h0\nejbnXV96G96gUrrC6y9IJdKbOaQVyg8iHU67gvQ5ej1E0bAhqXS7jSFt/T7ReGwKC78f8Nr5BUsw\nHSLiUdJewSnAHyVdKmnd/PRA5u1Qu4q0d7caaU/4MdK5TyLilYg4IiK2iYgTSRtWXwYOJm0c7wxs\nL+n9AxjPYK+Tmt+3RZZrpasIL8uHMV8grSf6+34OOqXzkpcAH87LQZ/y8n09sIekD/b12hIXDTSP\n6Y0jbQlNazwWjdtP59d0v/+pfPsqYGdJ65NOBHZm7lTS1sQbImJ0RIyKiLUiYqv8/DM95FgcQT6O\nHBF7RbqQYGREXNaVszn8pxv3JwAfB/YHbo+IZ/Ow/r4xrDPza+9bzGzdRkka0bg/tpHlEuBaFp7o\nO5+Fx8eb82EwPAHsmedHZ56slgu4P8+Qzn90jO16/nVlVTrH1Sn65n8zJb3Yz3tPJW3N7R4RL/Xx\n0vt6yDnQ3FOBTXp4fBppxd5cfsex8PuxuGaR9qI71ms+GemY/o6N8X0t/zvgeStpw76mdddG2+LY\nGjg/0vmG2aSV+Ws2zJTPOUbEDcCWpD0d8r9bdb++B0O1ToLXLg9nkPbmNs/fz4NZgot4Xs80l/QO\n0jribyPilsUc9XDSnnGvShTOwZI2k7QqcCpwVWOPqHtiXgnsLWkXpZPrx5Jm2u0AETGNdHL7QtK5\noj/kx58FbgC+IWmNfFJzYy38/4euBD4naX1Jo0jH8HskaU1J75e0sqRhkv4G2JF0PL4vn83DH03a\nmrq88dy1wLbA50jl05cLgb+TtFGeZl8iHScdKAGnSlpR0o6kY91X5udWJ+0BzZW0HXBQ433Pkxb2\nPheYxXA+cIby5ayS1tail0329UW6EjhB0lr5i/zZruefBTbuemzAX8yI+Gqj6Jv/rRERvZ6klXQC\naSt2t4h4oZ/RXEMq/48rXbTyEdJW8W15WCdLuqmX914C7CrpI3kZHC1p64h4lTRtTpe0uqRxwOdJ\n54mWxD3AXkqXGK9LOjfT+ayb5u/hSqSNxM5xeuh/3i4QEVP7mtZdG22LkLQy6fwHwCr5fsdvgMOV\nLjAZQdpbv6/r/asAX218rsmkcliRtKf5WH5dX/NiqNZJPVmDdE5oZl7ul+jS9SWd5pK2IF0ZeGRE\n/KKvcUh6m6QP5Ok/XNLBpPXkf/f1voEUzuJuTXa//iLS8e6nSSd0j+rttRHxMKnVv01aAe4N/J+I\nmNd42aWk48qXdI3nkDz8h0gnxq4iXSoJ6WqL60knn38H/LiP/CsC/0S6YOB50spun4iY1Md7Iue6\nAZhEOql4euNzvZzHuRHpUtneBxRxIamU7iR9Qeaw6IrggX62Cp8hnSt4mjTtj4h8ZRXpBOVXJP2Z\ndGz6isZ45+TMt+VDANv18Vl7jd+4fS7wE+CGPL7bge16eW33/dNIW5CTSdP0KtK5i44zgZNyzmMG\nMLzBcjpp63aSXnsolPzYDgARMQP4EGml8QJwHOkCjen55RuSy6dbREwlHcI9lrQs383CrfHPkQ4X\nPkY6f3BxXmZ609d0uIi0kn6ctEHV3EhamTSdnyctS2uTLg6C/uftYJlDOn8awO9Jn7vjMNL36UnS\n3sSbSedFmk4gTZ/Ontf5pM/xHGkv7Zr8eF/zYqjWST05FXgnaXn5Ga9dTw3FMt10DOkQ3r/lZXmm\npPs7TyqdAvhu5y75cCtpeh5JOmd6T18j6JzsHxKSbiZdlXbBkI1kKSHpJNLVYocM4Th2Ik3v7kNQ\nSzVJnwY+FhG71M4yWCRNBHbNxWQVeV6UM7x2gOVBPsz2CeBvamdZGuTDOxsDvyZdlvoF4J+rhhpk\nEbFt7QyWeF6UM9TncIZ6F7D1JB1O2n3/eUT0uNtur7ES6fDHi8B/kQ59nFc1kZm9bkN6SM3MzKyj\nNb+lZmZmyzYXjpmZFeHCMTOzIlw4ZmZWhAvHzMyKcOGYmVkRLhwzMyvChWNmZkW4cMzMrAgXjpmZ\nFeHCMTOzIlw4ZmZWhAvHzMyKcOGYmVkRLhwzMyvChWNmZkW4cMzMrAgXjpmZFeHCMTOzIobXDmCv\nn6TpwKjaOXoQgGqH6OJMA9PGTDMiYnTtELbkFBG1M9jrJCkiom0rh1bmcqaBcSYbCj6kZmZmRbhw\nzMysCBeOmZkV4cIxM7MiXDhmZlaEC8fMzIpw4ZiZWREuHDMzK8KFY2ZmRbhwzMysCBeOmZkV4cIx\nM7MiXDhmZlaEC8fMzIpw4RiSTpT0gKR7JU2U9O7KefaVdHfOMjHfni9pj8q55jfyTJR0XM08OdPM\nrvuHSvpWrTw5Q2c63S/pJ5JG1sxj7eE/wLack7Q9sBewTUTMkzQaWKlmpoi4Fri2c1/SJ4GDIuL6\neqkAmBUR21bO0K2nP2hV+49cLZhOkn4AfBb4atVE1gouHFsPmBYR8wAiYnrlPIuQtCnwj8D2tbPQ\nvr+AuTT4NbBl7RDWDj6kZjcAYyX9XtJ3JL2vdqAOScOBS4DPR8RTtfMAI7oOqe1fOxCwavPQI3Bq\n7UDkYpY0DNgV+GndONYW3sNZzkXELEnbAjsC44HLJR0fERMqRwP4J+CBiPhR7SDZ7BYeUlskk6RD\ngXdWzAO5mIENgIeA/6ycx1rCezhGJL+MiFOAI4EPV46EpJ2B/UjH/23p0inBsaS9nX+onMdawoWz\nnJO0qaRNGg9tA0yplQdA0ijgAuCQiJhdM0uXNp7DaW2miHgZOAr4giSva8yH1IzVgW9JWhOYB0wC\nPlU3EkcAawPnSel0AOnKq69GxFUVc62SDxV18lwXEV+umAfqX5HWkwWZIuIeSfcCB5LOx9lyTBFt\nXF5tcUiKiGjdlm4bcznTwDiTDQXv5pqZWREuHDMzK8KFY2ZmRbhwzMysCBeOmZkV4cIxM7MiXDhm\nZlaEC8fMzIpw4ZiZWREuHDMzK8KFY2ZmRbhwzMysCP94Z0WSpgOjaucwWw7NiIjRtUMsb1w4FbXx\n12+daWDamAnamcuZrMOH1MzMrAgXjpmZFeHCMTOzIlw4ZmZWhAvHzMyKcOGYmVkRLhwzMyvChWNm\nZkW4cMzMrAgXjpmZFeHCMTOzIlw4ZmZWhAvHzMyKcOGYmVkRLpyllKRxku7veuxkScdUzLS+pGsl\nPSxpkqR/lrRirTw503xJEyXdI+l3kravmSdn2kDSY5LWyvdH5ftjK+eaWXP83SSdI+lzjfvXSfp+\n4/7Zko6uk86WhAtn6da2P2Z0NXB1RGwKvBVYFTirbiRmRcS2EbEN8GXgzMp5iIgnge8CX8sPnQl8\nLyKeqJcKaN/ydBvwlwCSBIwBNm88/5fA7RVy2RJy4digkDQemBMREwAi/WW/zwOHSFq1ZrTG7TWB\n6bWCdPkm8B5JR5FWnF+vnKeNbicXDqloHgBmSlpT0krAZsDEWuFs8Q2vHcCWGZsDdzUfiIiZkiYD\nmwD3VUkFIyRNBEYA6wLjK+VYRETMk3QccB2wW0TMr52pbSLiGUlzJW3Awr2Z9YH3Ai8C90fEvJoZ\nbfF4D2fp1dvhj7YdFqn9Z3xn50Nqbwf2BC6qnKdpL+BpYMvaQVrsdmAHUuH8Grijcf+2irlsCbhw\nll5/AkZ3PTYamFYhC8BDwLuaD0gaCawD/KFKoi4RcQcwRtKY2lkkbQPsCmwPHCNpncqR2qpzWG0L\n0iG1O0h7OO/F52+WOi6cpVREzAKelrQLgKTRwB7AryrluZF0+OrgnGcYcDbwrYh4pUambMEelqTN\nSMv8n+rFWeC7wFH5AoL/h8/h9OZ24IPA9EhmAGvhwlkquXCWbocAJ0m6G/gv4JSImFwxz37A/pIe\nJu1pzY+I2leFrZIvi74buAw4JF/QUI2kTwJTIuKm/NB5wGaSdqyYaRhQc8OgN/cDbyAdTms+9kJE\ntOUCEBsgVf7uLdckRUTUPsexiMHKlP9/l8uA/SLinjZkGkxtzARLnkvS1sD5ETHo/59SG6dVGzMt\nD3yVmg2JfL5ko9o5rH+SjgCOBI6qncWWbd7DqaiNW1nONDBtzATtzOVM1uFzOGZmVoQLx8zMinDh\nmJlZES4cMzMrwoVjZmZFuHDMzKwIF46ZmRXhwjEzsyJcOGZmVoQLx8zMinDhmJlZEf4ttYokeeKb\n1RER4Q3uwvxr0ZW17QcE2/ijhs40cG3M1dZMtTMsj9zwZmZWhAvHzMyKcOGYmVkRLhwzMyvChWNm\nZkW4cMzMrAgXjpmZFeHCMTOzIlw4ZmZWhAvHzMyKcOGYmVkRLhwzMyvChWNmZkW4cJZSkmbWztBN\n0q2SPtC4v7+kX1TO9Kqksxr3vyDpHytnmi9poqT7JV0haZWaeTokrS/pWkkPS3pE0jckVftFeUmj\nJd2dp9Uzkp5s3Pcv3S+FXDhLrzb+vPqngXMkrSRpdeB04DOVM70C/LWk0ZVzNM2KiG0jYktgLmm6\ntcHVwNURsSmwKbAGcEatMBExPSLeERHbAucB53TuR8S8WrlsyblwbNBExIPAT4HjgZOAH0bE41VD\nwTzg+8AxlXP05lZgk9ohJI0H5kTEBEh/nQz4PHBYS/bAWvX3dGzJeLfUBttpwETSnsW7KmeBtCf4\nHeB+SV+rHSYTQD4stCfwH3XjALA5cFfzgYiYKWkKqRAfqJLKlikuHBtUETFb0hXAzIiYWzsPQES8\nJOmHwFHAnNp5gBGSJubbtwL/VjNMP7xnYYPGhWND4dX8X5ucS9rzuqB2EGB2Pi/RJg8BH2k+IGkk\nsCEwqUoiW+b4HM7Sy1ueAyOAiJgBXAkcXjcO0MJ5FxE3kva8DgaQNAw4G7gwIl6uGs6WGS6cpdcI\nSU9Impr/Pbp2oJZqXs33deAN1L/Cr/b4e7Mf8FFJDwO/Jx1+PLFuJFuWKF2MYjVIioho1dauMw1M\nGzNBO3M5k3V4D8fMzIpw4ZiZWREuHDMzK8KFY2ZmRbhwzMysCBeOmZkV4cIxM7MiXDhmZlaEC8fM\nzIpw4ZiZWREuHDMzK8KFY2ZmRbhwzMysCP8Btsokte7nup1pYNqYCdqZq4WZZtQOsDzynydYBrT1\np9bbmMuZBsaZbCj4kJqZmRXhwjEzsyJcOGZmVoQLx8zMinDhmJlZES4cMzMrwoVjZmZFuHDMzKwI\nF46ZmRXhwjEzsyJcOGZmVoQLx8zMinDhmJlZES4cMzMrwoWznJM0s3F7L0m/l7RhzUwdkvaV9Kqk\nTVuQ5SZJu3c9dpSk79TK1MjxRkmXSJok6beSbpO0T8U8r0qa0Lg/TNLzkn5aK5O1gwvHAkDSrsA3\ngQ9ExNS6kRY4ALgVOLB2EOBSXpvjgPx4bdcCt0TEJhHxblKuDSrmmQVsIWnlfH93oC3LlFXkwjFJ\n2hE4H9g7Ih6vnAcASasBOwCfoB2F82NgL0nDASSNA9aLiNtqhpI0HnglIv6l81hETI2I2ntevwD2\nzrcPBC6rmMVawoVjKwPXAPtGxCO1wzTsA1wXEZOAaZLeUTNMRMwAfgPsmR86ALiyXqIFNgcm1g7R\nJYDLgQPzXs5WwJ11I1kbuHBsLnA7cHjtIF0OJK20AK4ADqqYpeNyUtGQ/23dVrukb0u6R1LVFXxE\nPAC8mTQffw74T0ObC8eYD3wU2E7SCbXDAEgaBYwH/lXSY8CxwP51UwHwE2DXvLc1IiLurh0IeBB4\nZ+dORPwDsCuwdrVEC/0UOIsWFrPV4cIxRcTLpOPtB0k6rHYgUrlMiIiNImLjiBgHTJb0VzVDRcQs\n4BbgAlqyEo2Im4CVJR3ReHi1Wnmyzt7MBcCpEfFgzTDWHi4cC1hwjmJP4ERJH6wbiY+Rzis1XU07\nLh64jHROohWFk+0L7CzpUUl3ABcCx1XM01mmnoqIb1fMYS2jiKidwV4nSRERrTtG3sZczjQwzmRD\nwXs4ZmZWhAvHzMyKcOGYmVkRLhwzMyvChWNmZkW4cMzMrAgXjpmZFeHCMTOzIlw4ZmZWhAvHzMyK\ncOGYmVkRLhwzMytieO0ANjgktfJXWNuYy5kGpoWZZtQOYK+Pfy3aFtHGX+R1poFrY642ZrI6fEjN\nzMyKcOGYmVkRLhwzMyvChWNmZkW4cMzMrAgXjpmZFeHCMTOzIlw4ZmZWhAvHzMyKcOGYmVkRLhwz\nMyvChWNmZkW4cMzMrAgXjpmZFeHCsUEjaR1Jl0l6RNJvJf27pE0qZ5ovaaKkByTdLekYSVV/Kr+R\n6e7879iaeTokzaydwZZt/gNsNpiuAS6MiAMBJG0JrANMqphpVkRsm/OMAS4DRgKntCFTy/iPY9mQ\n8h9gs0Us6R/LkrQLcHJE7NyWTPm9L0bEyMb9jYDfRsSYiplmRsQar2f8fQx70KZVGzLZssWH1Gyw\nbAHcVTtEfyJiMrCCpLUrxhjROKT244o5zIryITVbHtXe2p7d0kNqZkPKezg2WB4E3lU7RH8kbQzM\ni4jna2cxW964cGxQRMRNwEqSDu88JmlLSTtUjAWNvZl8GO084Fv14qQolcffm7bmsmWED6nZYNoP\nOFfS8cAc4HHg6KqJYBVJE4GVgLnAhIj4RuVMbb1Sp625bBnhq9RsEW28osiZBq6NudqYyerwITUz\nMyvChWNmZkW4cMzMrAgXjpmZFeHCMTOzIlw4ZmZWhAvHzMyKcOGYmVkRLhwzMyvChWNmZkW4cMzM\nrAgXjpmZFeFfi7bXkNS6X3R1poFrYa4ZtQNYO/jXos3MrAgfUjMzsyJcOGZmVoQLx8zMinDhmJlZ\nES4cMzMrwoVjZmZFuHDMzKwIF46ZmRXhwjEzsyJcOGZmVoQLx8zMinDhmJlZES4cMzMrwoVjZmZF\nuHDMzKwIF46ZmRXhwjEzsyJcOGZmVoQLx8zMinDhmJlZES4cMzMrwoVjZmZFuHDMzKwIF46ZmRXh\nwjEzsyJcOGZmVoQLx8zMinDhmJlZES4cMzMrwoVjZmZFuHDMzKwIF46ZmRXhwjEzsyJcOGZmVoQL\nx8zMinDhmJlZES4cMzMrwoVjZmZF/C+p0vRVUF8R/AAAAABJRU5ErkJggg==\n", + "image/png": "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\n3vB9NsKzNTcQun0vJhR+WVweTRh+uY7wF+v28/CAm8hUZtq9LyIiIovHovnb+yIiIjJbKvoiIiI9\noaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi\n0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoi\nIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPbFK\n6QCyOJjZEgB3X7KYpwdK51BO5aw552Ba+sfcvXQGERERWQHUvS93u0tZrJQzL+XMq5ac0m8q+lKT\npnSARE3pAIma0gESNaUDJGpKB0ihi5N+U9GXmsb32tIBErWlAyRqSwdI1JYOkKgtHUBkEo3pi4iI\n9ITu9KWa7j7lzEs586olp/Sbir7UpCkdIFFTOkCipnSARE3pAIma0gFS6OKk31T0RWP6+bWlAyRq\nSwdI1JYOkKgtHUBkEo3pi4iI9ITu9KWa7j7lzEs586olp/Sbir7UpCkdIFFTOkCipnSARE3pAIma\n0gFS6OKk31T0RWP6+bWlAyRqSwdI1JYOkKgtHUBkEo3pi4iI9ITu9KWa7j7lzEs586olp/Sbir7U\npCkdIFFTOkCipnSARE3pAIma0gFS6OKk31T0RWP6+bWlAyRqSwdI1JYOkKgtHUBkEo3pi4iI9ITu\n9KWa7j7lzEs586olp/Sbir5kYWbLzOx8M7sg/neLGaymmbYBM7vTzD7YmX6jmb1j2naHNNM20Nme\nPzazH5rZbhlyDWumbcDM7mdm/2ZmvzKzH5jZOWa2X4ZsXc00C3e25YVmdqqZrZEp17Bm2gbMbBMz\nO9nMfhm359fM7CEZsnXXsSRne1IXFX3JNaZ/i7vv4u47x/9emaHNYW2GNm4HnmVmG2Zoa5Q2QxuD\n7bkT8FbgfRnaHNZmaOM0oHX3h7j7I4DnA5tlaLernXL5wbbcHvgz8MrpIy2ozdDGl4Az3P2hcXu+\nBdgkQ7sigMb0JRMzW+ru65TOMYmZLQXeA6zj7m8zszcCa7n7uwpHm6e7Pc1sf+AAd39W4VjzmNke\nwNvdfffSWcYxs5vdfd34+hXA9u7+msKx7sbMdgeOdPemdBa599KdvuTq7luz073/hQzt3U2mnA4c\n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\nzCrDxck3gS3M7BIzO8bMnpAh1jy1nJMkUNGXWWlm2HbOHoomRyPufitwKvBpd/9zjjaHNBnaOJdw\nB/0Y4LvAeZ3pczK0D3lyHkAoqBC26QsytDmsmbYBd78I2IqQ9z+YQc9Zhou9W4BdgJcDvwdOMbMX\nZYgmlcr5QJSsABWNn7UZ2vgp8JzuG2a2LrA58KsM7UPe39e+M/6bhTZDG4Mu/u0I3fu/Ad4I/BE4\nIUP7MGVOM9sA2IMwXu7AyoS76jdPH22eNlM7XwE+SLiI2DhTm13NtA3EYbGzgLPM7ELgRcBJ45e6\nR+0vydWWzJ7u9GUmMo2VfxtY08wOhPCENPAPwAnu/r/Tth/XsSRHO7OWKee5wFOBGzy4EVif0MWf\n4yG+HDn3B05y9we5+9buviVwuZk9bvp0czLkHNzVHw+8Mz7XMQvtNAub2TZm1h0K24kwPCY9paJf\nmVrGzzLmfCbwXDP7BXAJcBtwRKa2+7Y9LwQ2InTtd9+7yd1vyNB+jpzPA7409N4XyfxAX6Yxfdz9\nanf/2PSJRqxk+ouTtYET46/s/Rh4ODBtm/PUcgxJoL/IV5la/kKXmbXu3pTOMYly5qWcedVwvNeQ\nUeboTr8yFR1cbekAidrSARK1pQMkaksHSNSWDpCoKR1gkorOSYLu9EVEFi3dRUtuutOvTC3jZ8qZ\nl3LmVUvOGgp+LdtSAhV9mZWmdIBETekAiZrSARI1pQMkakoHSKGCKrmp6Femhiv/qC0dIFFbOkCi\ntnSARG3pAIna0gESNaUDTFLROUnQmL6IyKKlMX3JTXf6lamlu08581LOvGrJWUPBr2VbSqCiL7PS\nlA6QqCkdIFFTOkCipnSARE3pAClUUCU3Ff3K1HDlH7WlAyRqSwdI1JYOkKgtHSBRWzpAoqZ0gEkq\nOicJGtMXEVm0NKYvuelOvzK1dPcpZ17KmVctOWso+LVsSwlU9GVWmtIBEjWlAyRqSgdI1JQOkKgp\nHSCFCqrkpqJfmRqu/KO2dIBEbekAidrSARK1pQMkaksHSNSUDjBJReckQWP6IiKLlsb0JTcV/coM\nuvsGJ4LFOj1QOodyKqdyrrhpWfxU9EVERHpCY/oiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIi\nIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIv\nIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq\n+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9\noaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi\n0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj3x/wFHAh0Zrp5G\noAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1965,9 +1971,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nz6UTcJMAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1975,9 +1981,9 @@ }, { "data": { - "image/png": "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\nyVbnVgAAAABJRU5ErkJggg==\n", + "image/png": "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\n4YINug5gVIn1V2I7t35x0jezxpzMzBYGJ30rQolznSXOCZfK9TeeEo+T9YuTvpm1YarrAMxsbk76\nVoQSh4dLnBMu2KDrAEaVWH8ltnPrFyd9M2vMycxsYXDStyJIWlKd72xpeTB8rebyFdV54by+yXLj\nmICXlBbTsMwWyqjWX9PPNcj112ZMrbZRsy74f9mziaMC/yc6SYPShpsd03hKbE9mdflO38zMrCd8\np29mZtYTvtM3MzPrCSd9mzglPixV6B+KGXQdw6hCY1rSdQxmbXHSNzMz6wnP6ZuZmfWE7/TNzMx6\nwknfJk6Jc7CFzlUPuo5hVKExLek6BrO2OOmbmZn1hOf0zczMesJ3+mZmZj3hpG8Tp8Q52ELnqgdd\nxzCq0JiWdB2DWVuc9M3MzHrCc/pmZmY94Tt9swpJKyWdJ+ln+d/tCorpAkmnStqggJi2l3TByGtH\nSzqyw5iWd/XeZguFk75NnIZzsLdExB4RsXv+96qWYhq0ENOuwO3AqwqICaD1YcKGMc3LsKXn9G2S\nOOmbrU5dBzCHs4CHdB2EmS1MTvo2cSJiSYPdN6wM73+txZimGuwuAEmLgf2BC2bffK3ENC8KjWlJ\n1zGYtWVx1wGYFWZFROzRdRAjNpR0Xv79LOCfugwmm2ko3U8GmxXMd/o2cUqcg204V70iz+nvERFH\nRMQdBcT0e2Dzkdc2B5Y2KNPf0zebZ076ZqsrcU6/uJgi4hbgWklPApC0OfBU4IcdhlXccTIrjb+n\nb1Yh6aaI2KTrOKpKjAlA0o7AccC9SMP6H4yIUzqM5w7gWlLyD+CjEfGxruIxK5GTvpmZWU94eN8m\nTolzsIXOVQ+6jmFUoTEt6ToGs7Y46ZuZmfWEh/fNzMx6wnf6ZmZmPeGkbxOnxDnYQueqB13HMKrQ\nmJZ0HYNZW5z0zczMesJz+mZmZj3hO30zM7OecNK3iVPiHGyhc9WDrmMYVWhMS7qOwawtTvpmZmY9\n4Tl9MzOznvCdvpmZWU846dvEkbSkOg9byPKggBgcU8Nls4XOw/tmZmY94Tt9MzOznnDSNzMz6wkn\nfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30zM7Oe\ncNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDSNzMz\n6wknfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30z\nM7OecNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDS\nNzMz64n/D+O2IlqlNgNLAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1987,8 +1993,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2min 30s, sys: 482 ms, total: 2min 31s\n", - "Wall time: 2min 31s\n" + "CPU times: user 2min 23s, sys: 311 ms, total: 2min 23s\n", + "Wall time: 2min 23s\n" ] } ], @@ -2013,9 +2019,9 @@ "outputs": [ { "data": { - "image/png": "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\nP/K3c1luY46PAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdIAAAEKCAYAAACmDdR0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3HmcJVV5//HPMzPsMOwu7AFlETVA1BeKaAGiInHBBCKI\nuEaMIcElMSEutBsuGHclMREEVNBEFKOJMYoVFNzCoBlUgizCsIjAgDPMqD+YeX5/nHNnqu90962Z\nOjWnT9/v+/Wa13Tde+vU07Wcp8556ra5OyIiIrJh5uUOQEREpGRKpCIiIh0okYqIiHSgRCoiItKB\nEqmIiEgHSqQiIiIdjEykZnaTmR2ZcqNm9mIz+3bKNtdz+98ys5d1bGN3M1tmZpYqLunGzM40swvX\n4/OrzWzvPmOaZrtPNbMlG3u7s4mZnWdmS83sex3aeLKZ/SxlXDI7DV8zfeSlLnKOSIv+Aqu7L3H3\nhd7zF3HNbAsz+7iZ3WVm95pZPcNntzezL5rZ/fFEO3EDtneAmf0wdnL3mNnXzeyAPre5IWZIRutz\nPDbKOThNwt7gbZvZ2WZ2nZn92sx+amYvmuGzZ5jZ8njTt8zMVprZg2a2w4ZuvyszezJwFLCLux+6\noe24+3fcfdpzs2Rm9jYz+18ze8DM3jL03sPM7FIzuy2eW3sMvf/Xsb9YbGYHNl4/zMwu2Vi/Qw82\n6Joxs8rMLjOz+8zsxhGf3TPu02WN6+aNo7Yxp6d2zWx+7hgS+CdgO2A/YAfgtTN89uPAb4GdgZOB\nc5pJ0Mx2NbOdhlcys4Mai7cBJ7j7DsBOwL8BF2/oNntkdE+EG2s2IXXCvh841t23BV4CfMjMpkxI\n7v4ud98m3vQtBN4D1O6+NHFM62Mv4Bfu/tuMMcx2Pwf+GvjKFO+tBv4DeD5D55aZPQx4KWEf/wPw\n7vj6fOB9wOm9RdxBzzN7K4BPAn/V8vMObNu4bt45eg33Gf8BNwFHxp8PAG4E/iQuPxz4V+BXwA3A\nX8TXHxqD377RziHxc/OBFwPfAT4C3Af8dLCNRruXAvcA1wGvaLz3eOBK4F5Cp/8RYEHj/dXAq+N6\nN8TXjgZ+Ftf5CFADLxv1uze290Pg18AdwPvi63vGbc0DDgWWA8viv98AN8bPGfC3wPXAXYSktF3L\nbe8X98/WLT67JfA7YJ/Ga+cDZzWWXwdcHU+SwWsfJnSsU7W5APhz4P4O27wXeNI06486D14SX1sW\n998rG9tdCTzY2O8PA84EPhdjWAYsBg6ZYZ+tBvaOP29K6Ghujsf548Bm8b2nAkvi/rsznncvabSz\nA+GG49fA94G3A9+O7/133M79MabjR7W3vv8I18prW372BuDkxvLfAF+e4fO7AV8gXLt3AR9unNdv\nAn4B/BL4FLBw6No4Je7PXwF/F997GeH6eCDujzPjefDtGY7Ns4CfxM8vAV7XPC5DfdXrgR/H8+4i\nYNPG+28AbgduBV4+tI3zgI8SEtcy4LvA7zXW3R/4OqFP+hlwfOO96eLbMZ4X98b1/nsDju2FwFum\neW9+/B32aLz2BOAzjf7jmvjzXwF/O0UbuwNLgd2m2camwAfjOXor8AFgk/jeT4FnDcXzK+CguHwo\ncEX8/a8Gntr47LeAdxCu/xXA3kxzvTeO9S1Dx/rIqWKeYV8eReyXZ/jM4Nydv15tt9j4TcCRhER4\nM3BM40L6H+CNcQfuFX/5o+P7XwFObbTzfuBD8ecXEy6kv4zrnkDoSLeL719O6Fw3AX4/HpwqvndI\nPFkM2COewH85dAH+J7AtsFk8mZcBx8VtvSZu+2UtT6QrgRfGn7cEntDY4auAeUOfX0BI1O+Iy6fH\nNh4ef59zgM82Pv9j4AXTbPtF8f33EzqxHwPPn+azBzGU8Agd9aVDr32Y0ElsTbhbXUTsAIc+dy/w\n/wjJ6owu25zh3Bp1HhwD7BV/PpxwwQ0u0kkXVnztTEKCfUY8P84CvjvD9psd6QeAL8XzZitCcnpn\nY1sPxPbnx7hWEG9ICDdHn43n2wHALcDlQ9tpdsqj2jsR+FHLfbgFITk8vcVnn0K4FrZs2fY84EeE\nG4zNCZ3qk+J7LyPcrO5JuC6+AFww1Bn9Y1znsYRZi/0ax725fyYtx9dWNY7N7Y3tbjvdOUDoq75H\nuJHfjtApD26+nhnb2T/+LhcObeM8wjX2B/H3/jTxOo2/3y2EGwMj9El3AfuPiO8swg3ZvHicD2vE\n+jHgoy2Owfom0h2A/41xnEa4sdwN+AGNAUfbf8DbCP3XjvHfFcBb43tvBj7d+OyxwE/iz7sCdwPP\niMtHxeUd4/K3CDdh+8f9s4D1uN6ZPMA7DFja4ndpm0hXEW6IbgHOHcQ843otNn4TMBEbPrzx+hMI\n0zPNz/4t8Mn48wnAdxoX5B3AHzQunFuH1v0+8MJ40B+gcbHHE/LcaeI7HfhCY3k1k+98XgRcObTO\nEtqPSGtCh7fj0OvTJdJzaNzhEy7mIxrLDyckqHkttn1G/H3eHE+0pxBGYPtN8dknA7cPvfYK4LIp\nPnsu4aboGmCHGba/BfAqGnedG7rNadaf9jyY5vNfZO2sx3SJ9OuN5QOAFTNsv5lI72dysnsia2cV\nnkq4qOc13r8zXgPz4vF8ROO9t7NuIt27sTxte23229DvcD7w1Zaf/efprqNpPn9ojGudcxX4BvCq\nxvK+g/O6cW08fOi4ntA47qMSafPY/AL4U2Cboc9M1bme2Fh+D/Dx+PMniTdGcXkf1k2kn2i8fwzw\n0/jzCQyNJgnTpm8eEd9b4zm7T/P19Ty+65VI4+t/AlwFfJUwUPgCcET8PeoY0y4tt389MRnG5acD\nNzX24TJg87j8aeBN8ec3AOcPtfU14EXx528BEyO2Pe31Tn8j0q0Ig7V5hHLVvwBfG9V22xrpqcAV\n7t580nZPYNf4UMpSM7uX0PE/JL5/KXCAme0Zd/597n5VY/3bhrZxM7BL/LfU3VcOvbcrgJk90sz+\nzczuMLP7gHcSanlNtzZ+3oWQOJvW54nJlxOmSK41s++b2bHTfdDMTiUku5MaL+8JfHGwnwiJ9QHC\nXfMovyF0Tu9w9wfd/XLCCfj0KT57P7Bw6LVtCYl32M8I++y2uN6U3P03hFHFBVPVVtdzm9OZ7jzA\nzI4xs+/Gh57uJXRuU8XR9MvGzyuBzc1sxvPczHYmjDquahyn/yDcgQ/c4+6rh9remnCxzWfyOdfm\n/JquvdbM7GzgUYSOc9RntyBMK39qPTaxO3DzUJwDuxCO1cDNhJu95nl9Z+Pn9f79Gv6IMNq5OT5x\nP9MDStNtc7gfWMK6NfLhc2ew7p7AoUN93Ums/V2ni++9hKn0r5vZ9Wb2N6N+0RTc/XPu/gfufixr\nZwMGMwvHEspxf9+yuV0II7OBmwmDAdz9BkJ/9ux4fj0H+Ez83J7ACUP77DBCCWZg0nWygdd7Uu6+\nwt0Xuftqd7+LMKp/upltNdN6bRPpq4A9zOz9jdeWELL7DvHf9u6+rbs/Owb0O+DzhBHhyYQ7q6Zd\nh5b3IEyR3A7sMBT4HqztcM8hJIJ93H07wtTy8AXhjZ/viOs37T7jb9tsyP0Gdz/J3XcmXBj/Gk+a\nSczscMId6HPcvZmcbiFMhzf301bufkeLzf/voPlmSNN89jpggZnt03jt9wlT3804X004no8i1PQ+\nb2YLZohhPiHJDB+v1tscYcrzwMw2JVzw7wV2dvftCcltsC+m2w8b4m5Cx3lg4zht5+FhnlHuIkx/\n79Z4rfX5taHM7K2EKeyjh8636TyfkLwvX4/NLCFc91P1E7cTOsuBPQk3iHdO8dlRVhDOMWDNAzNr\njq+7X+XuzyPctFxK6FfW1x1MPkZ70P4cWkJ4jqB5DS9099Nmii92yn/l7vsQkszrzOyIDYh9g5jZ\n5oSBxuuBRxJGdCsIz3w8pmUzt7Hucb69sXwx4abiuYRp3Zvi60sIU/3NfbaNu5/dWHfN/m9xvefk\njMiVbRPpckKN4Slm9q742g+A5Wb2BjPb3Mzmm9mBZva4xnoXEgrIz2bdRPpQM/sLM1tgZscT5sq/\n6u63Eubk32Vmm5nZYwmjwsH62wDL3H2lme0P/NmI2L8KPMrMnhdjPJ12o0EAzOyFjdHYrwk7dXCH\nbvEzuxNqEafEu7SmfwTOGjyibmY7m9lzWm7+ckIiPiPGfhhQEWrAk8QR/CXA28xsy/gVg0n73cxO\nJjxccpS730y4AIwwJTP4zNPM7CAzm2dmCwn12aWEm5cN2eZqM3vKDL/jQ6Y6Dwi1tU2Bu919tZkd\nw+SR+J3AjjHGmYy8ED3M6fwT8ME4Oh084TzVyH943dWEfTBh4atK+xNqaU2/JDxMkYSZnUGooz7N\n3e9rudopwAVTtHWmmV02zTo/ICSgd8fju5mZPSm+dxHwWjPby8y2JnTYFzdGr+vTAf4YONDMHmtm\nmxGm6AfxbWJmJ5nZQndfReiLVq1H2wOfB15qZvub2ZaEB6Xa+gqwr5mdHM/TTczscbGtaeMzs2Mb\nN5nLCTdcU43u1xG3szmhj94k7vt5jfc3I9R6Icy6bDZFM28CznP3XxL6kf3M7CGEZ15ujO0Mvu4x\nPNgYuBh4k5ntFPvBNzO5L7+YcF3+GeE5gYFPE0aqT499yeYWvrK2yzTbGXW9bzALNovtz4v7cpNp\nPvsEM9s3rrMj8CHgW+4+8yxbi3nlG1lb1N2e8PTVoNj8MMLOu4PwVNqVDM1bE0Yt3xp67cXAtwkP\nvtwHXEvo3Afv70J42u0ewmPgf9p473BCp76M8ETkBJPrLWvqHo3Xng78H+EBmg8TpkebDxstY/qH\njS4kdNqDp0CfHV9fUyONv8+DrH1qdzmwOH7OCA84XUtIxD8nPogU37+GRl1niu0fEPfr8vjZ5zTe\nO4NGfSweny8Splx/QXy6uvH+QcC+Q69tAhzXWP7jxv69Mx6HR2/INuO+vY/G09vreR78GSEJLSXU\nAj8LvK3x/j8TRpNLWfvU7gWN99cco2m236yRbUpIBjfEWH4CnOZT1GemuC52InS29xFqge8C/qvx\n2VcS7uKXxv07qr2TBufPNHGvJkz7D861ZTSeyIyvNR9s2YVQIth7irb+GXj7DNvaLR7fuwkP/X2w\ncV6/idBB3xmPz+BhqXX2O3AZa6+5qWqiZxBG94MbvFWEm49NCCOTexr794lTHZfmPozLw+fD3xD6\nqlsJ5apVwK7xvfOGzq3hth8Zj/Hg6eVvEKZNZ4rvNYRa3vK4n/6u0d45xPrtNPv9vHicVzX+nTJ0\nDgxeXw2sGlp/vxiLNV57fYz9GsLsC4T+9EameUqV8ADdBwnn722Eh/I2HfrMNwhP7z9k6PXHE2qy\n97C2L9lt+Hxoc73PdKwJz2osm2FfPnWKfXlZ4/01fTDwgtj28vj7fmr495rqn8WVe2Nm3yQ8jn1u\nrxuSWcfMXgg8yt2n/EKzmb0YeLm7zzRiLY6ZvRt4qLu/NHcso5jZIsLNy725Y9mY4szBYsJXnFqN\nEuciC39s4Ffu/k+5YynZTLWxzszs8cDBhPqAjBl3/8zoT5XPzPYj3KUvNrMnEEoRnf4E5cbi7ofk\njmFjMbPnAf9OeDLzPYSn68c2iQJ4mz82ICP19peNzOxThC8wn+6hwC0yV20DXGJm9xNqh2e7+79l\njknWdSphavbnhAejXp03HJkrep/aFRERmcvm9N/aFRER6ZsSqYiISAdKpCIiIh0okYqIiHSgRCoi\nItKBEqmIiEgHSqQiIiIdKJGKiIh0oEQqIiLSgRKpiIhIB0qkIiIiHSiRioiIdKBEKiIi0oESqYiI\nSAdKpCIiIh0okYqIiHSgRCoiItKBEqmIiEgHSqQiIiIdKJGKiIh0oEQqIiLSgRKpiIhIB0qkIiIi\nHSiRioiIdKBEKiIi0oESqYiISAdKpCIiIh0okYqIiHSwIHcAsv7MbALA3Sdm8XLl7tUsimfK5dkU\ny0zLA7njUJx5lmV2M3fPHYPMQWY2oU5ARMaBpnYLM3xHPVuVkETNrM4dQxulHHPFKeNKiVR6oc4q\nqSp3AC1VuQNoqcodQBu6hsqhRFqYEkZ6UZU7gFEGNdwC1LkDaKnOHUBLde4AZG5RjVR6oRqpiIwL\njUgLU8p0TwlJVDXStBSnjCslUumFOqukqtwBtFTlDqClKncAbegaKocSaWFKGOlFVe4ARlGNNLk6\ndwAt1bkDkLlFNVLphWqkIjIuNCItTCnTPSUkUdVI01KcMq6USKUX6qySqnIH0FKVO4CWqtwBtKFr\nqBxKpIUpYaQXVbkDGEU10uTq3AG0VOcOQOYW1UilF6qRisi40Ii0MKVM95SQRFUjTUtxyrhSIpVe\nqLNKqsodQEtV7gBaqnIH0IauoXIokRamhJFeVOUOYBTVSJOrcwfQUp07AJlbVCOVXqhGKiLjQiPS\nwpQy3VNCElWNNC3FKeNKiXTMmNmeZrZ46LUzzex1ibcz0XH9VWa2yMyuMbOrzex1ZmaJwkvKzJb3\nvImqawPNGM3sWWZ2rZnt3rXdIVXXBsxstZmd3Vh+vZm9pWu7Q6ouK5vZ+83sLxvLXzOzTzSW32dm\nr+myjdjORNc2ZONQIi1MopHexpjPrzquv8LdD3H3RwNHA8cAZ3aOqiFhjbTv/VknaMMBzOwo4IPA\nM919SYJ2m+oEbfwOeL6Z7ZCgrenUHde/AngSQLy52wk4sPH+k4ArO25DCqJEKn2pUzXk7ncDrwRO\nS9VmSRLdPJmZHQ78I3Csu/8iQZuTJIrzQeATQNIZkqYEcV5JTKSEBHoNsNzMtjWzTYH9gUUdt1FE\neUQCJdLClDLdk7oTcPebgHlmtnOqNsesRroZ8EXgee7+8wTtrSNRnA58DHihmW2ToL11dI3T3e8A\nHjCz3Vg7+vw+8ETgccBid3+wa5xSDiXS8TPdNGTS6cmeEv6srJFuBFWCNh4gdPivSNDWdKoUjbj7\n/cD5wOkp2ptClaCNK4HDCIn0u8D3GstXJGi/mJtmUSItToKR3j3AcP1pB+Duju0Oq1I2ZmZ7Aw+6\n+12p2hyz75GuAk4AnmBmZyRobyp1wrY+BLwc2DJhmwN1gjYG07uPJkztfo8wIn0iqo+OHSXSMePu\nK4DbzewIgPhQxzOA7yTeVN1x/TWjzzidew7wkY5tFilVjdTdfwscC5xkZi9L0OYkqeKMbd0LfJ4e\nRtCJ4rwS+ENgqQf3AtuRMJGqRloOJdLCJJruOQV4s5ldDXwDmIg1yGQSdAKbD77+Anwd+Jq7v617\nZGulqJGa2XzCk6a9SVh7HCSoY4A3mtkfJmh3jZRxRn8P7MjsLDssJsT23aHX7nP3pQnal4IsyB2A\nbHzufi1wZJ/b6PqXjdx9k4Th9OnRwA09b6Pq2oC7L2z8fCuwT9c2p1B1bWAozl8BW3dtcwpV1wbc\nfTVhBNp87aVd223SXwcrh0akhSnowqpyBzBK1xqpmZ0KfAZ4Y5KAplf33H4qde4AWqpzByBzi/7W\nrvRCd9MiMi40Ii1MKY/El5BEx+x7pL1TnDKulEilF+qskqpyB9BSlTuAlqrcAbSha6gcSqSFKWGk\nF1W5AxhlzL5HujHUuQNoqc4dgMwtqpFKL1QjFZFxoRFpYUqZ7ikhiapGmpbilHGlRCq9UGeVVJU7\ngJaq3AG0VOUOoA1dQ+VQIi1MCSO9qModwCiqkSZX5w6gpTp3ADK3qEYqvVCNVETGhUakhSlluqeE\nJKoaaVqKU8aVEqn0Qp1VUlXuAFqqcgfQUpU7gDZ0DZVDibQwJYz0oip3AKOoRppcnTuAlurcAcjc\nohqp9EI1UhEZF0qkPRtMzwySSoLlOi5XKZdJf5de9RDnXu6+V8r2gE+5+0TczxVQd11ev93USrUB\nv9tcOebjHCdxOxNxOxMplyUdJVIphka5IjIbqUbao1IeFiglzhKSqJ4ETktxSgmUSAUKeDAI1Fkl\nVuUOoKUqdwAtVbkDaEPXUD+USHtUwggqqnMH0FKVO4BR9CRwcnXuAFqqcwcg+ahGKsVQjVREZiON\nSHtUyjRKKXGWkERVI01LcUoJlEgFCpgyBXVWiVW5A2ipyh1AS1XuANrQNdQPJdIelTCCiurcAbRU\n5Q5gFNVIk6tzB9BSnTsAyUc1UimGaqQiMhtpRNqjUqZRSomzhCSqGmlailNKoEQqUMCUKaizSqzK\nHUBLVe4AWqpyB9CGrqF+KJH2qIQRVFTnDqClKncAo6hGmlydO4CW6twBSD6qkUoxVCMVkdlII9Ie\nlTKNUkqcJSRR1UjTUpxSAiVSgQKmTEGdVWJV7gBaqnIH0FKVO4A2dA31Q4m0RyWMoKI6dwAtVbkD\nGEU10uTq3AG0VOcOQPJRjVSKoRqpiMxGGpH2qJRplFLiLCGJqkaaluKUEiiRzlJmtoOZXW1mi8zs\nDjO7tbG8IPHmqg1d0cwuM7Ojh1473cw+1jmqdbc10XH95UPLLzazj3QKqgdmtioe58HxfkMPm6m6\nNtCI80dm9j9mdmiCuIZVXRsws13N7Etmdp2ZXW9mHzazTRLE1lR1baCxPxeb2aVmtjBBXMPbmEjd\npiiR9qrLCMrdl7r7we5+CHAO8P7Bsrs/mCzIoO6w7meBE4dee0F8PbWq4/pT1TGS1jYS1UhXxOM8\nON7vTdDmsDpBG4M4DwL+Dnh3gjaH1QnauAS4xN33BR4JbAmcnaDdpjpBG4P9+RjgXuDPE7QpG4ES\naRmsz8Y7Tpl+AXjWYJRsZnsCD3f3K1LENqTuoc3ZqNfjDcmmyZtxbgssTdDmJF3jNLMjgd+4+wWx\nPQdeC5xiZlt2jzDooezwXWDXxG0WUR4pkRJpj0qZRukSp7vfC/wAOCa+9ALg8wnCmmpbEx2b2DJO\nnS0ys6uBtyYIa5JENdIthqZ2j0/Q5iSJzs1BnD8DPgG8PUGbkySI80DgquYL7r4cuAl4RMe210i0\nPy22NR84CvhygjZlI1AiFeg+ZXoxIYES/7+oY3tTStBZrYxTZ4e4+8HAmQnC6sPKoandf+lhG1WC\nNgZxHkC4kbowQZvDqh7ahPSj/ipBG1uY2SLgDuAhwH8laHOSUm7uS6NE2qOCplHqjutfChxlZgcD\nW7j71d1DmlLVU7vJjOv3SN39e8BOZrZTynbpHudPgcc1X4gP8TwU+L+ObTfVCdpYGZ+J2IOQ6E9L\n0KZsBEqk0jnhu/sKQkdyLj2NRqO64/q91x4TKa5Gamb7E/qTexK0u0aCc/ObhJHeybBm2vR9wEfc\n/XfdI1yznYkEzVhs67fA6cDrzSxpH13QzX1RlEh7VMo0SqI4LwIeS4+JNEEn0PtfH0lUI918qEZ6\nVoI2J0l0zDdv1JsvAk7xxH/hJVGcxwHHm9l1wN3AKndP+oRxojjX7Dt3/xHwY9Z9Il5modTfR5Qe\nuHvyh2KGVF0bcPdLgfndQ5le179s5O4Lh5bPB87vGldq7p76O45Tqbo2UFCctwHPBYjfdb3IzA6K\nySqVqmsDU5yfz+3a5jD9dbB+KJH2qKATts4dQEtV7gBGGdcaaY/qlI3FWu7vpWwzqntoUwqhv7Ur\nxdDdtIjMRqqR9mjMaqS9KyGJ6m/tpqU4pQRKpAIFTJmCOqvEqtwBtFTlDqClKncAbega6ocSaY9K\nGEFFde4AWqpyBzCKaqTJ1bkDaKnOHYDkoxqpFEM1UhGZjTQi7VEp0yilxFlCElWNNC3FKSVQIhUo\nYMoU1FklVuUOoKUqdwAtVbkDaEPXUD+USHtUwggqqnMH0FKVO4BRVCNNrs4dQEt17gAkH9VIpRiq\nkYrIbKQRaY9KmUYpJc4SkqhqpGkpTimBEqlAAVOmoM4qsSp3AC1VuQNoqcodQBu6hvqhRNqjEkZQ\nUZ07gJaq3AGMohppcnXuAFqqcwcg+ahGKsVQjVREZiMl0h4NplEGnX+q5R5UcTtV3E6dYHkvd98r\nYXvQz11/BdTuPhH3b9fllwC/SLwvIf3vXqWIS3H2G2djeSIuT6RYlrSUSKUXGj2KyLhQjbQwpTws\nUEIS1RO2aSlOGVdKpNILdVZJVbkDaKnKHUBLVe4A2tA1VA4l0sKUMNKLqtwBjKInbJOrcwfQUp07\nAJlbVCOVXqhGKiLjQiPSwpQy3VNCElWNNC3FKeNKiVR6oc4qqSp3AC1VuQNoqcodQBu6hsqhRFqY\nEkZ6UZU7gFFUI02uzh1AS3XuAGRuUY1UeqEaqYiMC41IC1PKdE8JSVQ10rQUp4wrJVLphTqrpKrc\nAbRU5Q6gpSp3AG3oGiqHEmlhShjpRVXuAEZRjTS5OncALdW5A5C5RTVS6YVqpCIyLjQiLUwp0z0l\nJFHVSNNSnDKulEilF+qskqpyB9BSlTuAlqrcAbSha6gcSqSFKWGkF1W5AxhFNdLk6twBtFTnDkDm\nFtVIpReqkYrIuNCItDClTPeUkERVI01Lccq4UiIdM2b2PDO72swWxX9Xm9kqM3tG4u1MdFx/eaJQ\nemVmq83sgsbyfDO7y8y+nHAzVZeVzWw3M7vRzLaLy9vH5T2SRLdWlaKReI6uNrN9U7Q3haprA2b2\nUDO7yMx+bmY/NLOvmNkjEsTW3MZEyvakP0qkhek60nP3L7n7we5+iLsfAnwcuNzd/zNJgGtVHdfv\nveaQqEa6Ani0mW0Wl48GliRot6nusrK730o4zu+JL70b+Ad3v6VjXMPqRO28APg2cGKi9obVCdr4\nInCZuz/S3R8PnAE8NEG7UiDVSMdYvOP/JnCou9+WuO1ONVIzW+buCxOG1Is4cv4QsMjdLzGz84Fr\ngMPd/Tl5o1vLzBYA/wOcB7wCOMjdV+WNal1mthVwLXAE8BV33z9zSOswsyOAMwt6WE16phFpYVJN\n98SO9TPAa1MnURirGqkDFwMnxlHpY4HvJ2h3jRTH3N0fBN4AfAA4vY8kmujcfC7wNXe/HrjbzA5O\n0OYkCeJ8NHBVglBkjlAiHV/vAK5x93/to/Fxqu+4+zXAXoSpyK8ClngTVaJ2ngXcDjwmUXvDqgRt\nnEi4MQH4HHBSgjaHVT20mdw4XUOlW5A7AFk/KUZ6ZlYBxwHJ7/Ybqh7bTiLx1NyXgbMJv/dOCduF\nBDU9MzttC6RhAAAJhklEQVQIOAo4FLjCzC529zu7tjuk7rKymW0PHEmoOTswnzDi/+vuoU1Sd1z/\nJ8AfJ4hD5giNSMdM7KzOBU5x95U9bqruuH7qUV1fBnGeC7zV3X+SegOJpsk/TpjSvRV4L/D3Cdqc\nJEGcxwMXuPvvufve7r4ncJOZPbl7dGsleGDvMmBTM3vF4DUze4yZHdY1tqHtTKRsT/qjRFqYBNM9\npwI7A+c0vv6yyMyO7x7dWgk6gd6fgktYI8Xdb3P3jyZobx0Jvkr0p8DNMQEAnAPsb2aHd41taDsT\nHZv4E8LTsE2XkPjp3URTpscBR5vZ9Wa2GDgL+GWCdqVAemq3MKX8xaAS4jSzuoQnLxVnWgXFOeuv\nIQk0Ii1MQRdWlTuAUUroTKM6dwAt1bkDaKnOHYDMLRqRSi90Ny0i40Ij0sKU8kh8CUlUf2s3LcUp\n40qJVHqhziqpKncALVW5A2ipyh1AG7qGyqFEWpgSRnpRlTuAUVQjTa7OHUBLde4AZG5RjVR6oRqp\niIwLjUgLU8p0TwlJVDXStBSnjCslUumFOqukqtwBtFTlDqClKncAbegaKocSaWFKGOlFVe4ARlGN\nNLk6dwAt1bkDkLlFNVLphWqkIjIuNCItTCnTPSUkUdVI01KcMq6USKUX6qySqnIH0FKVO4CWqtwB\ntKFrqBxKpIUpYaQXVbkDGEU10uTq3AG0VOcOQOYW1UilF6qRisi4UCLt2WB6ZpBUEizXcblKuUz6\nu/Sqhzj3cve9UrYHfMrdJ+J+roC66/L67aZWqg343ebKMR/nOInbmYjbmUi5LOkokUoxNMoVkdlI\nNdIelfKwQClxlpBE9SRwWopTSqBEKlDAg0GgziqxKncALVW5A2ipyh1AG7qG+qFE2qMSRlBRnTuA\nlqrcAYyiJ4GTq3MH0FKdOwDJRzVSKYZqpCIyG2lE2qNSplFKibOEJKoaaVqKU0qgRCpQwJQpqLNK\nrModQEtV7gBaqnIH0IauoX4okfaohBFUVOcOoKUqdwCjqEaaXJ07gJbq3AFIPqqRSjFUIxWR2Ugj\n0h6VMo1SSpwlJFHVSNNSnFICJVKBAqZMQZ1VYlXuAFqqcgfQUpU7gDZ0DfVDibRHJYygojp3AC1V\nuQMYRTXS5OrcAbRU5w5A8lGNVIqhGqmIzEYakfaolGmUUuIsIYmqRpqW4pQSKJEKFDBlCuqsEqty\nB9BSlTuAlqrcAbSha6gfSqQ9KmEEFdW5A2ipyh3AKKqRJlfnDqClOncAko9qpFIM1UhFZDbSiLRH\npUyjlBJnCUlUNdK0FKeUQIl0ljOzN5rZNWb2YzNbZGaP72EzVZeVzWxVjG2xmX3OzDZPFNfwdiYS\ntPEQM/uMmV1vZj80syvM7LkJwkvKzHY1sy+Z2XVm9nMz+4CZLUi4iaprA43jfnX8f48EcQ2rujZg\nZt82s2c2lo83s3/v2u6QqmsDZrY8QRyjtjHR9zbGkRJpj7qOoMzsUOBZwEHu/vvA04AlCUIbVndc\nf4W7H+LujwEeAF7VPaQpVQna+BJQu/sj3P3xwAuA3RK0CyStkV4CXOLu+wL7AtsAZyVqG9LU9AbH\n/eD4/y0J2hxWJ2jjVcD7zWxTM9saeCfw6gTtNtUJ2lCdrVCqkc5iZnYc8BJ3n3UjpiYzW+buC+PP\npwKPcffTethOpxqpmR0JvNndj0gXVXoxzrc0k7KZbQPcBOzm7r/NFVuTmS13921yx9GGmb0bWAls\nBSxz93dmDmkdzetIyqIRaY8STKN8HdjDzK41s4+Z2VMShLWOBHFabGcBcAywuGtMU0lQIz0QWJQg\nlGklqpEeCFzVfMHdlwM3A49I0H6qKb4tGlO7X0jQ3joSTkW+DTgJeCbw3kRtrqEp0/GmRDqLufsK\n4BDglcBdwMVmdkoPm6o6rr+FmS0CfkDo7D/ZOaIppO6szOyjZvYjM/t+ynZ7ZAnbqhK0sbIxtftH\nCdqbSpWiEXdfCXwOuNDdH0jR5pCqhzaTU8LvR8qHF2RIiqdMPcy9Xw5cbmaLgVOAC7q2O6TuuP5K\ndz8kRSAjVB3X/wmwpsN399PMbEfghx3bXSNRjfSnwB83XzCzhcDuwPUJ2odyvvdYJ2xrdfzXh7qn\ndqUAGpHOYma2r5k1p/IOIoz4kkqQ8FOOlGZSd1nZ3S8DNot13IGtOkXUA3f/JmGUfzKAmc0H3gec\nl6o+muirRL0f9xK+8gTan+NOibRHCaZRtgbOj19/+RFwANC1zXUkiHOjPLGWqBN4HlCZ2Q1m9j3g\nPOANCdoFkn6P9DjgBDO7DrgW+A3wxkRtp5ri6/24lzIVmbDmfIuZLYn/vyZBm7IRaGp3FnP3RcBh\nG2FTVZeVN9aThin+spG73wmcmCai/rj7bcBzetxE1bWBjXTcq1QNuftbU7U1haprA+7ee3+svw7W\nD41Ie1TQCVvnDqClKncAo+hv7SZX5w6gpTp3AJKPvkcqxdDdtIjMRhqR9mjM6ju9KyGJ6m/tpqU4\npQRKpAIFTJmCOqvEqtwBtFTlDqClKncAbega6ocSaY9KGEFFde4AWqpyBzCKaqTJ1bkDaKnOHYDk\noxqpFEM1UhGZjTQi7VEp0yilxFlCElWNNC3FKSVQIhUoYMoU1FklVuUOoKUqdwAtVbkDaEPXUD+U\nSHtUwggqqnMH0FKVO4BRVCNNrs4dQEt17gAkH9VIpRiqkYrIbKQRaY9KmUYpJc4SkqhqpGkpTimB\nEqlAAVOmoM4qsSp3AC1VuQNoqcodQBu6hvqhRNqjEkZQUZ07gJaq3AGMohppcnXuAFqqcwcg+ahG\nKsVQjVREZiMl0h4NplEGnf9sXR7IHcccibMC6lkWU6n7UnH2tCxpKZGKiIh0oBqpiIhIB0qkIiIi\nHSiRioiIdKBEKiIi0oESqYiISAdKpCIiIh0okYqIiHSgRCoiItKBEqmIiEgHSqQiIiIdKJGKiIh0\noEQqIiLSgRKpiIhIB0qkIiIiHSiRioiIdKBEKiIi0oESqYiISAdKpCIiIh0okYqIiHSgRCoiItKB\nEqmIiEgHSqQiIiIdKJGKiIh0oEQqIiLSgRKpiIhIB0qkIiIiHSiRioiIdKBEKiIi0oESqYiISAdK\npCIiIh0okYqIiHSgRCoiItKBEqmIiEgHSqQiIiIdKJGKiIh0oEQqIiLSgRKpiIhIB0qkIiIiHSiR\nioiIdKBEKiIi0oESqYiISAdKpCIiIh0okYqIiHSgRCoiItKBEqmIiEgHSqQiIiIdKJGKiIh08P8B\ntBY92c7W9wcAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2029,6 +2035,114 @@ " 'S P G O F Y L')))" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bonus Question: What about the Keybee Keyboard?\n", + "\n", + "In December 2017 the [Keybee keyboard](http://keybee.it/) was announced, claiming to cut the path length in half. The keyboard uses hexagonal keys:\n", + "\n", + "![Keybee keyboard](http://keybee.it/img/phones/theme_002.png)\n", + "\n", + "Let's see if we can replicate it. I'll give `keyboard` optional arguments to scale the (x, y) positions to get the proper hex grid layout (even though I will still draw each key with a square around it rather than a hexagon; I'll leave it to you to fix that if you want):" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def Keyboard(rows, xscale=1/2, yscale=1):\n", + " \"A keyboard is a {letter: location} map, e.g. {'Q':Point(0, 0), 'A': Point(0.5, 1)}.\"\n", + " return {ch: Point(xscale * x, yscale * y) \n", + " for (y, row) in enumerate(rows)\n", + " for (x, ch) in enumerate(row)\n", + " if ch != ' '}\n", + "\n", + "def HexKeyboard(rows): return Keyboard(rows, xscale=(3 ** 0.5)/2, yscale=1/2)\n", + "\n", + "keybee = HexKeyboard((\n", + " ' Q W C ',\n", + " 'J U I K',\n", + " ' F H N ',\n", + " 'Z O T G',\n", + " ' R . Y ',\n", + " 'B E S V',\n", + " ' P A M ',\n", + " \"X L D '\"))\n", + "\n", + "show_kbd(keybee, 'Keybee')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's not pretty, but the keys are in the right places. The path length of 1.9 is better than the 3.2 for the QWERTY layout, but not twice as good, and not as good as some of the layouts we were able to achieve with square keys, and the advantage may be due to the fact that the keys overlap by 13%, not because the layout is especially clever. Can we improve the layout?" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "show_kbd(improved(keybee, swaps=6000), 'Improved Keybee')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This does indeed cut the path length to\n", + "half of QWERTY, so maybe there is something to be said for hex grids. Here is Keybee with some word paths:" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "show_kbd(keybee, 'keybee', words=['FOUR', 'PLEASANT', 'THINGS'])" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2068,14 +2182,14 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 67, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nfLXp0dsei7D9fuTurxcx1seGEoO0xVnAVsCtqe6qL5nZsYUOZGZnAG8nF22AW4FxZvaZQsdKHA1M\nNLO5ZvYacDWwrEixfkmoGy92YuiT2U9JrMlenOfup+f5U2CLrGEFj+Xui9395iLF+NjR7zFIpLs+\nC1+xukac7hyrK1GJQUREIkoMIiISUWIQEZGIEoOIiESUGEREJKLEICIiESUGERGJKDGIiEhEX3CT\niJnpgJCPk2p3b4/fjehSlBhERCSiqiQREYkoMYiISESJQUREIkoMIiISUWIQEZGIEoOIiESUGERE\nJKLEICIiESUGERGJKDGIiEhEiUFERCJKDCIiElFiEBGRiBKDiIhElBhERCSixCAiIhElBhERiSgx\niIhIRIlBREQiSgwiIhJRYhARkYgSg4iIRJQYREQkosQgIiIRJQYREYkoMYiISESJQUREIkoMIiIS\nUWIQEZGIEoOIiESUGEREJKLEICIiESUGERGJKDGIiEhEiUFERCJKDCIiElFiEBGRiBKDiIhElBhE\nRCSixCAiIhElBhERiSgxiIhIRIlBREQiSgwiIhJRYhARkYgSg4iIRJQYREQkosQgIiIRJQYREYko\nMYiISESJQUREIkoMIiISUWIQEZGIEoOIiESUGEREJKLEICIiESUGERGJKDGIiEhEiUFERCJKDCIi\nElFiEBGRiBKDiIhElBhERCSixCAiIhElBhERiSgxiIhIRIlBREQiSgwiIhJRYhARkYgSg4iIRJQY\nREQkosQgIiIRJQYREYkoMYiISESJQUREIkoMIiISUWIQEZGIEoOIiESUGEREJKLEICIiESUGERGJ\nKDGIiEhEiUFERCJKDCIiElFiEBGRiBKDiIhElBhERCSixCAiIhElBhERiSgxiIhIRIlBREQi/x8t\nGVDmodqb0gAAAABJRU5ErkJggg==\n", + "image/png": "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\nUdvVC1Aqld6mp3jS0ymRSkmY2eT4BaTUw5lx5YxfxnWrVbweHU8qnB7tioiIpKAaqYiISApKpCIi\nIikokYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiI\npKBEKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKS\nghKpiIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgK\nSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIiko\nkYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBE\nKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKp\niIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgKSqQi\nIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIikokYqI\niKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBEKiIi\nkoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgK/w+5SVg7zmNpRQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, From 94baa700a6adccacd4693f3b4ece8f03ddc9b991 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Sun, 31 Dec 2017 20:19:48 -0800 Subject: [PATCH 52/55] Added Keybee keyboard to `Gesture Typing.ipynb` --- ipynb/Gesture Typing.ipynb | 233 ++++++++++++++++++++++++------------- 1 file changed, 154 insertions(+), 79 deletions(-) diff --git a/ipynb/Gesture Typing.ipynb b/ipynb/Gesture Typing.ipynb index a4b8f75..9334a3b 100644 --- a/ipynb/Gesture Typing.ipynb +++ b/ipynb/Gesture Typing.ipynb @@ -639,7 +639,7 @@ { "data": { "text/plain": [ - "3.233309780212764" + "3.2333097802127653" ] }, "execution_count": 21, @@ -710,7 +710,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -793,9 +793,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\npP/xw6jyANaSdI+ke4t/3z/ivIG4x/58/lsxVon/VozZ5PCI3arqjHsHRmVCetDOmyF5k8CFfUL5\nb8UMVcd5E51nfVzYrZLMWyNd501uXubnZiPusVsl7rGbTQ6P2K2qzrh3YFRy7wk7b/ZxYZ9Q7rEP\nVcd5E51nfVzYrZLMWyNd501uXubnZiPusVsl7rGbTQ6P2K2qzrh3YFRy7wk7b/ZxYZ9QkhaWT+hR\nT/fmtZnf4mvrOG+i86yPWzFmZpnxiN3MLDMu7GZmmXFhNzPLjAu7mVlmXNjNzDLjwm5mlhkXdjOz\nzLiwm5llxoXdzCwzLuxmZplxYTczy4wLu5lZZlzYzcwy48JuZpYZF3Yzs8y4sJuZZcaF3cwsMy7s\nZmaZcWE3M8uMC7uZWWZc2M3MMuPCbmaWGRd2M7PMuLCbmWXGhd3MLDMu7GZmmXFhNzPLjAu7mVlm\nXNjNzDLjwm5mlhkXdjOzzLiwm5llxoXdzCwzLuxmZplxYTczy4wLu5lZZlzYzcwy48JuZpYZF3Yz\ns8y4sJuZZcaF3cwsMy7sZmaZcWE3M8uMC7uZWWZc2M3MMuPCbmaWGRd2M7PMuLCbmWXGhd3MLDMu\n7GZmmXFhNzPLjAu7mVlmXNjNzDLjwm5mlhkXdjOzzLiwm5llxoXdzCwzLuxmZplxYTczy4wLu5lZ\nZlzYzcwy48JuZpYZF3Yzs8y4sJuZZcaF3cwsMy7sZmaZcWE3M8uMC7uZWWZc2M3MMuPCbmaWGRd2\nM7PMuLCbmWXGhd3MLDMu7GZmmXFhNzPLjAu7mVlmXNjNzDLjwm5mlhkXdjOzzLiwm5llxoXdzCwz\nLuxmZplxYTczy4wLu5lZZlzYzcwy48JuZpYZF3Yzs8y4sJuZZcaF3cwsM/8f+GrD+g+dnKEAAAAA\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -857,9 +857,9 @@ "outputs": [ { "data": { - "image/png": "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\nAJ0QMAAAnXwAPHsCD9Iu2zcAAAAASUVORK5CYII=\n", + "image/png": "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\ngg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -943,9 +943,9 @@ "outputs": [ { "data": { - "image/png": "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\n3f8GOAh4QM9x20LP9a+g9X6mtthbOA1VikG89q14rP8v4Fkpxm2oEoyxBngO8Bgze12C8WZS9R3A\nzAJwOPCtXUrkAAADYUlEQVSKvmMtRkUX877c/TxgCzM7GsDMlgHvAj7o7n9MuJ2pnuufD2xmZi9t\nPHyfXqFmVvVZOea8l5lNz9DMbG8ze1zfYImlvvLaQIov581st9adQPtQf5+TTKKbCMzd/wA8DXie\nmb0wwZjr6ZvTzO4LnA4cM8nvwnLe3lt0MU90SXM4cISZXQncDKxx97clGHdaopzPBIKZ/czMLqb+\nsumEBONOS3QgHg4cHG+hvAw4BfhVgnGBZD3ziX/rn2ifbwl8PN6a+CNgDyDFuNMS5XQAd78NOAR4\ng5kdlmDcaQlyvpT6Sva0xq2JK83siP7pFoei72ZJ/ReL8VawM4HD3f1HCcetSmgPlPAXoAW9l8qZ\nUEE5s51Dy3NsNJXUb5q7Xww8NOWYUTWBMSch5A4wTgkndFTlDtBRlTtAR1XuAItd0TNzSauEmbmI\nzEw98wVQSs4SCvkSu8984pRzOIou5gUJuQN0oRMmqZA7QEchd4COQu4AXeg+83kqYSYZVbkDdBRy\nBxhHPfPkqtwBOqpyB1js1DOXaeqZi5Sr6Jl5KW2BUnKWUMjVM09LOYej6GJekJA7QBc6YZIKuQN0\nFHIH6CjkDtCFeubzVMJMMqpyB+go5A4wjnrmyVW5A3RU5Q6w2KlnLtPUMxcpV9Ez81LaAqXkLKGQ\nq2eelnIOR9HFvCAhd4AudMIkFXIH6CjkDtBRyB2gC/XM56mEmWRU5Q7QUcgdYBz1zJOrcgfoqMod\nYLFTz1ymqWcuUq6ii/nokmZUgBbr8kjuHAPJGYBqkWUq9b1Uzgkt51B0MRcRkVrRPXMREampmIuI\nDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyA\nirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5\niMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjI\nAKiYi4gMgIq5iMgAqJiLiAyAirmIyAComIuIDICKuYjIAKiYi4gMgIq5iMgAqJiLiAyAirmIyACo\nmIuIDICKuYjIAKiYi4gMgIq5iMgA/H8qeE1xw+Q5QgAAAABJRU5ErkJggg==\n", + "image/png": "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\nXMzNzFrg/wMexNo/VCenYwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -953,9 +953,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -963,9 +963,39 @@ }, { "data": { - "image/png": "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\nrDwu5h3WoL/5L8D+Q7ftl25vpGHP/A3AxyU9QNIDgQ8Db2qaqaHbI2KniNgBeA9wVFsDT3r8IuIP\nwGeBj6SbjgI+FxHX5spk889/achm8w3gQ5JWj4i7JW0BPDwizs0ZKiIulfRt4F3AusCXIuLqnJkA\n1b7eAFjU4ti9But+AvilpEOAp5H/Rc/mmYt5h016mR4Rt0j6BbAH8B2qWflpLWXqNRzig8AFwJ3A\nkxoHam5tSRcAawP/A9i1xbH7k66YXoQPB84EnhMRS9sI5J55udxmsVFOoSripP9PzpjlHhGxBDgV\n+HJE3JU7D7AktVm2oXrx+3JbA7dQOPcErge2b57GSudi3mEN+5vfAnaTtCOwdkRc2FKmfgvDLEv/\nihIRPwM2lrRxG+M1OX6SdgB2A3YGDpX0sNyZbH65mNusIuJ2qsv8EyhkVl6oe3rmkramek79qaWx\new3W/SxwSHoz9KPAMa0ksmK5mHdYC5fpJwOPp8Vi3sHPma+VPpp4IdV+OjAioqWx+5OsJOlg4JqI\nODvddBywtaRdmgZyz7xcau+8M5tOkmZcpGzaeWbeYSX2N/27WcZX6PGbyZ3BZudiblauXu4ANj1c\nzDusxNZBB3vm86mfO8CwEs8pq7iYmxXKhdPmwsW8w0rsb7pnPr5Cj99M7gw2Oxdzs3L1cgew6eFi\n3mElXqa7Zz4n/dwBhpV4TlnFxdysUC6cNhcu5h1WYn/TPfPxFXr8ZnJnsNm5mJuVq5c7gE0PF/MO\nK/Ey3T3zOennDjCsxHPKKi7mZoVy4bS58C/a6rBBf3NQFApZ7gF9Z1r18kDuHKOWrSwu5mZmHeA2\ni5lZB7iYm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkHuJibmXWAi7mZ\nWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkH\nuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iY\nm5l1gIu5mVkHuJibmXWAi7mZWQe4mJuZdYCLuZlZB7iYm5l1wP8Hw4HYs28rccsAAAAASUVORK5C\nYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nh1UD9v0/wBETtx3e3p5Mgp752cCfAkgSsDNw7879fwqcM3AOGPicR8TPgLcDr2tvOgF4R0RcMjDX\npDrBGM8G3iTpDyRtB7wG+G8Jxu2qh+wcER/rnN/70xzbL0TEvyZJNwPcM6dZ5QLXRcSbcmdZjKQ9\ngE9GxH06tyXPPKRnLul2wPeAXSPi5jbzWfP/g+hZIenOwFciYndJewMvAv4L8BTgRuAK4I5TeEPf\nbO0V4teBU4BjgH0jYn3eVIuTdAJwA7AtcG1EvCZzpCVJ2gv4PPDAiLgsd55Uil6Zl9JHKyXnwCud\nq4GvAge3Nx0OfDBBrA0M7ZlHxOXATZJ25fer8K8ADwLuB5yfopCneM7bHMcD/wQcO41CnvC1+Srg\nqcBBwD8mGnNBqpztG+T7gReMqZBD4cW8INXA/Ze6fEp6WZXghDmdpojT/ve0geNNyznAg2mK+X8A\nX+5sn51ojirROI8Bfg7sk2i8SVWKQSLiBuADwHsj4qYUY06oEo3zauCCiPhQovE24J75CpXw7YtW\nPXD/q4CdJm7bCbhy4LiTqoH7fxw4UNJ+wDYRcd7wSBtK9D3zc2gK997ABTTF/EHtT4p+OSToRUva\nFzgQeCBwnKQ7DR1zEXXCsW5pf6ahHjqApAp4AvDcoWPNoqKLeSmGvulExPXAzyU9Appv4gCPBr40\nPN0G6iE7tzlr4GRmd1UOTcE+BFgXjauBHUlYzBMtNN5O0175GU3r4o0JxtxAKQuioTnbz3ROBo5s\nryKmIufxLLqYl9KLTpTzSOBlks4D/h2Yi4iLE4y7INEL8TTgPkypmCf6nvn5wO1pWizd266JiHUJ\nxh/8nEt6BvDTiDijvekk4F6SHjo028Q8cynHm5YEOZ8F3AE4qfPVxHMlHTY83Wwo+tsspfzGoqS6\nhF9DL+F4FnQsnTOhgnJmO4eKXpnPeuHpqHMH6KnKHWA5JZzQrTp3gJ7q3AF6qnMHmHVFr8wtrRJW\n5ma2uKJX5muo37cqSijk/rdZ0nLO8Si6mBekyh2gD58wSVW5A/RU5Q7QU5U7QB/+nvkKlbCSbNW5\nA/RU5Q6wHPfMk6tzB+ipzh1g1rlnbgvcMzcrV9Er81LaAqXkLKGQu2eelnOOR9HFvCBV7gB9+IRJ\nqsodoKcqd4CeqtwB+nDPfIVKWEm26twBeqpyB1iOe+bJ1bkD9FTnDjDr3DO3Be6Zm5Wr6JV5KW2B\nUnKWUMjdM0/LOcej6GJekCp3gD58wiRV5Q7QU5U7QE9V7gB9uGe+QiWsJFt17gA9VbkDLMc98+Tq\n3AF6qnO3deNfAAABOUlEQVQHmHXumdsC98zNylV0MZ+/pJkvQLO6PS93jpHkrIB6xjKVeiydc0rb\nORRdzM3MrFF0z9zMzBou5mZmI+BibmY2Ai7mZmYj4GJuZjYCLuZmZiPgYm5mNgIu5mZmI+BibmY2\nAi7mZmYj4GJuZjYCLuZmZiPgYm5mNgIu5mZmI+BibmY2Ai7mZmYj4GJuZjYCLuZmZiPgYm5mNgIu\n5mZmI+BibmY2Ai7mZmYj4GJuZjYCLuZmZiPgYm5mNgIu5mZmI+BibmY2Ai7mZmYj4GJuZjYCLuZm\nZiPgYm5mNgIu5mZmI+BibmY2Ai7mZmYj4GJuZjYCLuZmZiPgYm5mNgIu5mZmI+BibmY2Ai7mZmYj\n4GJuZjYCLuZmZiPgYm5mNgIu5mZmI+BibmY2Ai7mZmYj4GJuZjYC/x/ixv8KNoy8GQAAAABJRU5E\nrkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXMAAAEKCAYAAADgl7WbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcJVV99/HPjxlkX8SFl7KqSCCAAg/64H7AoIIE5VEU\nDA9xYdFoHANKjEZpjeK+L5iYQEQNixFRo1EjUC7wqNFBAhgEFGFYXNgHBn1g5pc/6tye6jvdfWu6\nzu3Tp/r7fr36Rde9t059+1bV75763XsHc3dERKRsG+QOICIi3amYi4j0gIq5iEgPqJiLiPSAirmI\nSA+omIuI9EAvirmZXWFmT8+dIyUz28nM1phZkn1kZteZ2YEpxhqXPu7HkpnZM8xsxXo8/iIze/k4\nM82y7TVm9ugc214oelHM3X1Pd/9u7hxjMPJLAGb2WDO7z8zOnI9AcZtXmNndjZ/7zezLXcedr/1o\nZsvM7Jdmdo+ZXWlmu8zy2PeY2a1m9jsze/cct3ehmf3WzO40s0vN7LARj++8zTnmnK4gLrgvoszw\nojHnnGa2h5l9Iz7fq1s8/kAz+4mZ3WVm15rZcXPddkq9KObzxcyW5M4wjY8DP5rPDcaiu+XgB1gB\nnDufGebKzI4FXgYc7O6bA4cCt87w2BOAw4C9gMcBf2pmxzfu39DM9phmvX2GbloGbOfuWwMnAJ8z\ns23nss0xW3CFez1Yh3XvB84BRl5VmNlS4DzgNHffCjgS+KCZ7dVh+2m4e/E/wHXAgfH3U6gLy2eB\nu4HLgMcCbwR+A1wPHNRY9yLgVOCHwF3Al4Ct4307AWuod/L1QBVvPwy4ArgduBDYLd5+MvCFoWwf\nAT4cf98S+EfgZuoC+HeAxfs2AN4P/A64FvgLYDWwwSx/95HA2cBbgTNbPEdvBK4EbgNOBx4U77sc\neG7jsUtjjse3eO6fEZ+3TVruq4cAXwXuiDm+M8N+vCPuv7uBe+J+2DHedyhwaXzM94G9Wm7bgBuA\nA1o+/mLg2Mbyy4BLGsv7x2Nq78ZtL4r792EzjPlEYBWw3xy3+VXg5BnWHRyvxwE3xZ+TGvc/Abgk\nPm83AR8Dlsb7vhPXvSc+50fEfbsCODH+nTcBL53l+boIeHlj+eXAz+J+/vfB/ov3raF+Ybua+jz6\neOO+DYAPxGPwF8Cr4+M3AN4BPBCfw7uBj44abz3qyGOA1SMe83Dq83Ljxm0/Al68vttL/ZN148n+\niHWL+SrgT+LO/wzwS+BvgCXAscAvhw7AFcDuwCbAvwKfHTo5/jnetxH1C8M9wIFxvDcA11AXwB3j\nfZs1DsqbgSfE5S8BnwQ2Bh4K/AA4Lt73ynjgPxLYmvpFYsZiTv3C8PP4+FNoV8z/qzH+94G3x/ve\nAJzdeOzzgMtaPvf/BJw+dNtlwJEzPP7U+BxsEJ+/p0y3H4fWeWfcT0uAfagLy37Uxfn/xvU2jI/9\nxEwnMrBD3J+vpS7qvwAmZvnb7hzsu7i8L3DX0GMGxXt34E+BXwOPm2asrwL3xe1/rcs2Z1l3cLx+\nPh5jewK/Ze25sS/1i4nFY/VK4LWN9dcAj2osP4N61npKfO4PBu4Ftpph+5PFPB5DVwO7xn39JuDi\noW19Bdgi7pffAs9qnAtXAI8AtgL+g8a5wNCLRovxdqAu8NuPeP5GFvP4uM9RT7Y2AJ4U9/l261Oz\nxvGTdePJ/oh1i/k3G/cdSv0KPpgBbx53/JaNA+PUxuN3B/4QD/id4kG0U+P+v2Vq4TPgRuDpcfm7\nwNHx94OAa+Lv2wK/BzZqrHskcEH8/QLg+MZ9BzF7Mf8w8PrG39ymmB/XWD64ke0R1LPrzePyFwZj\njxhzk7je09ZjX72N+kXtMbPtx8ZtL6Z+Md4mLn8SeNvQY65qkyGeeGuoC+sWcf/+HHjFDI9/ANi1\nsbzLdCc78OfxhP4t8MRZtr8EeDbwulke02qbM6w7KOaPbdz2HuDTMzx+GfDFxvIa4NGN5WdQF+8N\nGrf9Zqa/kanF/OvAyxr3bRDH2qGxrSc17j+HeMURz4XmsfpM2hXzacdbj2OzbTE/NO7v+4H/P9Px\nM98/fe2Z/6bx+33ArR73QlyGuqgPNN+xvx7YkHrmPHBj4/dHxscAEMddAWwXbzoLOCr+fhTwL/H3\nHeO4t5jZ7WZ2B/Ap4GGNcYdzTMvM9qa+8vjwDPd/3cxWxjcnj2rc1fw7ro/bxN1vob68f4GZbUVd\n6D8XxzqtMdYbhzb1AuA2d//eTFmn8V7qGfG34ptHfz3L37kPdSvg+e5+e7x5J+Ck+BwOnsftB3/L\nCIN9/x53X+nu1wN/Dxwyw+Pvob4CGtgq3jbsOuqrtlXUJ/m03H21u38TeLaZHdpxmzNuhhn2c3yz\n/KtmdouZ3Ul9xfPQacZous3d1zSWVzH13JnJTsBHBvuJutXirD1PYOp52hx3+Fxo+4mamcZLxsz+\niPqF4mh33xDYA/hrMzs49bbW19LcARaIHRq/70T9ansrdQGGqW8M3Ux9+Tq8/k3x9y8A7zez7YDD\nqfuqUB+Qvwce0nhhabplmhwzeUa8/wYzM+qDdomZ/bG77+fuMxWn4fFvbiyfSd2C2pC6R/trAHd/\nFfCqGcY7Jq7XmrvfC7weeL2Z/TFwkZn9yN0vaj7OzB5OPYN/lbv/V+OuFcA73f1d67Pd6OfU+3ZK\npFkefyXweODHcXnveFsz5/+mbs29gPq4uMDMnh5fIGeylHoWOKdtjmDU+/nquLwja/fzacBy6v7u\nKjNbFnOPwwrgHe5+1hzWvYX6BXpgx6H7Z9tn47YncJW7fxvA3a8xs69RT4D+PWOu3s7M19fRZrab\nmW1K3Qb4QqPgDr9Lfi7wXDM7wMyWmtnrqYv0JQDufiv1m0lnUPfmfx5v/zXwLeBDZraF1R7d+Fz1\nucBrzWw7M3swMOOMlXo2+RjqE/3x1DP8fwOeNeLvfHUcfxvqHubZjfvOp+6pvpYWBdrMtgcOoH5P\nojUze66ZDQrZSuq2wuqhxyxh7XsXXxwa4tPAK83sifGxm5nZIWa22ahtu/t91H/zyWa2efwbjqdu\nu0znTOBEM3tkfHE+kXq/DnLuAXyZ+k3BC939o9TvIXw77kPM7I/M7DlmtnE8Xo4GnkZ9jMxlmxeZ\n2VtH/KlvMbNNYr6XsXY/bwHcHQv5bqz7Iv1rINVntT8FvCm+YGNmW5nZC1uuey6wLD4HW1N/sKDp\nNwlzEvNtRH11ZWa2kZk9aIaHXgrsYmYHxPUeQ912uSxlnjnJ3edJ8UPdU232zM9s3PdMpr7huYS6\neDzS1/bf3kn9aZY7qYvaoD876JlvMLS951HPlu6I6+8+dP/Rcb0Th27fgrrnuyKu+xPgRY1cH6C+\nIvgF9Yk266dZGuO26Zn/kvoF4krqN4NOp/GOfHzMp6kL7KYttvlG4qd7prnvCuCoGe57HXVbYiX1\nm5BvGt6Pjed9JfX7HYP/bh8f9yzqTxDcTn1FdA5r33Q+DfjkLLm3oG6F3U3dgnhz476nUhe75uPf\nTd0iuBV419B9WwPPnmYbR7C2v7sb9Rvdd8W8PwQO67DNa5nmTeLG8bqG+grrJuoZefPTLE8D/jv+\n7d8BJoDvNu4/Pq5zO/BC6ivAG2Y616bZ/oVM/TTLn1G/6X5nfK7/sXHfaqb2509n7Rvyw+fCMuAP\njcfuT32VdRtrPyk2PN4ZjfF2aB4/szxvq+PPGqbWjK8Db2wsv5D6E2B3UR/Dp0437nz/DN4UXLTM\n7CLqGeDpubPkZmZvoX7z7JjcWWRdcaZ+jrs/dYb7d6Iuthv61D530czsOdSf635U7iwLmdosAkBs\nvbyCuoUjC5C73zRTIW/o8uWZBSG2pA42syXxBewU6i/qyCxUzMv+1lsS8VuRN1B//vni3Hmkkz4c\nz0b93tXt1K3IK6kLusxi0bdZRET6QDNzEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVz\nEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVzEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGR\nHlAxFxHpARVzEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVzEZEeUDEXEekBFXMRkR5Q\nMRcR6YGluQMsRGY2AeDuEwt5eSB3jhHLwd3DAsoz7fJCyjLb8kDuHH3JOVjuA3P33Bmkx8xsok8n\njMhCpTbLkOGZxUJVSs4SCrmZVbkztFHKPi8lZ9+omJcr5A7Qhk7spELuAC2F3AHa6NuxqWI+pISZ\nZFTlDtBSyB1glEFPvwBV7gAtVbkDLEbqmctYqWcuMj80Mx9SyqVXKTlLKOTqmadVSs6+UTEvV8gd\noA2d2EmF3AFaCrkDtNG3Y1PFfEgJM8moyh2gpZA7wCjqmSdX5Q6wGKlnLmOlnrnI/NDMfEgpl16l\n5CyhkKtnnlYpOftGxbxcIXeANnRiJxVyB2gp5A7QRt+OTRXzISXMJKMqd4CWQu4Ao6hnnlyVO8Bi\npJ65jJV65iLzQzPzIaVcepWSs4RCrp55WqXk7BsV83KF3AHa0ImdVMgdoKWQO0AbfTs2VcyHlDCT\njKrcAVoKuQOMop55clXuAIuReuYyVuqZi8wPzcyHlHLpVUrOEgq5euZplZKzb1TMEzOzD5rZaxvL\n3zCzf2gsv9/MXpdgU6HLyma2cmj5z83sY50STb+diQ7rbmNml5rZcjO7xcxubCwvuP/loZk938zW\nmNmuY9pE6DqAma2Oz98V8bk80cwsQbam0GVlM7vQzA4aum2ZmX2iU6p1tzORcrzcVMyHJJhJXgw8\nGSCeJA8F9mjc/2Tgko7bgO59yen6a+PouYW5rujut7v7Pu6+L3Aa8MHBsrs/kCpgwp75kcD3gKMS\njTesSjDGvfH52xM4CDgYOCXBuE1Vx/X/hXWfwyPj7TIDFfP0LiEWc+oifgWw0sy2MrMHAbsBy7tu\npIT2RVQlGif17DEpM9sMeArwCsZUzFPvc3e/FTgeeE3icSc6DvFF4JDB1ZeZ7QQ8wt0v7pqtqaBz\nqBUV8yFdL73c/RbgfjPbnrWz8B8CTwL2Ay5PMatMcIm4abzcXm5mlwJv65ppOiWcMIl65s8DvuHu\n1wK3mtk+CcacYhxtAXe/DtjAzB6WaswE59AdwI+orxqgnpWf2zFW76mYj8cl1LO0JwP/D/hBYznV\n7CJ0XH9VvNze1933If2lNtC/vuQsjgLOjr+fA7xkDNsIYxgT0l/1hARjnE1dxIn/PSvBmFP07dhc\ncG8i5ZZoJjlotexJ3Wa5ETgJuAs4I8H4UM5neUPuAKN07Zmb2YOBA4E9zcyBJdTvP7yhe7opqsTj\nYWaPBh5w998lHLZKMMaXgQ/GK5xN3P3SBGP2mmbm43EJcChwu9fuALambrWkePMzxYvOfPWgq3na\nTk5HAGe6+6Pc/dHuvhNwnZk9NeVGEk00Jvd7bK2cBiT9FFOKnO5+L/WxczpjmJXHbUyMY9xcVMyH\nJLr0uhx4CHWLpXnbne5+e4LxU+Scl2+LlXDCJOiZvxj40tBt55H4jdBEx+bGg48mAt+i7vO/PcG4\nkxK2L84CHseYinnf6BugQ0r5xqKZVSV8Db2E57Og51I5Eyrh2FwfmpkPKWjnVrkDtBRyBxilhMIT\nVbkDtFTlDrAYaWYuY9W32Y/IQqWZ+ZBSPq5USs4SCrn+bZa0SsnZNyrm5Qq5A7ShEzupkDtASyF3\ngDb6dmyqmA8pYSYZVbkDtBRyBxhFPfPkqtwBFiP1zGWs1DMXmR+amQ8p5dKrlJwlFHL1zNMqJWff\nqJiXK+QO0IZO7KRC7gAthdwB2ujbsaliPqSEmWRU5Q7QUsgdYBT1zJOrcgdYjNQzl7FSz1xkfmhm\nPqSUS69ScpZQyNUzT6uUnH2jYl6ukDtAGzqxkwq5A7QUcgdoo2/Hpor5kBJmklGVO0BLIXeAUdQz\nT67KHWAxUs9cxko9c5H5UXwxH1wqDQpGguUqLoeUy6SfrYQx5NzZ3XdOOB6MZ5YWgMrdJ+L+67r8\nUuBXi3SfL+acxO1MxO1MpFyeb8UXc0lHs2iRchXdMy/lDYxScpZQyPXJk7SUsz+KLuYFCbkDtKET\nJqmQO0BLIXeAlkLuAG3kPIeKLuYlzCSjKneAlkLuAKPokyfJVbkDtFTlDrDQqWcuk9QzFylX0TPz\nUtoCpeQsoZCrZ56WcvZH0cW8ICF3gDZ0wiQVcgdoKeQO0FLIHaAN9cznqISZZFTlDtBSyB1gFPXM\nk6tyB2ipyh1goVPPXCapZy5SrqJn5qW0BUrJWUIhV888LeXsj6KLeUFC7gBt6IRJKuQO0FLIHaCl\nkDtAG+qZz1EJM8moyh2gpZA7wCjqmSdX5Q7QUpU7wEKnnrlMUs9cpFxFz8xLaQuUkrOEQq6eeVrK\n2R9FF/OChNwB2tAJk1TIHaClkDtASyF3gDbUM5+jEmaSUZU7QEshd4BR1DNPrsodoKUqd4CFTj1z\nmaSeuUi5ip6Zl9IWKCVnCYVcPfO0lLM/ii7mXZnZ883sUjNbHn8uNbPVZvbsxJsKXQcws23N7Cwz\nu8bM/tPM/s3MdkmQrbmNiY7rr0wUZazMbI2Zva+xfJKZvTXxZkLXAeKxuLxxjJ6cINew0HWA+Hye\n2VheYma/M7OvdB27IXRZ2cy2N7NfmtnWcfnBcXnHJOnWbmci5XjrY2muDafQdSbp7ucD5w+Wzew4\n4CXu/s2O0YZVCcb4EnCGux8FYGZ7AdsC1yYYeyB0XH/sPbtEPfM/AP/HzN7l7rcnGG86VYIx7nX3\nfROMM5sqwRj3Anua2Ubu/gfgIGBFgnGbqi4ru/uNZvZJ4D3ACcC7gU+5+w0Jsi0I6plHZrYrcAGw\nv7vflDtPk5kdAJwy7jf/uvbMzexud98yYaSxiFcQ7wC2cPe/NbOTgM3c/e2Zo01hZivdfYvcOUaJ\nz+dHgOXufp6ZfQa4Aniaux+WN91aZrYU+DFwBnAssLe7r86bKp2i2yypLmniTv488FfjKOQJcu4J\n/CRBlFktop65A58A/szMxlIsEx2bmwy1WY5IMOYUiXI6cDZwlJltBDwO+GGCcSelyOnuDwAnAx8C\nlvWpkEPhxTyhdwBXuPu/jmn8MKZxk1pMbzK5+z3AZ4BlY9pESDDGKnff1933if/9QoIxh4UUg7j7\nFcDOwFHA1wBLMW5DSDTOIcDNwF6JxptCnzOfoxQzSTMLwOHAq7uONYuq4/pXAvslyDFKmIdtdJK4\n1fQR4BXApgnHHKjGMOY4VAnH+grwPuCshGMOVF0HMLO9gWcC+wMnmtm2XcdcSIou5l2Z2YOB04Fj\n3H3VuLaT4I3aC4EHmdmxg9vMbC8ze0rXbEOqjuunno2NiwG4+x3AudT906QStazG/nwmznk68DZ3\nvzLBmFMkyvlJ6vbKjcB7gQ8kGHOKnK3Koot5gkuaE4CHAaeNszeZ6NLrcOAgM7vWzC4HTgV+nWDc\nSQkOxLG/m56wZz7wAeAhJM6eaJ9vPHRcnppgzCkS9sxx95vc/eMJxltHgo/NHgdcHydGAKcBu5nZ\n07pmWyiK/jRLKd9YNLOqhK+hl/B8FvRcKmdCBeXMdg4VPTNf6IWnocodoKWQO8AoJZzQUZU7QEtV\n7gAtVbkDLHRFz8wlrRJm5iIyvaJn5qV8lK6UnCUUcv3bLGkpZ38UXcwLEnIHaEMnTFIhd4CWQu4A\nLYXcAdrQ58znqISZZFTlDtBSyB1gFPXMk6tyB2ipyh1goVPPXCapZy5SrqJn5qW0BUrJWUIhV888\nLeXsj6KLeUFC7gBt6IRJKuQO0FLIHaClkDtAG+qZz1EJM8moyh2gpZA7wCjqmSdX5Q7QUpU7wEKn\nnrlMUs9cpFxFz8xLaQuUkrOEQq6eeVrK2R9FF/OChNwB2tAJk1TIHaClkDtASyF3gDbUM5+jEmaS\nUZU7QEshd4BR1DNPrsodoKUqd4CFTj1zmaSeuUi5ii7mg0uaQQFKtTwGIW4nxO1UKZZJP1sZR86d\n3X3nlOMB/+zuE3F/BaDqurx+T1MrYQ5/W1/2eTE5G8sTcXkixXIORRdzWfg02xeZH0X3zMehlDcB\nS8lZQiHXJ2TSKiVn36iYlyvkDtCGTuykQu4ALYXcAdro27GpYj6khJlkVOUO0FLIHWAUfUImuSp3\ngMVIPXMZK/XMReaHZuZDSrn0KiVnCYVcPfO0SsnZNyrm5Qq5A7ShEzupkDtASyF3gDb6dmyqmA8p\nYSYZVbkDtBRyBxhFPfPkqtwBFiP1zGWs1DMXmR+amQ8p5dKrlJwlFHL1zNMqJWffqJiXK+QO0IZO\n7KRC7gAthdwB2ujbsaliPqSEmWRU5Q7QUsgdYBT1zJOrcgdYjNQzl7FSz1xkfmhmPqSUS69ScpZQ\nyNUzT6uUnH2jYl6ukDtAGzqxkwq5A7QUcgdoo2/Hpor5kBJmklGVO0BLIXeAUdQzT67KHWAxUs9c\nxko9c5H5oZn5kFIuvUrJWUIhV888rVJy9o2K+RiY2cPN7PNmdq2Z/aeZXWxmz0u8mdB1ADN7s5ld\nYWaXmdlyM3tCglzD25hIMMZ2Zna+mV1tZteY2YfMbGmCeMmY2er4HF5uZl82sy3HsJnQdQAzW5kg\nxyih6wBm9j0ze05j+Qgz+3rXcYe2MZFyvNxUzIckmkmeT/3/mdzF3Z8AHAlsn2DcpqrLyma2P3AI\nsLe7Px74E2BFglzDQoIxzgPOc/ddgV2BLYBTE4wLJOuZ3+vu+7r7XsAdwKsTjDmsSjDGfPRVqwRj\nvBL4oJk9yMw2B94J/EWCcXtLPfPEzOxA4C3ufkDuLLMxs8OBl7p76iuG4e106pnH5/OtzYJrZlsA\n1wHbu/vvO4dMwMzudvct4+8nAHu5+2syx1pHM+dCZ2bvBlYBmwF3u/s7M0da0DQzH5Lg0msPYHmC\nKLNKkPNbwI5mdpWZfcLMnp4g1joSXOnsAfxkaMyVwPXALh3HBpL1zC2OtQR4JvCVBGNO3UAhbYGE\nOd8OvAR4DvDeRGP2lor5mJnZx83sp2b2w8RDhy4ru/u9wL7A8cDvgLPN7JgEuaYYYwGyMY07V5uY\n2XLgFuDhwH+MYRthDGOOQ0gxiLuvAs4BPuvu96cYs6mUF8e2VMyHJJhJXgn8r8Z4r6GeqT2s47jD\nqq4DeO278W/+S+AFXcecRui4/s+A/Zo3xDcXdwCu7Tg2kKxnvsrd9wV2pH6hGUeLpRrDmONQJRxr\nTfyREVTME3P3C4GNYt90YLMxbGeiy/pmtquZNdsUe1O3LlKruqzs7hdQz3qPhsk2xvuBMxZKvzwy\ngJhpGXCSmSU9vxK9OT/2K5oSPo4K5eRsS8V8SKJLr+cDwcx+YWY/AM4ATk4w7qQEOTcHPhM/mvhT\nYHeg65jrSHTCHA68yMyuBq4C7gPenGBcIFnPfPKTBO7+U+Ay4KgE405KdGxuYmY3mNmK+N/XJRhz\nir61L0qxoD6r2xfu/hsSn8jTCF1WdvflwFPSRJlZim+AuvtNwGFpEo3H8CdExvQpodB1AHefj3M+\npBrI3d+Waqxhfft2smbmQwrauVXuAC2F3AFG0b/NklyVO8BipM+Zy1j1bfYjslBpZj6klH5fKTlL\nKOT6t1nSKiVn36iYlyvkDtCGTuykQu4ALYXcAdro27GpYj6khJlkVOUO0FLIHWAU9cyTq3IHWIzU\nM5exUs9cZH5oZj6klEuvUnKWUMjVM0+rlJx9o2JerpA7QBs6sZMKuQO0FHIHaKNvx6aK+ZASZpJR\nlTtASyF3gFHUM0+uyh1gMVLPXMZKPXOR+aGZ+ZBSLr1KyVlCIVfPPK1ScvaNinm5Qu4AbejETirk\nDtBSyB2gjb4dmyrmQ0qYSUZV7gAthdwBRlHPPLkqd4DFSD1zGSv1zEXmR/HFfHCpNCgYCZaruBxS\nLpN+thLGkHNnd9854XgwnllaACp3n4j7r+vyS4FfLdJ9vphzErczEbczkXJ5vhVfzCUdzaJFylV0\nz7yUNzBKyVlCIdcnT9JSzv4oupgXJOQO0IZOmKRC7gAthdwBWgq5A7SR8xwqupiXMJOMqtwBWgq5\nA4yiT54kV+UO0FKVO8BCp565TFLPXKRcRc/MS2kLlJKzhEKunnlaytkfRRfzgoTcAdrQCZNUyB2g\npZA7QEshd4A21DOfoxJmklGVO0BLIXeAUdQzT67KHaClKneAhU49c5mknrlIuYqemZfSFiglZwmF\nXD3ztJSzP4ou5gUJuQO0oRMmqZA7QEshd4CWQu4AbahnPkclzCSjKneAlkLuAKOoZ55clTtAS1Xu\nAAudeuYyST1zkXIVPTMvpS1QSs4SCrl65mkpZ38UXcwLEnIHaEMnTFIhd4CWQu4ALYXcAdpQz3yO\nSphJRlXuAC2F3AFGUc88uSp3gJaq3AEWOvXMZZJ65iLlKnpmXkpboJScJRRy9czTUs7+KLqYp2Bm\n25nZ+WZ2tZlda2YfNbMNE28mdFnZzFY2fj/EzK4ysx06p1p3OxMd119tZsvN7NL43x0TRUvKzHYy\ns8uHbjvFzE5MuJnQdYDG83m5mZ1jZhsnyDUsdB2gkfOnZvZjM9s/Qa5hoesAzfNoXNQzn6NEM8nz\ngPPcfVfgscCmwPsSjNtUdVzfAczsmcCHgee4+4quoaYROq5/r7vv6+77xP/ekCJUU8Ke+bj7i1WC\nMQbP517A/cArE4w5rEowxiDn3sCbgHcnGHNYlWCMXveUiy7mXZnZgcB97n4mgNdvIPwVcIyZbZpq\nOwledMzMngb8PfBcd/9V51DTqzqubylC9MEYWlbfA3ZJPGaqnM39vhVwe4IxpyihBQh5cxZdzBNc\n0uwB/KR5g7uvBK4j4YmTIOdGwJeA57v7Nd0TTS/BgbhJo83yxRSZhi2ynrnFsZYCBwOXz/7wOWwg\nTc7Bfv9v4B+Av0sw5hTqmY9WdDEfo9QzzNBx/fuBS4Bju0eZWYITZlWjzfKCFJnGZKbL7ZSX4SHB\nGJuY2XLgR8D1wD8lGHNYSDDGYL/vTv2i89kEYw4LYxgzOfXM5yjBTPJnwH7NG8xsS2Bb4Ocdx26q\nOq6/GnhmSl+FAAADmklEQVQR8EQz+5vucWYUxjh2Eol65rcB2wzdtg1wa4KxB6oEYwyK5L7uvszd\nH0gw5rAq5WDu/gPgoWb20JTjos+Zj1R0Me/K3S+gnv0cDWBmS4D3Ax9z9z8k3M5ExyHM3X8PPBd4\niZm9vHuqaVUd1y+iZ+7u9wI3m9kBAGa2DfBs4PsJtzGRYJixP5+pc5rZbtR15bYE405Sz3y0oot5\nokuaw4EjzOxq6pnZandP+m58gpwO4O53UF/GvtnMDu2aa52NdD8Qx/5pgYQ982OAt5jZpcC3gQl3\nvy7R2KmOzfl4PicSDLPx4L0S4CzgGE/8bcQEH5tdAiSboC1ES3MHyM3dbwKeBxA/H3uWme3t7j9N\nuJnQZWV337Lx+43AY7oGmk7Xb4A2cy507n4VcOAYNxG6DjBPz2foOoC7p/5exnRCx/X3BH6RIMes\ncn6LuuhinvpJi/2+R6UcM6rGMOY4hNwBRtG/zZJclTtAS9VcVzSzE4C/BJYlS7MA6d9mkUn6t1lE\nyqWe+TwoJWcJhXyRfc587JSzP4ou5gUJuQO0oRMmqZA7QEshd4CWQu4Abehz5nNUwkwyqnIHaCnk\nDjCKeubJVbkDtFTlDrDQqWcuk9QzFylX0TPzUtoCpeQsoZCrZ56WcvZH0cW8ICF3gDZ0wiQVcgdo\nKeQO0FLIHaAN9cznqISZZFTlDtBSyB1gFPXMk6tyB2ipyh1goVPPXCapZy5SrqJn5qW0BUrJWUIh\nV888LeXsj6KLeUFC7gBt6IRJKuQO0FLIHaClkDtAG+qZz1EJM8moyh2gpZA7wCjqmSdX5Q7QUpU7\nwEKnnrlMUs9cpFxFF/PBJc2gAC3U5YHcOXqSMwDVAstU6nOpnGNazqHoYi4iIrWie+YiIlJTMRcR\n6QEVcxGRHlAxFxHpARVzEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVzEZEeUDEXEekB\nFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVzEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVz\nEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVzEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGR\nHlAxFxHpARVzEZEeUDEXEekBFXMRkR5QMRcR6QEVcxGRHlAxFxHpARVzEZEeUDEXEekBFXMRkR5Q\nMRcR6QEVcxGRHlAxFxHpARVzEZEe+B8R50F3hN4/2AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" ] }, "metadata": {}, @@ -974,10 +1004,10 @@ ], "source": [ "def report(keyboards=keyboards, swaps=3000, scorer=workload_average):\n", - " \"Iterate through a dict of {name: kbd} pairs, showing kbd before and after repeated_improved(kbd).\"\n", + " \"Iterate through a dict of {name: kbd} pairs, showing kbd before and after improved(kbd).\"\n", " for (name, kbd) in keyboards.items():\n", - " show_kbd(improved(kbd, swaps=swaps, scorer=scorer), \n", - " ('improved ' if swaps else '') + name)\n", + " show_kbd(kbd, name)\n", + " show_kbd(improved(kbd, swaps=swaps, scorer=scorer), 'improved ' + name)\n", " \n", "report()" ] @@ -1179,7 +1209,7 @@ { "data": { "text/plain": [ - "['URKLL', 'YSMLO', 'YWPKO', 'GWOMP', 'NRMMI', 'GSKOI', 'URPPO', 'UDOPL']" + "['NELKI', 'NWLKL', 'VEMKI', 'VEOOP', 'UWPMK', 'JSLML', 'GRMMO', 'UWKKP']" ] }, "execution_count": 35, @@ -1370,8 +1400,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.08 s, sys: 377 ms, total: 3.46 s\n", - "Wall time: 3.46 s\n" + "CPU times: user 3.12 s, sys: 395 ms, total: 3.51 s\n", + "Wall time: 3.52 s\n" ] }, { @@ -1514,8 +1544,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 108 µs, sys: 1 µs, total: 109 µs\n", - "Wall time: 116 µs\n" + "CPU times: user 119 µs, sys: 0 ns, total: 119 µs\n", + "Wall time: 122 µs\n" ] }, { @@ -1548,36 +1578,36 @@ { "data": { "text/plain": [ - "{'ACCEPTING': 'ACCEPTING',\n", - " 'APPEAR': 'APPEAR',\n", - " 'ARTS': 'WETS WERE SETS ARTS',\n", - " 'BATHROOM': 'BATHROOM',\n", - " 'CHOICES': 'CHOICES',\n", - " 'CROWDING': 'CROWDING CROSSING',\n", + "{'A': 'S A',\n", + " 'ACCEPT': 'ACCEPT',\n", + " 'AIRS': 'WORE WORD WIFE WIDE SURE SITS SIRS SIDE AIRS',\n", + " 'BEATER': 'NEARER NEARED HEATER HEATED GRAYER GRAYED BESTED BEATER',\n", + " 'BEGAN': 'BEGAN',\n", + " 'BLOWER': 'NOISED BLOWER',\n", " 'DISCOVERS': 'DISCOVERS',\n", - " 'EVERY': 'SHEET EVERY',\n", - " 'FEED': 'TREE REDS FREE FEWS FEES FEED FEDS',\n", - " 'FIELDS': 'FORMED FIELDS',\n", - " 'FOREHEADS': 'FOREHEADS',\n", - " 'GLANCE': 'GLANCE',\n", - " 'HITS': 'NOTE HUGE HITS GUYS BUYS BOYS BORE BITS BITE BIRD',\n", - " 'IGNORER': 'IGNORER IGNORED',\n", - " 'KISSED': 'NODDED MISSES MISSED LOWERS KISSES KISSED KIDDED',\n", - " 'LIFTS': 'LIFTS',\n", - " 'MARRIES': 'NARROWS MARRIES MARRIED',\n", - " 'MEMBER': 'MEMBER',\n", - " 'NOD': 'NOS NOR NOD KID HIS HID BOX',\n", - " 'PALED': 'PAPER PALES PALER PALED',\n", - " 'SENSES': 'SENSES SENSED',\n", - " 'SHITTING': 'SHUTTING SHITTING SHIRTING',\n", - " 'SIMPLES': 'SIMPLES',\n", - " 'STOMACHES': 'STOMACHES STOMACHED',\n", - " 'STRETCHING': 'STRETCHING',\n", - " 'SWING': 'SWUNG SWING',\n", - " 'TRUER': 'TRUST TRUER TRUED TRIED',\n", - " 'WRAPS': 'WRAPS',\n", - " 'YARD': 'YARD USES USED HATS HATE HARD GATE',\n", - " 'YOU': 'YOU'}" + " 'DRINK': 'DRUNK DRINK',\n", + " 'DROVES': 'DROVES DRIVES',\n", + " 'ENTER': 'ENTER',\n", + " 'EXCEPT': 'EXCEPT',\n", + " 'GATHER': 'GATHER FATHER BAGGER BAGGED',\n", + " 'GUESSING': 'GUESSING',\n", + " 'LEADINGS': 'LEADINGS',\n", + " 'LOOKER': 'POOLED MOONED LOOKER LOOKED KILLER KILLED',\n", + " 'MAPS': 'MAPS',\n", + " 'NEEDED': 'NEEDED BEDDED',\n", + " 'NIGHTS': 'NIGHTS MIGHTS',\n", + " 'RETURNS': 'RETURNS',\n", + " 'ROOMED': 'ROOMED ROLLED FILLED',\n", + " 'SEXING': 'SEXING ADDING',\n", + " 'SHORTEST': 'SHORTEST',\n", + " 'SHOVING': 'SHOVING',\n", + " 'SKINNED': 'SKINNED',\n", + " 'SOUND': 'WOUND SPINS SOUND SKINS',\n", + " 'STOPS': 'STOPS STOOD STOLE DROPS',\n", + " 'THANKS': 'THANKS',\n", + " 'TRIPE': 'TRIPS TRIPE',\n", + " 'TV': 'TV',\n", + " 'VIEWED': 'VIEWED HORSES'}" ] }, "execution_count": 49, @@ -1643,7 +1673,7 @@ "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1694,7 +1724,7 @@ "data": { "image/png": "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\nGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgl\ndhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYR\nkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGM\nUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFi\nFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJfYcZtYQ/78K\nw40Zj9dQzThV3rZGxVO8YoYrzt31iD2ABsXrnI+sv5aK17njVfNh0QaKVISZNbh7Q9ZiiXRkKsW0\ns6qenrVDPKC+yvGqJuvvneJ13nhK7Dk2gcRX7XiNVY5XTfWKp3gdkRJ7+2vMcryMl0YaFU/xkqrm\nsaAau6TW22zoMLh6IAxaAPOnwRXL3Ofkm7ZQ3du62VD6czU9GcQK5rOQK3x1/mUkpRp7NlViX8k6\ntdjbWWer8/U2G3oC/PlxOPW3cPjjcOoJ8OfeZkMLzFLfah262VB25c+cxqmczOGcxqnsyp+tW8Fl\ndEid7b3rjPEqua90hO2rWCy12FuqdqvPzBrdvb6zxDvQbPzjcGqP2LiVwMnwyAT4JO5rcuK1ej1t\nexvPaZxKbWzkGuBvvMMoZhe7bixhMFvwetHzp7WQ3enPDMWrYLzH2YnD2LrVvnInd/lcH11KuHY4\n9qqWW7pWI4i0qbEzxRsIg3rkjOsB7AmHA0sxmwlMAV4Apjjc3GohPRnU4kAFqAVW8BpwcdEr9wRn\n8yluLXr+tJ5UvIrHW8GPqWXrFuNqCftQ6RrLsIzEVGPvRMxsW+AnwO6E0tajwCXu/kGZ41wPzHH3\nG6Phx4C57n5ONPwD4HV3H1fGmOsISdoAB+49AIbna7GPgrsmwReAPYARwHBgxCrYrzssJUr0wAuH\n9+Pkp87k2A/qYgtZA1yDA88DmwGvAKe5+7IU65u4RWRmWwJPRNs1EFgHvB0N7+vua5PGTbF+E4Fv\nu/tj0fBJwOfd/Zhyx4qWPwSY4O57xsaNAZa7+/UViLfc3XuVdZmFzu7u5C7m8Q2ajz0DJgBfq9B7\n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\nItZewJGE/uBfiS5uVohPh/k7l9K9soiy1oPAkWa2N1CXNqmXUhOOLppubWZbVyHeD4GzgO5pZioh\n3kPAtaQsw6jG3poSeyeVZmeOeqbcDpzu7quKDNmYYtqbgIuiC6nfJ0WNPS13/wtQa2Znh2EcrA7s\nxaSJHqw+ZcyV0XJup7hacKp4xGrsZrYr4bh9t9Lx3H0xocx0dsr5i4pHeD3Hep77/0g6qrFvGs4F\n+gE3mxmEA8mB77j7/UkWkLw0Yl8AXosSLsDNwOfN7BB3n5h2xRM6EfihmV1KKBvMAS6GpP3oF/du\nXaPHN9xSgLodoLYW1qyB98JtCUJCfwA4uYj1bUw5/eZRjb0pAZ7u6WqoaePFl30d4Syv4vGi6z4/\nTjmvaux5qMYuiVTza9vVjdXWLRAGHgBv7phntpJuKSBSaSrFSFL17b0ClRCVbkYXqNEPyj9XXUm3\nFKh2TVjxNj1K7J1UR71XTCdV3/RP/AtT8N77+SevLfWWAvUbnaK8sh5PciixSyIZr2M25h+9Zk26\n8aXGq5hMx8v4vlkU1dglkazW2DeyHk8D++V5SjV26dDUYpek6tt7BSqljbJWuKUAdW9BnyXhb8Hb\nEpQjXkUo3qZH3R07qXZo1TZWMVa11ecbWcFfScobr4KyHk9yqMUuiXSE0kgFNSpe542X8X2zKKqx\nSyKbYo1dpLNSi12Sqm/vFaiUrNeEFW/To8TeSZlZQ3yHrvRw07hqxq/ittUrXqeOJzlUihERyRi1\n2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhF\nRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQy\nRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJ\nXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1E\nJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRj\nlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TY\nRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVE\nMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJGiV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDJG\niV1EJGOU2EVEMkaJXUQkY5TYRUQyRoldRCRjlNhFRDLm/wGIYCrFxnvMOwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1719,9 +1749,9 @@ "outputs": [ { "data": { - "image/png": "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\njFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxR\nYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIX\nEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJ\nGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgl\ndhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCX2AmbWEP+/BtO5jMdr\nqGWcGu9bTvEUr5zpqnN33WI3oEHxuuYt64+l4nXteLW8WbSDIlVhZg3u3pC1WCKdmUoxHaymH886\nIB5QX+N4NZP1507xum48JfYCq0Diq3W8XI3j1VK94ileZ6TE3vFyWY6X8dJITvEUL6lavhZUYxcA\nrKdtzCDGsiZDWMBMZvFTX+xTi7Xta7bxcBi7Hgx5D2ZOhJ/O8+JtVWOvjWo9f51Bmn2Drrd/VdHR\nZ29X9RudYCQAdWzMCN7mXJwGnHNxRvA2dWxc2LYPbHwMvL0A3MEXgB8Db/ehZdsoXm5Veiw7Il61\nnr/OsH9p9q0r7l+1bj1q+zbS+XVAr6++hrGKxxvEWL7EMOqi6TrgSwxjDmOBY+JNh8PYa2HYGtH0\nGsC1MGwSLdtGcpXa8E6oviPjWaMZsCFbcGvR568Pz1ijTcq3HzKPHjsPYfNrZ9K38Pnr35M3Xxpk\ni+PrHz+Q3i8Nsh9Wb3eaKxbvP3X0Wv4RPfh9bKYzrP8KnsGa9i3vFBg2BtZJeHzWV3L7OxMl9o6X\n6/B4azJkZVLIq4vmF1gPhqxRMG8NYDAt24Jq7BXVkyet0UYBu8Vuq9EHK3z+uneHXWbxwYU38vjG\nc/ncOosYvtpy+p8Fy4s9fx86kx7dlEvj8/81ky/vNYT7qrdDzcXjLTe6vTCYnSZN5rgVO7Zs2/ch\n3nloOqdHkwbsBJzUC9ZOcXzmKrbxCdTytaDEXiDtg29m6wNXAdsQTkb/Hfihuy+tZDwzuxyY6u6/\njqYfBKa5+0nR9KXADHe/InW8BcxkCTRLDkuA16g3swmEF44Dd+0GMxcSXix5C4H3YWaJ7U78CcjM\n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\n", + "image/png": "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\nEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJ\nGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgl\ndhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYR\nkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGM\nUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFi\nFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcR\nyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckY\nJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEcmY/w9vjpVcLw21AQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1808,8 +1838,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 121 ms, sys: 1.85 ms, total: 122 ms\n", - "Wall time: 121 ms\n" + "CPU times: user 134 ms, sys: 3.99 ms, total: 138 ms\n", + "Wall time: 143 ms\n" ] }, { @@ -1836,14 +1866,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 174 µs, sys: 1 µs, total: 175 µs\n", - "Wall time: 177 µs\n" + "CPU times: user 188 µs, sys: 3 µs, total: 191 µs\n", + "Wall time: 202 µs\n" ] }, { "data": { "text/plain": [ - "3.233309780212764" + "3.2333097802127653" ] }, "execution_count": 58, @@ -1869,9 +1899,9 @@ "outputs": [ { "data": { - "image/png": "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\nAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1881,8 +1911,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 10.1 s, sys: 18.6 ms, total: 10.2 s\n", - "Wall time: 10.2 s\n" + "CPU times: user 10.6 s, sys: 26.7 ms, total: 10.6 s\n", + "Wall time: 10.6 s\n" ] } ], @@ -1936,7 +1966,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1961,9 +1991,9 @@ "outputs": [ { "data": { - "image/png": "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\n3vB9NsKzNTcQun0vJhR+WVweTRh+uY7wF+v28/CAm8hUZtq9LyIiIovHovnb+yIiIjJbKvoiIiI9\noaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi\n0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoi\nIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPbFK\n6QCyOJjZEgB3X7KYpwdK51BO5aw552Ba+sfcvXQGERERWQHUvS93u0tZrJQzL+XMq5ac0m8q+lKT\npnSARE3pAIma0gESNaUDJGpKB0ihi5N+U9GXmsb32tIBErWlAyRqSwdI1JYOkKgtHUBkEo3pi4iI\n9ITu9KWa7j7lzEs586olp/Sbir7UpCkdIFFTOkCipnSARE3pAIma0gFS6OKk31T0RWP6+bWlAyRq\nSwdI1JYOkKgtHUBkEo3pi4iI9ITu9KWa7j7lzEs586olp/Sbir7UpCkdIFFTOkCipnSARE3pAIma\n0gFS6OKk31T0RWP6+bWlAyRqSwdI1JYOkKgtHUBkEo3pi4iI9ITu9KWa7j7lzEs586olp/Sbir7U\npCkdIFFTOkCipnSARE3pAIma0gFS6OKk31T0RWP6+bWlAyRqSwdI1JYOkKgtHUBkEo3pi4iI9ITu\n9KWa7j7lzEs586olp/Sbir5kYWbLzOx8M7sg/neLGaymmbYBM7vTzD7YmX6jmb1j2naHNNM20Nme\nPzazH5rZbhlyDWumbcDM7mdm/2ZmvzKzH5jZOWa2X4ZsXc00C3e25YVmdqqZrZEp17Bm2gbMbBMz\nO9nMfhm359fM7CEZsnXXsSRne1IXFX3JNaZ/i7vv4u47x/9emaHNYW2GNm4HnmVmG2Zoa5Q2QxuD\n7bkT8FbgfRnaHNZmaOM0oHX3h7j7I4DnA5tlaLernXL5wbbcHvgz8MrpIy2ozdDGl4Az3P2hcXu+\nBdgkQ7sigMb0JRMzW+ru65TOMYmZLQXeA6zj7m8zszcCa7n7uwpHm6e7Pc1sf+AAd39W4VjzmNke\nwNvdfffSWcYxs5vdfd34+hXA9u7+msKx7sbMdgeOdPemdBa599KdvuTq7luz073/hQzt3U2mnA4c\n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\nzCrDxck3gS3M7BIzO8bMnpAh1jy1nJMkUNGXWWlm2HbOHoomRyPufitwKvBpd/9zjjaHNBnaOJdw\nB/0Y4LvAeZ3pczK0D3lyHkAoqBC26QsytDmsmbYBd78I2IqQ9z+YQc9Zhou9W4BdgJcDvwdOMbMX\nZYgmlcr5QJSsABWNn7UZ2vgp8JzuG2a2LrA58KsM7UPe39e+M/6bhTZDG4Mu/u0I3fu/Ad4I/BE4\nIUP7MGVOM9sA2IMwXu7AyoS76jdPH22eNlM7XwE+SLiI2DhTm13NtA3EYbGzgLPM7ELgRcBJ45e6\nR+0vydWWzJ7u9GUmMo2VfxtY08wOhPCENPAPwAnu/r/Tth/XsSRHO7OWKee5wFOBGzy4EVif0MWf\n4yG+HDn3B05y9we5+9buviVwuZk9bvp0czLkHNzVHw+8Mz7XMQvtNAub2TZm1h0K24kwPCY9paJf\nmVrGzzLmfCbwXDP7BXAJcBtwRKa2+7Y9LwQ2InTtd9+7yd1vyNB+jpzPA7409N4XyfxAX6Yxfdz9\nanf/2PSJRqxk+ouTtYET46/s/Rh4ODBtm/PUcgxJoL/IV5la/kKXmbXu3pTOMYly5qWcedVwvNeQ\nUeboTr8yFR1cbekAidrSARK1pQMkaksHSNSWDpCoKR1gkorOSYLu9EVEFi3dRUtuutOvTC3jZ8qZ\nl3LmVUvOGgp+LdtSAhV9mZWmdIBETekAiZrSARI1pQMkakoHSKGCKrmp6Femhiv/qC0dIFFbOkCi\ntnSARG3pAIna0gESNaUDTFLROUnQmL6IyKKlMX3JTXf6lamlu08581LOvGrJWUPBr2VbSqCiL7PS\nlA6QqCkdIFFTOkCipnSARE3pAClUUCU3Ff3K1HDlH7WlAyRqSwdI1JYOkKgtHSBRWzpAoqZ0gEkq\nOicJGtMXEVm0NKYvuelOvzK1dPcpZ17KmVctOWso+LVsSwlU9GVWmtIBEjWlAyRqSgdI1JQOkKgp\nHSCFCqrkpqJfmRqu/KO2dIBEbekAidrSARK1pQMkaksHSNSUDjBJReckQWP6IiKLlsb0JTcV/coM\nuvsGJ4LFOj1QOodyKqdyrrhpWfxU9EVERHpCY/oiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIi\nIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIv\nIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq\n+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9\noaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi\n0hMq+iIiIj2hoi8iItITKvoiIiI9oaIvIiLSEyr6IiIiPaGiLyIi0hMq+iIiIj3x/wFHAh0Zrp5G\noAAAAABJRU5ErkJggg==\n", + "image/png": "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\ndiMRvXUAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1971,9 +2001,9 @@ }, { "data": { - "image/png": "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\nz6UTcJMAAAAASUVORK5CYII=\n", + "image/png": "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\naBs1a4P/lz0bO2rwf6JriqReacPNjmk4JbYns1H5Tt/MzKwjfKdvZmbWEb7TNzMz6wgnfRs7JT4s\nVegfium1HcOgQmOabDsGs6Y46ZuZmXWE5/TNzMw6wnf6ZmZmHeGkb2OnxDnYQueqe23HMKjQmCbb\njsGsKU76ZmZmHeE5fTMzs47wnb6ZmVlHOOnb2ClxDrbQuepe2zEMKjSmybZjMGuKk76ZmVlHeE7f\nzMysI3ynb5ZJulDScyrLB0s6v82Ychz3SbpU0uWSzpG0dkExXZZ/blNQTJdL+pqkDdqOyaw0Tvo2\ndmrMwb4GOFHSmpIeArwf+OuGYurV2H1pROwWETsB95DiLCWmXfPPGwqKaSfgduB1DcU02UQ5ZiVY\n0HYAZqWIiCslfR04FlgP+FxEXNduVA9yIbBT20EAajuAWfyQMo6TWVE8p29WIWld4FLgbmD3iLin\n5ZCQtCQi1pe0APgS8G8R8YmWY7oX+G9S8r8mIl7YZjywwnFaHTgL+HREfLvtuMxK4jt9s4qIWCbp\nHGBJCQk/W0fSpfn3C4F/bjOYbFlE7NZ2EAP6x2kr4CrgOy3HY1Ycz+nb2GlgDvb+/K8xNeeql+W5\n6t0i4uiIuLeAmOZEE8cJ2IY0AvH6hmKabKIcsxI46ZuVr8T582Jjiog/AkcDb5HkPs6swnP6ZgMk\nHUca3j+x7VgAJN0ZEUV9/Ww+xCTpa8C5EXFmi2GZFcVJ38zMrCM89GVjp8Q52DGcP58ThcY02XYM\nZk1x0jczM+sID++bmZl1hO/0zczMOsJJ38ZOiXOwhc5V99qOYVChMU22HYNZU5z0zczMOsJz+mZm\nZh3hO30zM7OOcNK3sVPiHGyhc9W9tmMYVGhMk23HYNYUJ30zM7OO8Jy+mZlZR/hO38zMrCOc9G3s\nSJqszsMWstwrIAbHVHPZbL7z8L6ZmVlH+E7fzMysI5z0zczMOsJJ38zMrCOc9M3MzDrCSd/MzKwj\nnPTNzMw6wknfzMysI5z0zczMOsJJ38zMrCOc9M3MzDrCSd/MzKwjnPTNzMw6wknfzMysI5z0zczM\nOsJJ38zMrCOc9M3MzDrCSd/MzKwjnPTNzMw6wknfzMysI5z0zczMOsJJ38zMrCOc9M3MzDrCSd/M\nzKwjnPTNzMw6wknfzMysI5z0zczMOsJJ38zMrCOc9M3MzDrCSd/MzKwjnPTNzMw6wknfzMysI5z0\nzczMOsJJ38zMrCOc9M3MzDrCSd/MzKwjnPTNzMw6wknfzMysI5z0zczMOuL/AaM4Rf+CUtIeAAAA\nAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1981,9 +2011,39 @@ }, { "data": { - "image/png": "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\n4YINug5gVIn1V2I7t35x0jezxpzMzBYGJ30rQolznSXOCZfK9TeeEo+T9YuTvpm1YarrAMxsbk76\nVoQSh4dLnBMu2KDrAEaVWH8ltnPrFyd9M2vMycxsYXDStyJIWlKd72xpeTB8rebyFdV54by+yXLj\nmICXlBbTsMwWyqjWX9PPNcj112ZMrbZRsy74f9mziaMC/yc6SYPShpsd03hKbE9mdflO38zMrCd8\np29mZtYTvtM3MzPrCSd9mzglPixV6B+KGXQdw6hCY1rSdQxmbXHSNzMz6wnP6ZuZmfWE7/TNzMx6\nwknfJk6Jc7CFzlUPuo5hVKExLek6BrO2OOmbmZn1hOf0zczMesJ3+mZmZj3hpG8Tp8Q52ELnqgdd\nxzCq0JiWdB2DWVuc9M3MzHrCc/pmZmY94Tt9swpJKyWdJ+ln+d/tCorpAkmnStqggJi2l3TByGtH\nSzqyw5iWd/XeZguFk75NnIZzsLdExB4RsXv+96qWYhq0ENOuwO3AqwqICaD1YcKGMc3LsKXn9G2S\nOOmbrU5dBzCHs4CHdB2EmS1MTvo2cSJiSYPdN6wM73+txZimGuwuAEmLgf2BC2bffK3ENC8KjWlJ\n1zGYtWVx1wGYFWZFROzRdRAjNpR0Xv79LOCfugwmm2ko3U8GmxXMd/o2cUqcg204V70iz+nvERFH\nRMQdBcT0e2Dzkdc2B5Y2KNPf0zebZ076ZqsrcU6/uJgi4hbgWklPApC0OfBU4IcdhlXccTIrjb+n\nb1Yh6aaI2KTrOKpKjAlA0o7AccC9SMP6H4yIUzqM5w7gWlLyD+CjEfGxruIxK5GTvpmZWU94eN8m\nTolzsIXOVQ+6jmFUoTEt6ToGs7Y46ZuZmfWEh/fNzMx6wnf6ZmZmPeGkbxOnxDnYQueqB13HMKrQ\nmJZ0HYNZW5z0zczMesJz+mZmZj3hO30zM7OecNK3iVPiHGyhc9WDrmMYVWhMS7qOwawtTvpmZmY9\n4Tl9MzOznvCdvpmZWU846dvEkbSkOg9byPKggBgcU8Nls4XOw/tmZmY94Tt9MzOznnDSNzMz6wkn\nfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30zM7Oe\ncNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDSNzMz\n6wknfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30z\nM7OecNI3MzPrCSd9MzOznnDSNzMz6wknfTMzs55w0jczM+sJJ30zM7OecNI3MzPrCSd9MzOznnDS\nNzMz64n/D+O2IlqlNgNLAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nBXICYGZmViAnAGZmZgVyAmBmZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYGZmViAnAGZmZgVyAmBm\nZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYGZmViAnAGZmZgVyAmBmZlYgJwBmZmYFcgJgZmZWICcA\nZmZmBXICYGZmViAnAGZmZgVyAmBmZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYGZmViAnAGZmZgVy\nAmBmZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYGZmViAnAGZmZgVyAmBmZlYgJwBmZmYFcgJgZmZW\nICcAZmZmBXICYGZmViAnAGZmZgVyAmBmZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYGZmViAnAGZm\nZgVyAmBmZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYGZmViAnAGZmZgVyAmBmZlYgJwBmZmYFcgJg\nZmZWICcAZmZmBXICYGZmViAnAGZmZgVyAmBmZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYGZmViAn\nAGZmZgVyAmBmZlYgJwBmZmYFcgJgZmZWICcAZmZmBXICYEtJOr76uYHpluPN7nSTcRr+bi3HG+l4\nS6dteCgi5roMNiQkHR8RxzveaMZr0rgfS8ezEjgBMBsTTd7U/QAxG33uArA503Sz4LjHAyYajteY\ncT93jmdzwQmALVXAA2vc47UajtekCccb6Xg2hJwA2FxqOd7sGfMm+ZbjjW68Ma+bI8tjAMzGhMcA\nmFkdbgGwOTPu/ZAFdKk0ZtzPnePZXHACYEsV8MAa93ithuM1acLxRjqeDSEnADaXWo43e8a8Sb7l\neKMbb8zr5shyAmBL1blIJX1M0lGV6e9L+lxl+iOSjpnFeAsrn58m6TeSNu91+z7iLZZ0uaQrJf1S\n0q51Ys0g3tWSviVp7brx6rTgdMQ7U9JqdePVIWmJpA9Xpl8v6Z29bl/3ASLpbZKukXRV/p6PqbN9\nH/EWTr/WrMZbIun0yvSKkm6XdO5sx5N0oaSnVqYPlPS9OuW14eQEwPp1EfB4AEkCNgS2rix/PHDx\nVDuo2eUQeZu9gY8DT42IeTW2rxtvUUTsFBE7AG8FPlAn1gzibQvcAby6bjzqNetW490DHNlHvDru\nBp4taf1+Nq6Z3OwKPA3YISK2B54EDLKuQK6f/eoj3iJgG0mr5ul9qPEda8Y7EviYpFUkrQm8F3hV\nje09BmBIOQGwpWpepBeTEwDSg/8aYKGkdSStAjwCuHyafUzUK552Bz4L7BcRf6yxbV/xKp/XARYM\nOF7Vz4BN+9iu1We8C4GH9bltr+4FPgcc2+f2EzXW3RiYHxH3AkTEgoj4ywDjzYZ+4n0P2C9/Phg4\nYxDxIuJa4FzgzcA7gC/2ef3ZkHECYH2JiFuAeyRtxrK3/Z8DjwN2Bq5u34Cn0KoRclXgbOCAiPh9\n/RLXjrd6bjr+X9KD6z8GHE+QmnKBvUk33FpqNiO3460E7AtcXTdeTQGcCLxA0lp9bN+qse4PgS1y\nN9GJkp444HizoW68AL4GHJxbAbYjXX+Divdu4BDgqcCHam7rMQBDygmALdXHRXoxsBspAfgZcEll\n+qJZjndPjveymmXsN95duYn8kaQH5JcGHG91SZcDtwAPAH5UN17NFpx2vEuBG4Ev1I1XV0T8A/gi\ncHQf2x5fY91FwE7AEcDtwNckHTaoeLOhn3gRcQ3wINLb/3dZvtVqVuNFxF3AmcCXIuKeOtva8HIC\nYDPR7gbYhtQFcAmpBeBxTNP/D7UfWIuBg4BdJL2ldknrx1sqIi4BNpS04QDj3RUROwFbkG7kr6kT\nK5uoGy//ObqH1prZ8gngpcAadTaqe+4iuSA/6F4LPGeQ8WZqBvHOBT5Mveb/fuMtyX9q8xiA4eQE\nwJbq4yK9GHg6sCDfcO8A1qXHBICaffIR8S9Sn+chkg6vWdba8ZZ+kB5Bulb+Ouh4+TseDbxeUt3r\ns1U3XoPa3+8O4OvUb8mZ6DmQtJWk6piGHUitHAOJ1w5bc/3Zincq8K7cTz/IeDaGVprrAthIuxrY\nAPhyx7w1IqKXQXOtGrEC0gNE0r7ATyXdFhHfqbGPOvFWy03k7RvtYVH/382uE2/pviPiSklXkZp2\nv9LzDuo16zb9b4BX432U9CuHOmVo1Vh3TeBTktYhDT68jtQdUEedeDDz49lXvIi4Gfh0A/FmxGMA\nhpP/LwCzMeH/C8DM6nAXgM2ZEepnHYl4jHGz7rifO8ezueAEwJYq4IE17vFaDcdr0oTjjXQ8G0JO\nAGwutRxv9ox5k3zL8UY33pjXzZHlMQBmY8JjAMysDrcA2JwZ937IArpUGjPu587xbC44AbClCnhg\njXu8VsPxmjTheCMdz4aQEwCbSy3Hmz1j3iTfcrzRjTfmdXNkeQyA2ZjwGAAzq8MtADZnxr0fsoAu\nlcaM+7lzPJsLTgBsKUnHVy/UXqfb8/LnVq/TwESd9SvTrTGPd3zdWPnvB/X73fK8fqaH/Vg63uzG\nq0639zXttA0ndwHYjEnNNgePe7wmjfuxdDyz7pwAmA2ZJm/qfoCYlctdADZymm5anIOmzImG4zVm\n3M+d49kocQJgM1bAA7LpeK2G4zVpwvFGOp6NEScANopa4xxvzJvkW443uvHGvG4Wx2MAzIaMxwCY\nWRPcAmAjp4B+z4mG4zVm3M+d49kocQJgM1bAA7LpeK2G4zVpwvFGOp6NEScANopa4xxvzJvkW443\nuvHGvG4WxwmAzVidm4KkLSVd3THvOEnHDijeAZKukHR5/nOFpMWSnjKIeDnmppLOkfQ7SddJ+qSk\nlWts33O8/F0ur3zHLeqUtS5JC2eyfc1zd56kfTrmHS3pxAHF20zS9ZLWzdPr5emej2kfdeUBkr6S\n68kvJF0kaf9BxcsxD5C0RNJWdbe18eIEwObCjEae1nlARsQ5EbFjROwUETsBJwEXRMQPBhEvOws4\nKyK2Ah4OrAF8uMb2EzXWXZS/W/s73lRj2340du6ArwIHd8x7fp4/6/Ei4k+k+vHBPOsDwGfqHNM+\n6so5QCsiHhYRjyF9v80GGI8c40Lue2wHFc+GlBMAm7FRGQOQ33jeCRw6qHiS9gL+GRGnA0T6mc3r\ngMMkrdHjblo1yqYa6w6DiRrrfhN4mqSVILUeARtHxEUDigfwceCxko4GHg98tOb2PcfLdeXuiPh8\ne15EzIuInls46sTLMe8H7Aa8lD4SABsvTgBsFLXqbpAfIl8BXhcRNw8w3tbAZdUZEbEQuAF4WC87\nqNmsu3qlC+CbNbabK61eV4yIO4BLgX3zrOcDXx9UvBzzXuBNwAnA0RGxeIDxtgYur7n/mcQD2B/4\nfkRcB8yXtGOdjT0GYLw4AbAZq3lT6NaE3HPTcp83ofcA10TEf9XdcJZuej2/qddsUbmr0gXwnPrF\nalYfx/JrpAc/+e8zBhwP4GnAn4Ft6244k7oi6dOSrpT08wHGO5h0TAHOBA6pub2NEScA1rS/Aut3\nzFsfmN/rDup2OUiaAJ4FvLrOdn3G+zWwc8f2awMbAb/tcR8TNeKNlD66i74F7J3fVFePiCsGGU/S\nDsDewK7AsZI2GmC8a4FHtyci4jU59v0HEU/SesBewCmSrgfeABzY6/Z149nwcwJgM1ZzoNUi4M+S\n9szbrg88BfifGiEnapRtPeBU4LCIuKtGjL7iRcRPSM3yh+b4KwIfAT4VEXf3uJtWjbKN8xiAdn1p\nkc5hrbf/fuKRBgEenQcEfogBjgGIiPOAVSW9ojL7foOKR3rYnx4RD46Ih0TElsANkp5QM6aNCScA\nNhcOA94h6Qrgx8DxEXFDje1bNdZ9BemN6uSOn8vVefOpEw9Sa8OBkn5HatlYHBEf6HXjWepSmXU5\nmek1iemm1cc2ZwDb0V8C0HM8SS8HbswPZoCTgUdI2n0Q8bIDgAlJf5B0CXAaaQzCIOI9Dzi7Y95Z\n1BgM6DEA48X/F4DZAEnalfTgelZEXNnjNkP5fwFI2h74bETsOthSmVkT3AJgI2eU/v3ziLgkN7n2\n9PDPJvqNNyi5mforwNtmuJ/jZ6VAjldEPBssJwA2Y6Py7wCMULxWw/GmFRGfjYht8hiHmZiYjfI4\n3pzFszHiBMBGUWuc4415P2vL8UY33pjXzeJ4DIDZkBnWMQBmNl7cAmAjp4B+z4mG4zVm3M+d49ko\ncQJgM1bAA7LpeK2G4zVpwvFGOp6NEScANopa4xxvzJvkW443uvHGvG4Wx2MAzIaMxwCYWRPcAmAj\np4B+z4mG4zVm3M+d49kocQJgMybp+OqNYdDTwIvb03lZa5DTwDENx3vQoGNUpifG/FiOe7wXt6cr\n6wxs2saLuwBs5EjNNls3Ha9J434sxz2e2Uw4ATAbMk0+RPzAMiuXuwDMpjEHTaATDcdrTNPH0vHM\nunMCYCOngAdyq+F4TZpwPLPh4ATAbHqtJoONeZN8y/Fmz5jXFRswjwEwGzIeA2BmTXALgNk0Cuhy\naMy495GPezwbL04AbOQU8EBuNRyvSROOZzYcnACYTa/VZLAxb5JvOd7sGfO6YgPmMQA21iQtBq4C\nVgHuAb4EnBADrPiSNgI+DuwM/A24FTgmIq7rcfue++UlLYyItWZQ1lpjACrHU0AAX4uID/Ubv4d4\ny30/SS8Cdo6I1w4o3qbAicCjSN/xO8AbI+LeAcRaH/gJ6ThuDCwGbs/TuwwiplmVWwBs3C2KiJ0i\nYhtgH2Bf4Lg6O+ijy+Fs4LyIeHhEPAZ4C7BRje0naqzbdAbfPp475r9rPfz7OJaTfb+ev3Mf8c4C\nzoqIrYCtgLWA9w0iXkQsaB9H4GTgY5Xj2tPD32MAbCacANjI6femFxHzgSOA19TcdKLXFSXtCfxf\nRHy+EvfqiLioRrxWjXWbphluPzEbhRhEPEl7Af+MiNMBcivR64DDJa022/E6w/e5nVnfVprrApg1\nKSJukLS9pz14AAAEWklEQVSCpPtHxO09btaqEWIb4LL6JVtmyPt1V5d0Ocu6AN4fEd+osX2rZrw1\ncjxyzPWAcwcUb2s6zl1ELJR0I/Aw4JpZjjdjQ15XbMg5AbCRMws3vVpvW03fZIf8t/l35SbrvvTx\nvZaLl8cAPHqA8SbTc30Z4vNmdh/uArCiSHoIcG+Nt/+6XQ7Xkgb/zcTEDLcfWkP+O/lf03HuJK0N\nbA70PICzRrwZ8xgAmwknADZyat70lr69Sbo/abDVp2qGnOh1xYg4D1hF0ssqcbeVtFuNeK0a6zbd\nd9z0GIDG4kXET0hdHIcCSFoR+AhwWkT8a7bjmc01JwA27laTdLmka4AfAt+PiHfX3Eer5vrPAvaR\ndJ2kq0mjyP/S68Y1m5FXl3STpHn572NqlrWu9vG8Iv/d8wj5rFVz/Zn+yqFuvGcBB0n6HfAb4J/A\n2wYYb0bc5WAz4X8HwGzI+P8CMLMmuAXAbBoF/NPDjRn3PvJxj2fjxQmAjZwCHsithuM1acLxzIaD\nEwCz6bWaDDbmTfItx5s9Y15XbMA8BsBsyHgMgJk1wS0AZtMooMuhMePeRz7u8Wy8OAGwkVPAA7nV\ncLwmTTie2XBwAmA2vVaTwca8Sb7leLNnzOuKDZjHAJgNGY8BMLMmuAXAbBoFdDk0Ztz7yMc9no0X\nJwA2ciQdX73xDXoamGg4Hk3GG/NjOe7xzPrmLgAzM7MCuQXAzMysQE4AzMzMCuQEwMzMrEBOAMzM\nzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK5ATA\nzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBO\nAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK\n5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzM\nrEBOAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxATgDM\nzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQE\nwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxA\nTgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzM\nCuQEwMzMrEBOAMzMzArkBMDMzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDM\nzKxATgDMzMwK5ATAzMysQE4AzMzMCuQEwMzMrEBOAMzMzArkBMDMzKxA/w/xf7nbNVtacQAAAABJ\nRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" ] }, "metadata": {}, @@ -1993,8 +2053,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2min 23s, sys: 311 ms, total: 2min 23s\n", - "Wall time: 2min 23s\n" + "CPU times: user 2min 24s, sys: 188 ms, total: 2min 25s\n", + "Wall time: 2min 25s\n" ] } ], @@ -2021,7 +2081,7 @@ "data": { "image/png": "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\ntBY92c7W9wcAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2058,7 +2118,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2102,9 +2162,19 @@ "outputs": [ { "data": { - "image/png": "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\nTkSuQmCC\n", + "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ - "" + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" ] }, "metadata": {}, @@ -2112,7 +2182,7 @@ } ], "source": [ - "show_kbd(improved(keybee, swaps=6000), 'Improved Keybee')" + "report({'keybee': keybee})" ] }, { @@ -2120,7 +2190,12 @@ "metadata": {}, "source": [ "This does indeed cut the path length to\n", - "half of QWERTY, so maybe there is something to be said for hex grids. Here is Keybee with some word paths:" + "half of QWERTY, so maybe there is something to be said for hex grids. \n", + "Note: the space key was moved to the edge, because it doesn't contribute to the workload.\n", + "The Keybee FAQ says \"the space key is the most important key on a keyboard,\" so clearly they are aiming\n", + "at two-thumb typing, not gesture typing; perhaps that's why it was so easy to improve their layout for our purposes.\n", + "\n", + "Here is Keybee with some word paths:" ] }, { @@ -2132,7 +2207,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2189,7 +2264,7 @@ "data": { "image/png": "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\nUdvVC1Aqld6mp3jS0ymRSkmY2eT4BaTUw5lx5YxfxnWrVbweHU8qnB7tioiIpKAaqYiISApKpCIi\nIikokYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiI\npKBEKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKS\nghKpiIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgK\nSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIiko\nkYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBE\nKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKp\niIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgKSqQi\nIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBEKiIikoISqYiISApKpCIiIikokYqI\niKSgRCoiIpKCEqmIiEgKSqQiIiIpKJGKiIikoEQqIiKSghKpiIhICkqkIiIiKSiRioiIpKBEKiIi\nkoISqYiISApKpCIiIikokYqIiKSgRCoiIpKCEqmIiEgK/w+5SVg7zmNpRQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, From 7d459a513ef512555fd3a17fe240730fde25becc Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 1 Jan 2018 16:28:00 -0800 Subject: [PATCH 53/55] Countdown.ipynb updated with Littman Countdown --- ipynb/Countdown.ipynb | 826 ++++++++++++++++++++++++------------------ 1 file changed, 464 insertions(+), 362 deletions(-) diff --git a/ipynb/Countdown.ipynb b/ipynb/Countdown.ipynb index bf97dd4..dc61328 100644 --- a/ipynb/Countdown.ipynb +++ b/ipynb/Countdown.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Peter Norvig
5 January 2016
" + ] + }, { "cell_type": "markdown", "metadata": { @@ -10,11 +17,9 @@ } }, "source": [ - "
Peter Norvig
5 January 2016
\n", - "\n", "# Countdown to 2016\n", "\n", - "Alex Bellos [posed](http://www.theguardian.com/science/2016/jan/04/can-you-solve-it-complete-the-equation-10-9-8-7-6-5-4-3-2-1-2016) this New Year's puzzle:\n", + "In 2016 Alex Bellos [posed](http://www.theguardian.com/science/2016/jan/04/can-you-solve-it-complete-the-equation-10-9-8-7-6-5-4-3-2-1-2016) this New Year's puzzle:\n", "\n", "\n", "> Fill in the blanks so that this equation makes arithmetical sense:\n", @@ -354,6 +359,7 @@ "execution_count": 7, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -503,8 +509,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 29.1 s, sys: 713 ms, total: 29.8 s\n", - "Wall time: 29.8 s\n" + "CPU times: user 30.1 s, sys: 767 ms, total: 30.9 s\n", + "Wall time: 31 s\n" ] }, { @@ -600,6 +606,7 @@ "execution_count": 12, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -784,8 +791,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1min 4s, sys: 1.12 s, total: 1min 5s\n", - "Wall time: 1min 5s\n" + "CPU times: user 1min 4s, sys: 1.15 s, total: 1min 6s\n", + "Wall time: 1min 6s\n" ] }, { @@ -1024,7 +1031,7 @@ "\n", "def expr(numbers, value, exp, count):\n", " \"Fill EXPS[numbers][val] with exp, and increment COUNTS.\"\n", - " if numbers == c10 and value != 2016: \n", + " if numbers is c10 and value != 2016: \n", " return\n", " EXPS[numbers][value] = exp\n", " COUNTS[numbers][value] += count" @@ -1058,8 +1065,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 12min 25s, sys: 1.44 s, total: 12min 26s\n", - "Wall time: 12min 27s\n" + "CPU times: user 12min 43s, sys: 1.82 s, total: 12min 45s\n", + "Wall time: 12min 46s\n" ] }, { @@ -1112,7 +1119,7 @@ "- **Irrationals**: `(3 ** (1 / 2))` is an irrational number; so we can't do exact rational arithmetic.\n", "- **Imaginaries**: `(-1 ** (1 / 2))` is an imaginary number, but Python gives a `ValueError`.\n", "- **Overflow**: `(10. ** (9. ** 8.))`, as a `float`, gives a `OverflowError`.\n", - "- **Finite memory**: [`(10 ** (9 ** (8 * 7)))`](http://www.wolframalpha.com/input/?i=10+%5E+9+%5E+56), as an `int`, gives an `OutOfMemoryError` (even if your memory was expanded to use every atom on Earth).\n", + "- **Finite memory**: [`(10 ** (9 ** (8 * 7)))`](http://www.wolframalpha.com/input/?i=10+%5E+9+%5E+56), as an `int`, gives an `OutOfMemoryError` (even if your memory uses every atom on Earth).\n", "\n", "How do we deal with this? We can't do exact rational arithmetic. We could try to do exact *algebra*, perhaps using [SymPy](http://www.sympy.org/en/index.html), but that seems difficult\n", "and computationally expensive, so instead I will abandon the goal of exact computation, and do everything in the domain of floats (reluctantly accepting that there will be some round-off errors). We'll coerce numbers to floats when we first put them in the table, and all subsequent operations will be with floats. I define a new function, `expr2`, to call `expr`, catching arithmetic errors. Since we are making some rather arbitrary decisions about what expressions are allowed (e.g. imaginary numbers are not), I'll give up on trying to maintain `COUNTS`." @@ -1123,6 +1130,7 @@ "execution_count": 23, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1218,6 +1226,7 @@ "execution_count": 25, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1356,21 +1365,21 @@ "\n", "- **digit concatenation**: `55`\n", "- **decimal point**: `.5`\n", - "- **unary operations**: `5!` and √ `5`\n", + "- **unary operations**: `-5`, `5!` and √ `5`\n", "\n", "\n", "We'll refactor `expressions` to call these three new subfunctions:\n", "\n", "- `digit_expressions`: For every subsequence of numbers, we'll smush the digits together, and then make a table entry for those resulting digits as an integer, and with a decimal point in each possible position.\n", "- `binary_expressions`: The code that previously was the main body of `expressions`.\n", - "- `unary_expressions`: Apply the unary operators to every entry in the table. (Because it applies to entries already in the table, make sure to call `unary_expressions` last.)\n", + "- `unary_expressions`: Apply the unary operators to every entry in the table. \n", "\n", "We'll still do all computation in the domain of floats." ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 67, "metadata": { "button": false, "new_sheet": false, @@ -1393,10 +1402,19 @@ "def digit_expressions(numbers):\n", " \"Fill tables with expressions made from the digits of numbers, and a decimal point.\"\n", " exp = ''.join(str(n) for n in numbers)\n", - " expr(numbers, float(exp), exp)\n", + " leading_zero = exp.startswith('0')\n", + " if valid_digits(exp):\n", + " expr(numbers, float(exp), exp)\n", + " expr(numbers, -float(exp), '-' + exp)\n", " for d in range(len(exp)):\n", " decimal = exp[:d] + '.' + exp[d:]\n", - " expr(numbers, float(decimal), decimal)\n", + " if valid_digits(exp[:d]):\n", + " expr(numbers, float(decimal), decimal)\n", + " expr(numbers, -float(decimal), '-' + decimal)\n", + " \n", + "def valid_digits(digits):\n", + " \"Allow '0', but not '012'.\"\n", + " return digits == '0' or digits == '' or digits[0] != '0'\n", " \n", "def binary_expressions(numbers):\n", " \"Fill tables with all expressions formed by splitting numbers and combining with an op.\"\n", @@ -1411,8 +1429,10 @@ " expr2(numbers, L, sub, R, Lexp + '-' + Rexp)\n", " \n", "def unary_expressions(numbers):\n", - " for v in list(EXPS[numbers]):\n", + " \"Fill tables for -v, √v and v!\"\n", + " for v in tuple(EXPS[numbers]):\n", " exp = EXPS[numbers][v]\n", + " expr(numbers, -v, '-(' + exp + ')')\n", " if v > 0: \n", " expr(numbers, sqrt(v), '√' + exp)\n", " if 2 <= v <= 6 and v == int(v):\n", @@ -1429,12 +1449,12 @@ } }, "source": [ - "Now that we have more variety in the types of expressions formed, I want to choose a \"good\" expression to represent each value. I'll modify `expr` so that when there are multiple expressions for a value, it chooses the one with the least \"weight,\" where I define `weight` as the length of the string, plus a penalty of 1 for every square root sign (just because square root feels \"heavier\" than the other operations):" + "Now that we have more variety in the types of expressions formed, I want to choose a \"good\" expression to represent each value. I'll modify `expr` so that when there are multiple expressions for a value, it chooses the one with the least \"weight,\" where I define `weight` as the length of the string, plus a penalty of 2 for every square root sign (just because square root feels \"heavier\" than the other operations) and of 1 for every decimal point." ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 68, "metadata": { "button": false, "collapsed": true, @@ -1446,10 +1466,11 @@ "outputs": [], "source": [ "def expr(numbers, value, exp): \n", + " \"Fill EXPS[numbers][val] with exp, unless we already have a lighter exp.\"\n", " if value not in EXPS[numbers] or weight(exp) < weight(EXPS[numbers][value]):\n", " EXPS[numbers][value] = exp\n", " \n", - "def weight(exp): return len(exp) + exp.count('√')" + "def weight(exp): return len(exp) + 2 * exp.count('√') + exp.count('.') " ] }, { @@ -1467,7 +1488,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 69, "metadata": { "button": false, "new_sheet": false, @@ -1480,8 +1501,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 43.5 s, sys: 1.44 s, total: 45 s\n", - "Wall time: 45 s\n" + "CPU times: user 1min 56s, sys: 2.4 s, total: 1min 59s\n", + "Wall time: 1min 59s\n" ] }, { @@ -1490,23 +1511,23 @@ "{0: '(5*(55-55))',\n", " 1: '((55/55)**5)',\n", " 2: '(55/(.5*55))',\n", - " 3: '√(5!-(555/5))',\n", + " 3: '(5-(5!/(5+55)))',\n", " 4: '(5-(55/55))',\n", - " 5: '(5.55-.55)',\n", + " 5: '(5+(55-55))',\n", " 6: '(5+(55/55))',\n", " 7: '(((5+55)/5)-5)',\n", - " 8: '(.5*(5+(55/5)))',\n", + " 8: '(((5!-55)/5)-5)',\n", " 9: '(5!-(555/5))',\n", " 10: '(5!-(55+55))',\n", - " 11: '(5.5/(5.5-5))',\n", + " 11: '(5+((55/5)-5))',\n", " 12: '(5!/(55/5.5))',\n", " 13: '((5+(5+55))/5)',\n", " 14: '((5*5)-(55/5))',\n", " 15: '(5+(55/5.5))',\n", - " 16: '(5+(5.5+5.5))',\n", + " 16: '(((5*5)+55)/5)',\n", " 17: '(5+((5+55)/5))',\n", " 18: '(5+((5!-55)/5))',\n", - " 19: '((5*5)-(.5+5.5))',\n", + " 19: '((5*5)-(5+(5/5)))',\n", " 20: '(55/(5*.55))',\n", " 21: '(5+(5+(55/5)))',\n", " 22: '((55+55)/5)',\n", @@ -1515,8 +1536,8 @@ " 25: '(55-(5+(5*5)))',\n", " 26: '(55-(5+(5!/5)))',\n", " 27: '(.5*(55-(5/5)))',\n", - " 28: '(.5*(.5+55.5))',\n", - " 29: '(5+(5!/(5.5-.5)))',\n", + " 28: '(.5*((5/5)+55))',\n", + " 29: '(5+((5*5)-(5/5)))',\n", " 30: '(5*((55/5)-5))',\n", " 31: '(55-(5-(5/5))!)',\n", " 32: '(55-((5!-5)/5))',\n", @@ -1526,45 +1547,45 @@ " 36: '((5*5)+(55/5))',\n", " 37: '((5!+(5!-55))/5)',\n", " 38: '(5+(.5*(5!*.55)))',\n", - " 39: '(((5*5)-5.5)/.5)',\n", + " 39: '(5+(5+(5+(5!/5))))',\n", " 40: '(55-(5+(5+5)))',\n", " 41: '(5!-((5!/5)+55))',\n", - " 42: '((5+5.5)/(.5*.5))',\n", + " 42: '((5!*.55)-(5!/5))',\n", " 43: '(55-(5!/(5+5)))',\n", " 44: '(55-(55/5))',\n", " 45: '((5*5!)-555)',\n", - " 46: '(55-((5-.5)/.5))',\n", + " 46: '((5!+(55/.5))/5)',\n", " 47: '((5!/5)+((5!-5)/5))',\n", " 48: '(5!/(5*(5.5-5)))',\n", - " 49: '(55-(.5+5.5))',\n", + " 49: '(55-(5+(5/5)))',\n", " 50: '(55.5-5.5)',\n", - " 51: '(.5+(55.5-5))',\n", + " 51: '((5/5)+(55-5))',\n", " 52: '(55-(.5+(.5*5)))',\n", - " 53: '(55.5-(.5*5))',\n", + " 53: '(55-((5+5)/5))',\n", " 54: '(((5*55)-5)/5)',\n", " 55: '(.5*(55+55))',\n", " 56: '((5+(5*55))/5)',\n", " 57: '(55+((5+5)/5))',\n", " 58: '((.5*5)+55.5)',\n", " 59: '(5+(55-(5/5)))',\n", - " 60: '(5+(55.5-.5))',\n", + " 60: '(5+(5+(55-5)))',\n", " 61: '(5.5+55.5)',\n", " 62: '((55-(5!/5))/.5)',\n", " 63: '(5.5+(.5*(5!-5)))',\n", - " 64: '(5!-(.5+55.5))',\n", - " 65: '(.5+(5!-55.5))',\n", + " 64: '(5!-((5/5)+55))',\n", + " 65: '(5*((5!-55)/5))',\n", " 66: '(55+(55/5))',\n", " 67: '(55+(5!/(5+5)))',\n", " 68: '(5.5+(.5*(5+5!)))',\n", " 69: '(5!-((.5+(5*5))/.5))',\n", " 70: '(5+(5+(5+55)))',\n", " 71: '((.5*5!)+(55/5))',\n", - " 72: '((.5+5.5)!/(5+5))',\n", - " 73: '((5*5)+(5!/(.5*5)))',\n", + " 72: '((5+(5/5))!/(5+5))',\n", + " 73: '((5*5)+((5!+5!)/5))',\n", " 74: '((5!/5)+(55-5))',\n", " 75: '((5*5)+(55-5))',\n", " 76: '(5+(5+(5!*.55)))',\n", - " 77: '(5+(.5*(5!+(5!/5))))',\n", + " 77: '(5+(5!-((5!+5!)/5)))',\n", " 78: '(55+((5!-5)/5))',\n", " 79: '(55+(5-(5/5))!)',\n", " 80: '(5*(5+(55/5)))',\n", @@ -1581,22 +1602,22 @@ " 91: '((5*5)+(5!*.55))',\n", " 92: '(5!-(.5+(.5*55)))',\n", " 93: '(.5+(5!-(.5*55)))',\n", - " 94: '(5!-((5/5)+(5*5)))',\n", + " 94: '(5!-((5*5)+(5/5)))',\n", " 95: '(((55-5)/.5)-5)',\n", - " 96: '(5!-(5!/(5.5-.5)))',\n", + " 96: '(5!-((5*5)-(5/5)))',\n", " 97: '(5!-((5!/5)-(5/5)))',\n", " 98: '(5!-(55/(.5*5)))',\n", " 99: '((55-5.5)/.5)',\n", " 100: '((55/.5)-(5+5))',\n", " 101: '((55.5-5)/.5)',\n", " 102: '(5+(5!-((5!-5)/5)))',\n", - " 103: '(55+(5!/(.5*5)))',\n", + " 103: '(55+((5!+5!)/5))',\n", " 104: '(5!-(5+(55/5)))',\n", " 105: '(55+(55-5))',\n", " 106: '((555/5)-5)',\n", " 107: '(5!-((5!-55)/5))',\n", " 108: '(5!-((5+55)/5))',\n", - " 109: '(5!-(5.5+5.5))',\n", + " 109: '(((5*5!)-55)/5)',\n", " 110: '((555-5)/5)',\n", " 111: '(555/√(5*5))',\n", " 112: '((5+555)/5)',\n", @@ -1604,39 +1625,39 @@ " 114: '(5+(5!-(55/5)))',\n", " 115: '(5+(55+55))',\n", " 116: '(5+(555/5))',\n", - " 117: '(5!-(5.5-(.5*5)))',\n", + " 117: '(5!-(5-((5+5)/5)))',\n", " 118: '(5!-(5!/(5+55)))',\n", " 119: '(5!-(55/55))',\n", - " 120: '(5.55-.55)!',\n", + " 120: '(5!+(55-55))',\n", " 121: '(5!+(55/55))',\n", " 122: '(5!+(5!/(5+55)))',\n", - " 123: '(5!+(5.5-(.5*5)))',\n", - " 124: '(5!+√(5+(55/5)))',\n", + " 123: '(5+(5!-((5+5)/5)))',\n", + " 124: '((5*(5*5))-(5/5))',\n", " 125: '(.5*(5*(55-5)))',\n", " 126: '(5!+((55/5)-5))',\n", - " 127: '((5!/(5/5.5))-5)',\n", - " 128: '(5!+(5.5+(.5*5)))',\n", + " 127: '((5!*(5.5/5))-5)',\n", + " 128: '(5!+(5!/(5+(5+5))))',\n", " 129: '((5!-55.5)/.5)',\n", " 130: '(5!+(55/5.5))',\n", - " 131: '(5!+(5.5+5.5))',\n", - " 132: '(5!*(.55+.55))',\n", + " 131: '((55+(5*5!))/5)',\n", + " 132: '(5!+((5+55)/5))',\n", " 133: '(5!+((5!-55)/5))',\n", " 134: '((5!/5)+(55/.5))',\n", " 135: '((5!+555)/5)',\n", " 136: '(5+(5!+(55/5)))',\n", - " 137: '(5+(5!/(5/5.5)))',\n", + " 137: '(5+(5!*(5.5/5)))',\n", " 138: '(.5+(.5*(5*55)))',\n", - " 139: '(((.5+5.5)!/5)-5)',\n", + " 139: '(((5+(5/5))!/5)-5)',\n", " 140: '(.5*(5+(5*55)))',\n", " 141: '(5!+((5+5.5)/.5))',\n", " 142: '(5!+(55/(.5*5)))',\n", - " 143: '(((.5+5.5)!-5)/5)',\n", + " 143: '(((5+(5/5))!-5)/5)',\n", " 144: '(((55/5)-5)!/5)',\n", " 145: '(5!+(.5*(55-5)))',\n", - " 146: '(5!+((5/5)+(5*5)))',\n", + " 146: '(5!+((5*5)+(5/5)))',\n", " 147: '(5!+((.5*55)-.5))',\n", " 148: '(.5+(5!+(.5*55)))',\n", - " 149: '(5+((.5+5.5)!/5))',\n", + " 149: '(5+((5+(5/5))!/5))',\n", " 150: '(5*(55-(5*5)))',\n", " 151: '(5!+(55-(5!/5)))',\n", " 152: '(5!+(((5+5)/5)**5))',\n", @@ -1646,7 +1667,7 @@ " 156: '((5!+(5!*5.5))/5)'}" ] }, - "execution_count": 30, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -1667,7 +1688,9 @@ } }, "source": [ - "Wow! We almost tripled the 55 goal! I have to say, I would never have come up with the solution for 81 on my own. It works because (√(5 - .5) \\* √0.5) = √(4.5 \\* 0.5) = (√2.25) = 1.5." + "Wow! We almost tripled the 55 goal! \n", + "\n", + "I have to say, I would never have come up with the solution for 81 on my own. It works because (√(5 - .5) \\* √.5) = √(4.5 \\* 0.5) = (√2.25) = 1.5." ] }, { @@ -1682,7 +1705,7 @@ "source": [ "# Even More Operations \n", "\n", - "At the risk of making the computation take even longer, I'm going to add two more operations:\n", + "At the risk of making the computation take even longer, I'm going to add two more unary operations:\n", "\n", "- **Floor**: ⌊*x*⌋ is the largest integer less than or equal to *x* (in other words, rounding down).\n", "- **Ceiling**: ⌈*x*⌉ is the smallest integer greater than or equal to *x* (in other words, rounding up).\n", @@ -1703,7 +1726,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 70, "metadata": { "button": false, "collapsed": true, @@ -1716,15 +1739,19 @@ "source": [ "from math import floor, ceil\n", "\n", + "floor_ceil_allowed = True # Should we allow floor and ceil?\n", + "\n", "def unary_expressions(numbers):\n", + " \"Fill tables for -v, √v and v!, ⌊x⌋, and ⌈x⌉\"\n", " for i in range(2):\n", " for v in list(EXPS[numbers]):\n", " exp = EXPS[numbers][v]\n", + " expr(numbers, -v, '-(' + exp + ')')\n", " if 0 < v <= 100 and 4*v == round(4*v):\n", " expr(numbers, sqrt(v), '√' + exp)\n", " if 2 <= v <= 6 and v == round(v):\n", " expr(numbers, factorial(v), exp + '!')\n", - " if v != round(v):\n", + " if floor_ceil_allowed and v != round(v):\n", " uexp = unbracket(exp)\n", " expr(numbers, floor(v), '⌊' + uexp + '⌋')\n", " expr(numbers, ceil(v), '⌈' + uexp + '⌉')\n", @@ -1752,7 +1779,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 71, "metadata": { "button": false, "new_sheet": false, @@ -1765,72 +1792,72 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2min 25s, sys: 1.42 s, total: 2min 26s\n", - "Wall time: 2min 26s\n" + "CPU times: user 6min 54s, sys: 2.69 s, total: 6min 57s\n", + "Wall time: 6min 58s\n" ] }, { "data": { "text/plain": [ - "{0: '⌊.55555⌋',\n", - " 1: '⌈.55555⌉',\n", + "{0: '⌊5/5555⌋',\n", + " 1: '⌈5/5555⌉',\n", " 2: '⌊5*.5555⌋',\n", " 3: '⌈5*.5555⌉',\n", " 4: '⌊5-.5555⌋',\n", " 5: '⌊5.5555⌋',\n", " 6: '⌈5.5555⌉',\n", " 7: '⌈.5+5.555⌉',\n", - " 8: '⌈√55+.555⌉',\n", - " 9: '⌊55/5.55⌋',\n", + " 8: '(5+⌈5*.555⌉)',\n", + " 9: '⌊5/.5555⌋',\n", " 10: '⌊555/55⌋',\n", " 11: '⌈555/55⌉',\n", " 12: '⌈55.55/5⌉',\n", - " 13: '⌈√5*5.555⌉',\n", - " 14: '⌈√55/.555⌉',\n", + " 13: '⌊55/⌊5-.55⌋⌋',\n", + " 14: '(5+⌊5/.555⌋)',\n", " 15: '(5+(55/5.5))',\n", " 16: '(5+⌊55.5/5⌋)',\n", " 17: '(5+⌈55.5/5⌉)',\n", - " 18: '⌊55/⌈5*.55⌉⌋',\n", - " 19: '⌈55/⌈5*.55⌉⌉',\n", - " 20: '(5*⌊5-.555⌋)',\n", + " 18: '⌊55/⌈5!/55⌉⌋',\n", + " 19: '⌈55/⌈5!/55⌉⌉',\n", + " 20: '(5*⌊555/5!⌋)',\n", " 21: '⌊5!/5.555⌋',\n", - " 22: '⌈5!/5.555⌉',\n", + " 22: '((55+55)/5)',\n", " 23: '⌈555/(5*5)⌉',\n", " 24: '⌊5-.5555⌋!',\n", - " 25: '(5*⌊5.555⌋)',\n", - " 26: '(⌈.55*55⌉-5)',\n", + " 25: '(5*⌈555/5!⌉)',\n", + " 26: '⌈55*(55/5!)⌉',\n", " 27: '⌊5*5.555⌋',\n", " 28: '⌈5*5.555⌉',\n", - " 29: '(5+⌊5-.555⌋!)',\n", + " 29: '(5+⌊555/5!⌋!)',\n", " 30: '⌊55*.555⌋',\n", " 31: '⌈55*.555⌉',\n", " 32: '(5+⌊5*5.55⌋)',\n", " 33: '(5+⌈5*5.55⌉)',\n", - " 34: '⌈⌈5.5⌉*5.55⌉',\n", + " 34: '(55-⌊5!/5.5⌋)',\n", " 35: '(5+⌊.55*55⌋)',\n", " 36: '(5+⌈.55*55⌉)',\n", " 37: '⌊5*(55/√55)⌋',\n", - " 38: '⌊⌊√55⌋*5.55⌋',\n", - " 39: '⌊√.5*55.55⌋',\n", - " 40: '⌊5.5*√55.5⌋',\n", + " 38: '⌈5*(55/√55)⌉',\n", + " 39: '(55-⌊5!/√55⌋)',\n", + " 40: '(5*⌈55/√55⌉)',\n", " 41: '⌊√55*5.55⌋',\n", " 42: '⌈√55*5.55⌉',\n", " 43: '(55-⌊5+√55⌋)',\n", " 44: '(55-(55/5))',\n", - " 45: '(5*⌊5/.555⌋)',\n", + " 45: '((5*5!)-555)',\n", " 46: '⌊5555/5!⌋',\n", " 47: '⌈5555/5!⌉',\n", " 48: '⌈55-√55.5⌉',\n", " 49: '⌊55-5.55⌋',\n", " 50: '⌊55.55-5⌋',\n", " 51: '⌈55.55-5⌉',\n", - " 52: '(55-⌈5*.55⌉)',\n", - " 53: '⌊55.55-√5⌋',\n", + " 52: '(55-⌈5!/55⌉)',\n", + " 53: '(55-⌊5!/55⌋)',\n", " 54: '⌊55-.555⌋',\n", " 55: '⌊55.555⌋',\n", " 56: '⌈55.555⌉',\n", - " 57: '⌈.5+55.55⌉',\n", - " 58: '⌈√5+55.55⌉',\n", + " 57: '(55+⌊5!/55⌋)',\n", + " 58: '(55+⌈5!/55⌉)',\n", " 59: '(5+⌊55-.55⌋)',\n", " 60: '⌊5+55.55⌋',\n", " 61: '⌈5+55.55⌉',\n", @@ -1838,7 +1865,7 @@ " 63: '⌈√55+55.5⌉',\n", " 64: '⌊5!-55.55⌋',\n", " 65: '⌈5!-55.55⌉',\n", - " 66: '⌊5!*.5555⌋',\n", + " 66: '(55+(55/5))',\n", " 67: '⌈5!*.5555⌉',\n", " 68: '(5+⌈55+√55⌉)',\n", " 69: '⌊555/⌈√55⌉⌋',\n", @@ -1850,17 +1877,17 @@ " 75: '⌈555/√55⌉',\n", " 76: '(55+⌊5!/5.5⌋)',\n", " 77: '(55+⌈5!/5.5⌉)',\n", - " 78: '⌊55.55/√.5⌋',\n", + " 78: '(55+((5!-5)/5))',\n", " 79: '⌊555/⌊√55⌋⌋',\n", " 80: '⌊(5*5)+55.5⌋',\n", " 81: '⌈(5*5)+55.5⌉',\n", " 82: '(55+⌊.5*55⌋)',\n", " 83: '(55+⌈.5*55⌉)',\n", " 84: '(5+((5!/5)+55))',\n", - " 85: '(5+(55+(5*5)))',\n", - " 86: '⌊⌈5+55.5⌉/√.5⌋',\n", + " 85: '(5+((5*5)+55))',\n", + " 86: '(5!-⌈5**(5!/55)⌉)',\n", " 87: '((555-5!)/5)',\n", - " 88: '⌈√5**5.555⌉',\n", + " 88: '⌈5**(5*.555)⌉',\n", " 89: '(5!-⌈.55*55⌉)',\n", " 90: '⌊(55-5)/.55⌋',\n", " 91: '⌈(55-5)/.55⌉',\n", @@ -1868,14 +1895,14 @@ " 93: '⌈555/⌈5.5⌉⌉',\n", " 94: '(⌊55/.55⌋-5)',\n", " 95: '(⌈55/.55⌉-5)',\n", - " 96: '⌊.55*(5!+55)⌋',\n", + " 96: '(5!-⌊555/5!⌋!)',\n", " 97: '⌈.55*(5!+55)⌉',\n", - " 98: '(⌊55-5.5⌋/.5)',\n", + " 98: '(5!-⌈5!/5.55⌉)',\n", " 99: '⌊55/.555⌋',\n", " 100: '⌊555/5.5⌋',\n", " 101: '⌈555/5.5⌉',\n", " 102: '⌈⌈55.5⌉/.55⌉',\n", - " 103: '⌊⌊√5+55⌋/.55⌋',\n", + " 103: '(55+((5!+5!)/5))',\n", " 104: '(5+⌊55/.55⌋)',\n", " 105: '(55+(55-5))',\n", " 106: '((555/5)-5)',\n", @@ -1887,7 +1914,7 @@ " 112: '⌈555.5/5⌉',\n", " 113: '(55+⌈√5+55⌉)',\n", " 114: '⌊5!-5.555⌋',\n", - " 115: '⌈5!-5.555⌉',\n", + " 115: '(5+(55+55))',\n", " 116: '(5+(555/5))',\n", " 117: '(5!-⌈5*.555⌉)',\n", " 118: '(5!-⌈5.55/5⌉)',\n", @@ -1896,20 +1923,20 @@ " 121: '⌈5!+.5555⌉',\n", " 122: '(5!+⌈5.55/5⌉)',\n", " 123: '⌊555/(5-.5)⌋',\n", - " 124: '⌊√5*55.55⌋',\n", + " 124: '(5!+⌊555/5!⌋)',\n", " 125: '⌊5!+5.555⌋',\n", " 126: '⌈5!+5.555⌉',\n", - " 127: '⌊⌊5**5.5⌋/55⌋',\n", - " 128: '⌈⌊5**5.5⌋/55⌉',\n", + " 127: '⌊(5**5.5)/55⌋',\n", + " 128: '⌈(5**5.5)/55⌉',\n", " 129: '(5!+⌊5/.555⌋)',\n", - " 130: '⌊√5.5*55.5⌋',\n", - " 131: '⌈√5.5*55.5⌉',\n", + " 130: '(5+⌊5!+5.55⌋)',\n", + " 131: '(5+⌈5!+5.55⌉)',\n", " 132: '(5!+⌈55.5/5⌉)',\n", " 133: '⌈55*(√55-5)⌉',\n", - " 134: '⌊55*√⌈5.55⌉⌋',\n", - " 135: '(5*⌊5*5.55⌋)',\n", - " 136: '⌈√⌈5.5⌉*55.5⌉',\n", - " 137: '⌊5.5*⌈55/√5⌉⌋',\n", + " 134: '⌈5!*(5.55/5)⌉',\n", + " 135: '((5!+555)/5)',\n", + " 136: '(5+(5!+(55/5)))',\n", + " 137: '⌊5*(55/⌊.5*5⌋)⌋',\n", " 138: '⌊5*(5*5.55)⌋',\n", " 139: '⌈5*(5*5.55)⌉',\n", " 140: '(5*⌈5*5.55⌉)',\n", @@ -1925,21 +1952,21 @@ " 150: '(5*⌊.55*55⌋)',\n", " 151: '⌊.55*(5*55)⌋',\n", " 152: '⌈.55*(5*55)⌉',\n", - " 153: '⌊55*(√5+.55)⌋',\n", + " 153: '⌈5*(5.5+(5*5))⌉',\n", " 154: '(5.5*⌈.5*55⌉)',\n", " 155: '(5*⌈.55*55⌉)',\n", - " 156: '⌈(55+55)/√.5⌉',\n", + " 156: '⌊555/(5*√.5)⌋',\n", " 157: '(⌊.5*555⌋-5!)',\n", " 158: '(⌈.5*555⌉-5!)',\n", - " 159: '(5!+⌊√.5*55.5⌋)',\n", - " 160: '(5*(5+⌊.5*55⌋))',\n", + " 159: '⌊5.5*(5+(5!/5))⌋',\n", + " 160: '(5+((5*55)-5!))',\n", " 161: '⌊(.5*5)**5.55⌋',\n", - " 162: '⌈(.5*5)**5.55⌉',\n", + " 162: '⌊5*(5+(.5*55))⌋',\n", " 163: '(⌊5!/.55⌋-55)',\n", " 164: '(⌈5!/.55⌉-55)',\n", - " 165: '(55*⌈5*.55⌉)',\n", - " 166: '⌊⌈.5*5⌉*55.5⌋',\n", - " 167: '⌈⌈.5*5⌉*55.5⌉',\n", + " 165: '(55*⌈5!/55⌉)',\n", + " 166: '⌊5.5**⌈5!/55⌉⌋',\n", + " 167: '(5!+⌊55-√55⌋)',\n", " 168: '(5!+⌈55-√55⌉)',\n", " 169: '(5!+⌊55-5.5⌋)',\n", " 170: '(5!+⌊55.5-5⌋)',\n", @@ -1958,36 +1985,36 @@ " 183: '(⌈5.5*55⌉-5!)',\n", " 184: '(5!+⌊5!-55.5⌋)',\n", " 185: '(555/⌈.5*5⌉)',\n", - " 186: '⌈555.5/⌈√5⌉⌉',\n", + " 186: '(5!+⌊5!*.555⌋)',\n", " 187: '(5!+⌈5!*.555⌉)',\n", " 188: '((⌈.5*5⌉**5)-55)',\n", - " 189: '(⌊√55⌋*⌊.5*55⌋)',\n", + " 189: '⌊√(5+5)*(5+55)⌋',\n", " 190: '(5*⌈5*√55.5⌉)',\n", - " 191: '⌈55*√⌊5+√55⌋⌉',\n", + " 191: '(5+⌈5*(5*√55)⌉)',\n", " 192: '(⌈5.55⌉/(.5**5))',\n", - " 193: '⌊5!**(.55+.55)⌋',\n", + " 193: '(⌊5!/.55⌋-(5*5))',\n", " 194: '⌊(555-5!)/√5⌋',\n", " 195: '⌈(555-5!)/√5⌉',\n", - " 196: '(.5*⌊√.5*555⌋)',\n", - " 197: '⌈.5*⌈√.5*555⌉⌉',\n", + " 196: '⌊555/√⌈√5+5⌉⌋',\n", + " 197: '⌊.5*(5!+(5*55))⌋',\n", " 198: '(⌊55/.55⌋/.5)',\n", " 199: '⌊55/(.5*.55)⌋',\n", - " 200: '(⌈55/.55⌉/.5)',\n", + " 200: '⌊555/(5-√5)⌋',\n", " 201: '⌈555/(5-√5)⌉',\n", " 202: '⌊555/(.5+√5)⌋',\n", - " 203: '⌊.5*⌊55*√55⌋⌋',\n", - " 204: '(.5*⌈55*√55⌉)',\n", + " 203: '⌊5!**(5.55/5)⌋',\n", + " 204: '⌈5!**(5.55/5)⌉',\n", " 205: '(5*⌈5.5*√55⌉)',\n", " 206: '⌈⌈5!-√55⌉/.55⌉',\n", " 207: '⌊(5!-5)/.555⌋',\n", " 208: '⌈(5!-5)/.555⌉',\n", " 209: '(5.5*⌈5*√55⌉)',\n", - " 210: '⌈⌈5!-5.5⌉/.55⌉',\n", + " 210: '((⌈5.5⌉*55)-5!)',\n", " 211: '(⌊5!/.555⌋-5)',\n", " 212: '(⌈5!/.555⌉-5)',\n", - " 213: '⌈⌊5!/.55⌋-5.5⌉',\n", + " 213: '⌊⌈5!/.55⌉-5.5⌋',\n", " 214: '⌈⌈5!/.55⌉-5.5⌉',\n", - " 215: '⌊⌊5!/.555⌋-.5⌋',\n", + " 215: '((⌊5-.5⌋*55)-5)',\n", " 216: '⌊5!/.5555⌋',\n", " 217: '⌈5!/.5555⌉',\n", " 218: '⌈.5*(555-5!)⌉',\n", @@ -1997,15 +2024,15 @@ " 222: '(555/(.5*5))',\n", " 223: '⌊5.5+⌊5!/.55⌋⌋',\n", " 224: '⌊5.5+⌈5!/.55⌉⌋',\n", - " 225: '⌊(5+5!)/.555⌋',\n", + " 225: '(5*(55-(5+5)))',\n", " 226: '⌈(5+5!)/.555⌉',\n", " 227: '⌈555/√⌈5.5⌉⌉',\n", " 228: '(⌊5!-5.55⌋/.5)',\n", - " 229: '⌈(5!-5.55)/.5⌉',\n", + " 229: '(5!+(5!-(55/5)))',\n", " 230: '(5!+(55+55))',\n", " 231: '(5!+(555/5))',\n", - " 232: '⌈(5!+√55)/.55⌉',\n", - " 233: '⌈⌈5!+√55⌉/.55⌉',\n", + " 232: '(5+⌊(5+5!)/.55⌋)',\n", + " 233: '(5+⌈(5+5!)/.55⌉)',\n", " 234: '(5!+⌊5!-5.55⌋)',\n", " 235: '(5*⌊55-√55⌋)',\n", " 236: '⌊555/√5.5⌋',\n", @@ -2014,13 +2041,13 @@ " 239: '(5!+⌊5!-.555⌋)',\n", " 240: '(5*⌈55-√55⌉)',\n", " 241: '(5!+⌈5!+.555⌉)',\n", - " 242: '(⌈5!+.555⌉/.5)',\n", + " 242: '(⌊(5-.5)*55⌋-5)',\n", " 243: '(⌈5*.555⌉**5)',\n", " 244: '⌊55*(5-.55)⌋',\n", " 245: '(5*⌊55-5.5⌋)',\n", " 246: '⌈(555-5)/√5⌉',\n", " 247: '⌊5*(55-5.5)⌋',\n", - " 248: '⌊555.5/√5⌋',\n", + " 248: '⌈5*(55-5.5)⌉',\n", " 249: '⌈555.5/√5⌉',\n", " 250: '(5*⌊55.5-5⌋)',\n", " 251: '⌈(5+555)/√5⌉',\n", @@ -2028,17 +2055,17 @@ " 253: '⌈5*(55.5-5)⌉',\n", " 254: '(5+⌈555/√5⌉)',\n", " 255: '(5*⌈55.5-5⌉)',\n", - " 256: '(⌊55*√5.5⌋/.5)',\n", - " 257: '⌊55/(.5/√5.5)⌋',\n", - " 258: '(⌈55*√5.5⌉/.5)',\n", + " 256: '(⌊5!*(5!/55)⌋-5)',\n", + " 257: '(⌈5!*(5!/55)⌉-5)',\n", + " 258: '(5!+⌈.5*(5*55)⌉)',\n", " 259: '⌊5!/(55.5/5!)⌋',\n", - " 260: '(5*⌊55-√5.5⌋)',\n", - " 261: '⌈(5*.55)**5.5⌉',\n", - " 262: '⌈555/√(5-.5)⌉',\n", - " 263: '⌊5*(55-√5.5)⌋',\n", - " 264: '⌈5*(55-√5.5)⌉',\n", - " 265: '(5*⌈55-√5.5⌉)',\n", - " 266: '⌊5*(55.5-√5)⌋',\n", + " 260: '⌈5!/(55.5/5!)⌉',\n", + " 261: '⌊555/√(5-.5)⌋',\n", + " 262: '⌊5*(5*(5+5.5))⌋',\n", + " 263: '⌈5*(5*(5+5.5))⌉',\n", + " 264: '(5!/(5/(55/5)))',\n", + " 265: '((5*55)-(5+5))',\n", + " 266: '(5+⌊5!*(5!/55)⌋)',\n", " 267: '⌊(5*55)-√55⌋',\n", " 268: '⌈(5*55)-√55⌉',\n", " 269: '⌊(5*55)-5.5⌋',\n", @@ -2057,23 +2084,23 @@ " 282: '(5+⌊.5*555⌋)',\n", " 283: '(5+⌈.5*555⌉)',\n", " 284: '⌊5*((5**5)/55)⌋',\n", - " 285: '(5*⌊√5+55.5⌋)',\n", - " 286: '(5.5*⌊55-√5⌋)',\n", + " 285: '(5+(5+(5*55)))',\n", + " 286: '(555-⌈√5*5!⌉)',\n", " 287: '(555-⌊√5*5!⌋)',\n", " 288: '(⌈55*√55⌉-5!)',\n", - " 289: '⌈55*√(.5*55)⌉',\n", - " 290: '(5*⌈√5+55.5⌉)',\n", + " 289: '⌈5*(√5+55.5)⌉',\n", + " 290: '(5*(⌈.5*5⌉+55))',\n", " 291: '⌊5.5*⌈55-√5⌉⌋',\n", " 292: '⌈5.5*⌈55-√5⌉⌉',\n", " 293: '⌊5!*√⌈5.555⌉⌋',\n", " 294: '⌈5!*√⌈5.555⌉⌉',\n", - " 295: '(5!+⌊5!+55.5⌋)',\n", + " 295: '((5*(5+55))-5)',\n", " 296: '(5!+⌈5!+55.5⌉)',\n", " 297: '(⌊5.5*55⌋-5)',\n", " 298: '(⌈5.5*55⌉-5)',\n", - " 299: '⌊5.5*(55-.5)⌋',\n", + " 299: '((5!/5)+(5*55))',\n", " 300: '(5*⌊5+55.5⌋)',\n", - " 301: '⌊⌊5.5*55⌋-.5⌋',\n", + " 301: '⌊(5!+555)/√5⌋',\n", " 302: '⌊5*(5+55.5)⌋',\n", " 303: '⌈5*(5+55.5)⌉',\n", " 304: '⌈.5+⌈5.5*55⌉⌉',\n", @@ -2081,15 +2108,15 @@ " 306: '⌈.55*555⌉',\n", " 307: '(5+⌊5.5*55⌋)',\n", " 308: '(5+⌈5.5*55⌉)',\n", - " 309: '(⌈(√.5+5)*55⌉-5)',\n", + " 309: '(⌈(5+√.5)*55⌉-5)',\n", " 310: '(5*⌊55+√55⌋)',\n", - " 311: '⌈(√5**5)*5.55⌉',\n", + " 311: '⌈5*(5*(5+√55))⌉',\n", " 312: '⌊5*(55+√55)⌋',\n", " 313: '⌈5*(55+√55)⌉',\n", " 314: '⌈5.5*⌊√5+55⌋⌉',\n", - " 315: '(5*⌈55+√55⌉)',\n", - " 316: '⌊√(55/5.5)**5⌋',\n", - " 317: '⌈√(55/5.5)**5⌉',\n", + " 315: '(555-(5!+5!))',\n", + " 316: '⌊.55*(5*(5!-5))⌋',\n", + " 317: '⌈.55*(5*(5!-5))⌉',\n", " 318: '⌊(5!+55)/.55⌋',\n", " 319: '⌈(5!+55)/.55⌉',\n", " 320: '(5*⌊5!-55.5⌋)',\n", @@ -2097,13 +2124,13 @@ " 322: '⌊5*(5!-55.5)⌋',\n", " 323: '⌈5*(5!-55.5)⌉',\n", " 324: '(⌈5.5⌉*⌊55-.5⌋)',\n", - " 325: '(5*⌈5!-55.5⌉)',\n", + " 325: '(5*(5+(5+55)))',\n", " 326: '⌈(5!/55)**√55⌉',\n", " 327: '(⌈5.5⌉*(55-.5))',\n", - " 328: '⌈.5*(55+(5*5!))⌉',\n", - " 329: '⌊(55*⌈5.5⌉)-.5⌋',\n", - " 330: '(55*⌈5.55⌉)',\n", - " 331: '⌈.5+(55*⌈5.5⌉)⌉',\n", + " 328: '⌈.5*((5*5!)+55)⌉',\n", + " 329: '⌊(⌈5.5⌉*55)-.5⌋',\n", + " 330: '(55+(5*55))',\n", + " 331: '⌈.5+(⌈5.5⌉*55)⌉',\n", " 332: '⌊.55*(5+(5*5!))⌋',\n", " 333: '(⌈5.5⌉*55.5)',\n", " 334: '⌈5*(5!*.555)⌉',\n", @@ -2111,96 +2138,96 @@ " 336: '(5!+⌊5!/.555⌋)',\n", " 337: '⌊.5*(5!+555)⌋',\n", " 338: '⌈.5*(5!+555)⌉',\n", - " 339: '⌊55*√⌈5*√55⌉⌋',\n", - " 340: '⌈55*√⌈5*√55⌉⌉',\n", + " 339: '⌈5!*(5-(5!/55))⌉',\n", + " 340: '(5*⌊.55*(5+5!)⌋)',\n", " 341: '⌊55*(√.5+5.5)⌋',\n", - " 342: '⌈55*(√.5+5.5)⌉',\n", + " 342: '(⌈5.5⌉*⌊√5+55⌋)',\n", " 343: '⌊5*(.55*(5+5!))⌋',\n", " 344: '⌈5*(.55*(5+5!))⌉',\n", - " 345: '(5*⌈.55*(5+5!)⌉)',\n", - " 346: '(⌊55*√(5+5)⌋/.5)',\n", - " 347: '⌊5!*(.55+√5.5)⌋',\n", - " 348: '(⌈5.5⌉*⌈√5+55⌉)',\n", + " 345: '((5!-5)*⌈5!/55⌉)',\n", + " 346: '⌊√5*((5*55)-5!)⌋',\n", + " 347: '⌊(5**5)/⌊5/.55⌋⌋',\n", + " 348: '⌈(5**5)/⌊5/.55⌋⌉',\n", " 349: '(⌊(5-.55)**5⌋/5)',\n", - " 350: '(⌊5!+55.5⌋/.5)',\n", + " 350: '(5*(5+(5!-55)))',\n", " 351: '((5!+55.5)/.5)',\n", " 352: '(⌈5!+55.5⌉/.5)',\n", - " 353: '⌈⌈555/√5⌉/√.5⌉',\n", - " 354: '⌊(.5*⌈5.5⌉!)-5.5⌋',\n", - " 355: '(5*(5+(5!*.55)))',\n", - " 356: '⌈(55/5)**√⌈5.5⌉⌉',\n", + " 353: '⌈55*(√55-⌈.5⌉)⌉',\n", + " 354: '⌊(√5+⌈5/55⌉)**5⌋',\n", + " 355: '((5!*⌈5!/55⌉)-5)',\n", + " 356: '(⌈(5!+5!)*√55⌉/5)',\n", " 357: '⌊5.5*(5!-55)⌋',\n", " 358: '⌈5.5*(5!-55)⌉',\n", - " 359: '⌊.5*⌊⌈5.55⌉!-.5⌋⌋',\n", - " 360: '(.5*⌈5.555⌉!)',\n", + " 359: '⌊(5!*⌈5!/55⌉)-.5⌋',\n", + " 360: '(5!*⌈5*.555⌉)',\n", " 361: '⌊(√5+5)*(55-5)⌋',\n", - " 362: '⌊.5*(5+⌈5.55⌉!)⌋',\n", + " 362: '⌈(√5+5)*(55-5)⌉',\n", " 363: '(5.5*(5!*.55))',\n", " 364: '⌈5!*(.55*5.5)⌉',\n", - " 365: '(5+(.5*⌈5.55⌉!))',\n", - " 366: '(5!*(.55+(.5*5)))',\n", - " 367: '(5!+⌊55*(5-.5)⌋)',\n", + " 365: '(5+(5!*⌈5!/55⌉))',\n", + " 366: '(5!+(5!+⌈5!+5.5⌉))',\n", + " 367: '(5!+⌊(5-.5)*55⌋)',\n", " 368: '(5!+⌊555/√5⌋)',\n", " 369: '(5!+⌈555/√5⌉)',\n", " 370: '⌊√55*(55-5)⌋',\n", " 371: '⌈√55*(55-5)⌉',\n", " 372: '(55+⌈√(5+5)**5⌉)',\n", - " 373: '⌊55*√⌈5.5**√5⌉⌋',\n", - " 374: '⌈55*√⌈5.5**√5⌉⌉',\n", - " 375: '(5*⌈(5+5)*√55⌉)',\n", + " 373: '⌈(5-√⌈5!/55⌉)**5⌉',\n", + " 374: '(5+(⌊(5-.5)**5⌋/5))',\n", + " 375: '((5+5!)*⌈5!/55⌉)',\n", " 376: '(55+⌊⌈5.5⌉!/√5⌋)',\n", " 377: '(55+⌈⌈5.5⌉!/√5⌉)',\n", " 378: '(⌊√55⌋*⌊55-.5⌋)',\n", " 379: '⌊5!*√(55/5.5)⌋',\n", - " 380: '⌊55*(√55-.5)⌋',\n", - " 381: '⌈55*(√55-.5)⌉',\n", + " 380: '((⌊√55⌋*55)-5)',\n", + " 381: '⌊55**(√55/5)⌋',\n", " 382: '⌈55**(√55/5)⌉',\n", " 383: '(5!+⌊5*(55-√5)⌋)',\n", - " 384: '⌊(55*⌊√55⌋)-.5⌋',\n", + " 384: '(5!+⌈5*(55-√5)⌉)',\n", " 385: '(55*⌊√55.5⌋)',\n", " 386: '(555-⌊5!/√.5⌋)',\n", " 387: '(⌊√.5*555⌋-5)',\n", - " 388: '⌊⌊√55⌋*55.5⌋',\n", - " 389: '⌈⌊√55⌋*55.5⌉',\n", - " 390: '(5*⌊55.5/√.5⌋)',\n", - " 391: '⌊⌊√.5*555⌋-.5⌋',\n", + " 388: '⌊55*√(55-5)⌋',\n", + " 389: '⌈55*√(55-5)⌉',\n", + " 390: '(5!+((5*55)-5))',\n", + " 391: '⌊√5*⌊5!+55.5⌋⌋',\n", " 392: '⌊√.5*555.5⌋',\n", " 393: '⌈√.5*555.5⌉',\n", - " 394: '⌈√.5*⌈555.5⌉⌉',\n", - " 395: '⌊√.5*(5+555)⌋',\n", + " 394: '(5!+⌊(5*55)-.5⌋)',\n", + " 395: '(5*((5!/5)+55))',\n", " 396: '⌊.55*⌈5.55⌉!⌋',\n", " 397: '(5!+⌊.5*555⌋)',\n", " 398: '(5!+⌈.5*555⌉)',\n", " 399: '⌊⌈5.5⌉!*.555⌋',\n", - " 400: '⌈⌈5.5⌉!*.555⌉',\n", + " 400: '(5*((5*5)+55))',\n", " 401: '⌊(√5+5)*55.5⌋',\n", " 402: '(⌊55*√55⌋-5)',\n", " 403: '(⌈55*√55⌉-5)',\n", - " 404: '⌊√55*(55-.5)⌋',\n", - " 405: '⌈√55*(55-.5)⌉',\n", + " 404: '⌊55*√⌊55-.5⌋⌋',\n", + " 405: '⌈55*√⌊55-.5⌋⌉',\n", " 406: '⌊⌊55*√55⌋-.5⌋',\n", - " 407: '⌊55*√⌊55.5⌋⌋',\n", - " 408: '⌈55*√⌊55.5⌋⌉',\n", + " 407: '⌊⌊√55**5⌋/55⌋',\n", + " 408: '⌈⌊√55**5⌋/55⌉',\n", " 409: '⌊55*√55.5⌋',\n", " 410: '⌈55*√55.5⌉',\n", " 411: '⌊√55*55.5⌋',\n", " 412: '⌈√55*55.5⌉',\n", " 413: '(5+⌈55*√55⌉)',\n", - " 414: '⌈√55.5**⌈.5*5⌉⌉',\n", + " 414: '((5!*(5-.55))-5!)',\n", " 415: '⌊√55*⌈55.5⌉⌋',\n", " 416: '⌈√55*⌈55.5⌉⌉',\n", " 417: '⌊5*(5**(5*.55))⌋',\n", - " 418: '⌊55*√⌈√5+55⌉⌋',\n", + " 418: '⌈5*(5**(5*.55))⌉',\n", " 419: '⌊(5**5)/√55.5⌋',\n", - " 420: '⌊⌈5*.55⌉**5.5⌋',\n", - " 421: '⌈⌈5*.55⌉**5.5⌉',\n", + " 420: '(5!+(5*(5+55)))',\n", + " 421: '⌈⌈5!/55⌉**5.5⌉',\n", " 422: '(5!+⌊5.5*55⌋)',\n", " 423: '(5!+⌈5.5*55⌉)',\n", - " 424: '⌈5.5*⌊55/√.5⌋⌉',\n", - " 425: '⌊55*(√5+5.5)⌋',\n", + " 424: '⌊√55*(√5+55)⌋',\n", + " 425: '((5*5!)-(5!+55))',\n", " 426: '⌊55*√(5+55)⌋',\n", " 427: '⌈55*√(5+55)⌉',\n", - " 428: '⌊⌈5.5*55⌉/√.5⌋',\n", + " 428: '⌈55*(5-(√5-5))⌉',\n", " 429: '(5.5*⌈55/√.5⌉)',\n", " 430: '(555-(5+5!))',\n", " 431: '⌈√55*⌈√5+55⌉⌉',\n", @@ -2213,60 +2240,60 @@ " 438: '(⌈√5-5!⌉+555)',\n", " 439: '⌊(⌈√55⌉*55)-.5⌋',\n", " 440: '(5+(555-5!))',\n", - " 441: '⌈.5+(⌈√55⌉*55)⌉',\n", - " 442: '(5+⌈5!/(.5*.55)⌉)',\n", + " 441: '(5+⌊(5!+5!)/.55⌋)',\n", + " 442: '(5+⌈(5!+5!)/.55⌉)',\n", " 443: '⌊55*√(5!-55)⌋',\n", - " 444: '(⌈√55⌉*55.5)',\n", + " 444: '⌊√55*(5+55)⌋',\n", " 445: '⌈√55*(5+55)⌉',\n", " 446: '⌊55*√(5!*.55)⌋',\n", " 447: '⌊⌈√5⌉**5.555⌋',\n", " 448: '⌈⌈√5⌉**5.555⌉',\n", " 449: '⌈55*(5+√(5+5))⌉',\n", - " 450: '(5!+(55*⌈5.5⌉))',\n", + " 450: '(5!+(⌈5.5⌉*55))',\n", " 451: '⌊5!*(⌈5.55⌉-√5)⌋',\n", - " 452: '⌊55*(√5+⌈5.5⌉)⌋',\n", - " 453: '⌈55*(√5+⌈5.5⌉)⌉',\n", + " 452: '(⌊5*(5!-5.5)⌋-5!)',\n", + " 453: '(⌈5*(5!-5.5)⌉-5!)',\n", " 454: '(⌊(5+5!)/.55⌋/.5)',\n", " 455: '(⌊√55⌋*(5!-55))',\n", - " 456: '⌊5.5*⌊√5**5.5⌋⌋',\n", - " 457: '⌈5.5*⌊√5**5.5⌋⌉',\n", - " 458: '(⌊5-.5⌋*(5!-5.5))',\n", + " 456: '(5!/(5/((5!/5)-5)))',\n", + " 457: '⌊5*((5**√5)+55)⌋',\n", + " 458: '⌈5*((5**√5)+55)⌉',\n", " 459: '⌊555/(.5+√.5)⌋',\n", - " 460: '⌈555/(.5+√.5)⌉',\n", - " 461: '⌈55*√⌊√5.5**5⌋⌉',\n", - " 462: '(5.5*⌈√5**5.5⌉)',\n", + " 460: '(5*(5!-⌈.5*55⌉))',\n", + " 461: '(⌈5!*(5-√.5)⌉-55)',\n", + " 462: '⌊5*(5!-(.5*55))⌋',\n", " 463: '⌈5*(5!-(.5*55))⌉',\n", " 464: '(⌈√55⌉*⌈√5+55⌉)',\n", " 465: '(5*(5!-⌊.5*55⌋))',\n", " 466: '⌊⌊√.5*5!⌋*5.55⌋',\n", " 467: '⌊55*(.5+⌈√55⌉)⌋',\n", " 468: '(5!*(5-(5.5/5)))',\n", - " 469: '⌊55*(5+(√.5*5))⌋',\n", + " 469: '⌊55*(5+(5*√.5))⌋',\n", " 470: '(555-⌈√.5*5!⌉)',\n", " 471: '(555-⌊√.5*5!⌋)',\n", - " 472: '⌈⌈√.5*5!⌉*5.55⌉',\n", - " 473: '(5.5*⌈5**(5-√5)⌉)',\n", - " 474: '(5!*(5-(.5+.55)))',\n", + " 472: '((5*5!)-⌈5!+√55⌉)',\n", + " 473: '((5*5!)-⌊5!+√55⌋)',\n", + " 474: '((5*5!)-⌈5!+5.5⌉)',\n", " 475: '((5!*⌊5-.55⌋)-5)',\n", - " 476: '(55+⌈⌈√5⌉**5.5⌉)',\n", + " 476: '⌊⌊5!/(.55**5)⌋/5⌋',\n", " 477: '⌊√.5*(5!+555)⌋',\n", " 478: '⌈√.5*(5!+555)⌉',\n", " 479: '((5*5!)-⌈5!+.55⌉)',\n", - " 480: '(5!*⌊5-.555⌋)',\n", - " 481: '((5*5!)-⌊5!-.55⌋)',\n", + " 480: '(5!*⌊555/5!⌋)',\n", + " 481: '((5*5!)+⌈.55-5!⌉)',\n", " 482: '⌊√55*(5!-55)⌋',\n", " 483: '⌈√55*(5!-55)⌉',\n", - " 484: '⌈(√5*5!)/.555⌉',\n", - " 485: '⌊√5*⌈5!/.555⌉⌋',\n", + " 484: '⌊⌈√5*5!⌉/.555⌋',\n", + " 485: '(5+(5!*⌊5-.55⌋))',\n", " 486: '⌈√5*⌈5!/.555⌉⌉',\n", - " 487: '⌊5!/(.55**√5.5)⌋',\n", + " 487: '((5*5!)-⌈5!-√55⌉)',\n", " 488: '⌊.55*⌊5!*√55⌋⌋',\n", " 489: '⌊.55*⌈5!*√55⌉⌋',\n", - " 490: '⌈.55*⌈5!*√55⌉⌉',\n", + " 490: '((5*5!)-(55/.5))',\n", " 491: '⌈5!*((5/.55)-5)⌉',\n", - " 492: '(⌊5-.5⌋*⌈√5*55⌉)',\n", + " 492: '⌊(⌊5/.55⌋**5)/5!⌋',\n", " 493: '⌈(⌊5/.55⌋**5)/5!⌉',\n", - " 494: '(⌊55*(5-.5)⌋/.5)',\n", + " 494: '(⌊(5-.5)*55⌋/.5)',\n", " 495: '(5*⌊55/.55⌋)',\n", " 496: '(⌊555/√5⌋/.5)',\n", " 497: '⌈555/(.5*√5)⌉',\n", @@ -2277,28 +2304,28 @@ " 502: '(555-⌊5!/√5⌋)',\n", " 503: '⌊⌊5.5**5⌋/(5+5)⌋',\n", " 504: '⌈⌊5.5**5⌋/(5+5)⌉',\n", - " 505: '(5!+(55*⌊√55⌋))',\n", - " 506: '⌊(5-.5)*(5!-√55)⌋',\n", + " 505: '(5!+(⌊√55⌋*55))',\n", + " 506: '(((5+(5**5))/5)-5!)',\n", " 507: '(⌊5*(5!+5.5)⌋-5!)',\n", " 508: '(⌈5*(5!+5.5)⌉-5!)',\n", " 509: '⌊√.5*⌈5.555⌉!⌋',\n", - " 510: '⌈√.5*⌈5.555⌉!⌉',\n", - " 511: '⌈⌊5!*√5.5⌋/.55⌉',\n", + " 510: '((5*⌈5!+5.5⌉)-5!)',\n", + " 511: '⌊(5!-5)*(5-.55)⌋',\n", " 512: '(5!+⌊√.5*555⌋)',\n", " 513: '(5!+⌈√.5*555⌉)',\n", - " 514: '⌈√5.5*⌈5!/.55⌉⌉',\n", + " 514: '⌊5!/(⌈.5*55⌉/5!)⌋',\n", " 515: '(5!+(5!+(5*55)))',\n", " 516: '(5!+⌊.55*⌈5.5⌉!⌋)',\n", - " 517: '(5!+⌈.55*⌈5.5⌉!⌉)',\n", + " 517: '(5!+⌊55*(√5+5)⌋)',\n", " 518: '(555-⌈5**√5⌉)',\n", " 519: '(555-⌊5**√5⌋)',\n", " 520: '((5*(5!-5))-55)',\n", " 521: '⌈(5**5)/⌈5.55⌉⌉',\n", " 522: '⌊55*(5+(5-.5))⌋',\n", " 523: '⌈55*(5+(5-.5))⌉',\n", - " 524: '(⌈5!*(5!/55)⌉/.5)',\n", + " 524: '⌈5!/(55/(5!+5!))⌉',\n", " 525: '(5*((55/.5)-5))',\n", - " 526: '(⌊5*(55-√5)⌋/.5)',\n", + " 526: '⌈(.5+⌈5!/55⌉)**5⌉',\n", " 527: '(5!+⌊55*√55⌋)',\n", " 528: '(5!+⌈55*√55⌉)',\n", " 529: '((5!*(5-.55))-5)',\n", @@ -2307,13 +2334,13 @@ " 532: '⌊5**(5-(5.5/5))⌋',\n", " 533: '⌊5!*(5-.555)⌋',\n", " 534: '⌈5!*(5-.555)⌉',\n", - " 535: '(55+(5!*⌊5-.5⌋))',\n", - " 536: '⌈(5-.5)*⌊5!-.55⌋⌉',\n", - " 537: '⌊5.5*((.5*5)**5)⌋',\n", - " 538: '⌈5.5*((.5*5)**5)⌉',\n", + " 535: '((5*5!)-(5!-55))',\n", + " 536: '⌊55*√(5!-(5*5))⌋',\n", + " 537: '⌊5*(5!-(5+√55))⌋',\n", + " 538: '⌈5*(5!-(5+√55))⌉',\n", " 539: '(5+(5!*(5-.55)))',\n", - " 540: '((5+5)*⌊55-.5⌋)',\n", - " 541: '⌈.55+(5!*(5-.5))⌉',\n", + " 540: '((5*5!)-(5+55))',\n", + " 541: '(5!+⌊(5**5)/√55⌋)',\n", " 542: '(⌊5*(5!-.5)⌋-55)',\n", " 543: '(555-⌈√5*5⌉)',\n", " 544: '(555-⌊√5*5⌋)',\n", @@ -2324,13 +2351,13 @@ " 549: '⌊555-5.5⌋',\n", " 550: '⌈555-5.5⌉',\n", " 551: '⌈555.5-5⌉',\n", - " 552: '⌊555-√5.5⌋',\n", - " 553: '⌊555.5-√5⌋',\n", + " 552: '(555-⌈.5*5⌉)',\n", + " 553: '(555-⌊.5*5⌋)',\n", " 554: '⌊555-.55⌋',\n", " 555: '⌊555.55⌋',\n", " 556: '⌈555.55⌉',\n", - " 557: '⌊√5+555.5⌋',\n", - " 558: '⌈√5+555.5⌉',\n", + " 557: '(⌊.5*5⌋+555)',\n", + " 558: '(⌈.5*5⌉+555)',\n", " 559: '(5+⌊555-.5⌋)',\n", " 560: '⌊5+555.5⌋',\n", " 561: '⌈5+555.5⌉',\n", @@ -2343,43 +2370,43 @@ " 568: '(⌈5*(5!-5.5)⌉-5)',\n", " 569: '⌊(5*(5!-5))-5.5⌋',\n", " 570: '(5*⌊5!-5.55⌋)',\n", - " 571: '⌊√55*⌊55/√.5⌋⌋',\n", + " 571: '((5*5!)-(5+(5!/5)))',\n", " 572: '⌊5*(5!-5.55)⌋',\n", " 573: '⌈5*(5!-5.55)⌉',\n", " 574: '(5+⌈(5**5)/5.5⌉)',\n", " 575: '(5*⌈5!-5.55⌉)',\n", - " 576: '⌈.55+(5*(5!-5))⌉',\n", + " 576: '((5!/5)**⌊5!/55⌋)',\n", " 577: '⌊55*(5+5.5)⌋',\n", " 578: '⌈55*(5+5.5)⌉',\n", " 579: '((5!/5)+555)',\n", " 580: '((5*5)+555)',\n", " 581: '⌈5.5+(5*(5!-5))⌉',\n", - " 582: '⌈5!*(5.55-√.5)⌉',\n", - " 583: '(55/(5/⌊5!/√5⌋))',\n", + " 582: '⌊√55+(5*(5!-5))⌋',\n", + " 583: '(⌊5!/√5⌋*(55/5))',\n", " 584: '⌈5*(5!-√(55/5))⌉',\n", - " 585: '(5*(5!-⌈5*.55⌉))',\n", + " 585: '(5*(5!-⌈5!/55⌉))',\n", " 586: '⌊5*(5!-(5*.55))⌋',\n", " 587: '((⌊√5⌋**5)+555)',\n", - " 588: '⌈5!*√⌊5-.555⌋!⌉',\n", + " 588: '((5*5!)-⌊5+√55⌋)',\n", " 589: '((5*5!)-(55/5))',\n", " 590: '⌈5!*(5-(5/55))⌉',\n", " 591: '(⌊5**√5⌋+555)',\n", " 592: '(⌈5**√5⌉+555)',\n", - " 593: '⌈(5*5!)-√55.5⌉',\n", + " 593: '(⌈5*(5!-.55)⌉-5)',\n", " 594: '⌊(5*5!)-5.55⌋',\n", " 595: '(5*⌊5!-.555⌋)',\n", - " 596: '⌈√(5+5)**5.55⌉',\n", + " 596: '((5*5!)-⌊5-.55⌋)',\n", " 597: '⌊5*(5!-.555)⌋',\n", " 598: '⌈5*(5!-.555)⌉',\n", " 599: '⌊(5*5!)-.555⌋',\n", - " 600: '(5*⌊5.555⌋!)',\n", + " 600: '(5*⌈555/5!⌉!)',\n", " 601: '⌈(5*5!)+.555⌉',\n", " 602: '⌊5*(5!+.555)⌋',\n", " 603: '⌈5*(5!+.555)⌉',\n", " 604: '(⌊5.5*55⌋/.5)',\n", " 605: '(55*(55/5))',\n", - " 606: '(⌈5.5*55⌉/.5)',\n", - " 607: '⌊(5*5!)+√55.5⌋',\n", + " 606: '⌈(5*5!)+5.55⌉',\n", + " 607: '(5+⌊5*(5!+.55)⌋)',\n", " 608: '(⌊5!/√5⌋+555)',\n", " 609: '(⌈5!/√5⌉+555)',\n", " 610: '(55+555)',\n", @@ -2389,15 +2416,15 @@ " 614: '(((5**5)-55)/5)',\n", " 615: '((.5*5!)+555)',\n", " 616: '(5.5*⌊5!-√55⌋)',\n", - " 617: '⌊5*(.5+⌈√5*55⌉)⌋',\n", - " 618: '⌈5*(.5+⌈√5*55⌉)⌉',\n", + " 617: '⌈5*(5!+√(55/5))⌉',\n", + " 618: '⌈(5*(5+5!))-√55⌉',\n", " 619: '⌊√5*⌊.5*555⌋⌋',\n", " 620: '(5*⌊√5*55.5⌋)',\n", " 621: '(.5*⌈√5*555⌉)',\n", " 622: '⌈√5*⌈.5*555⌉⌉',\n", - " 623: '⌊5!*√⌊5*5.55⌋⌋',\n", - " 624: '⌈5!*√⌊5*5.55⌋⌉',\n", - " 625: '(5**⌊5-.555⌋)',\n", + " 623: '(⌈5*(5!+5.5)⌉-5)',\n", + " 624: '(⌈(5**5)-5.5⌉/5)',\n", + " 625: '(5**⌊555/5!⌋)',\n", " 626: '(⌊5.5+(5**5)⌋/5)',\n", " 627: '⌊5*(5!+5.55)⌋',\n", " 628: '⌈5*(5!+5.55)⌉',\n", @@ -2407,35 +2434,35 @@ " 632: '⌊5.5*⌈5!-5.5⌉⌋',\n", " 633: '⌈5.5*⌈5!-5.5⌉⌉',\n", " 634: '⌊5!*√⌈5*5.55⌉⌋',\n", - " 635: '(5*⌊5!+√55.5⌋)',\n", + " 635: '(5+(5*⌈5!+5.5⌉))',\n", " 636: '(((5**5)+55)/5)',\n", - " 637: '⌊5*(5!+√55.5)⌋',\n", + " 637: '(5+⌊5.5*(5!-5)⌋)',\n", " 638: '⌊(5!-5)*5.55⌋',\n", " 639: '⌈(5!-5)*5.55⌉',\n", - " 640: '(5*⌊55*√5.5⌋)',\n", - " 641: '⌈.5+(5*⌈5!+√55⌉)⌉',\n", + " 640: '(5*⌊√5.5*55⌋)',\n", + " 641: '⌈5*(5!+√(5!-55))⌉',\n", " 642: '(5+⌊5*(5!+√55)⌋)',\n", - " 643: '⌊5.5*⌊5!-√5.5⌋⌋',\n", - " 644: '⌊5*(55*√5.5)⌋',\n", - " 645: '(5*⌈55*√5.5⌉)',\n", + " 643: '(5+⌈5*(5!+√55)⌉)',\n", + " 644: '⌊√5.5*(5*55)⌋',\n", + " 645: '(5*⌈√5.5*55⌉)',\n", " 646: '⌈5*(5!+(5/.55))⌉',\n", - " 647: '⌊5.5*(5!-√5.5)⌋',\n", + " 647: '⌈5.5*(5!-(.5*5))⌉',\n", " 648: '(5!*(⌊.5*55⌋/5))',\n", " 649: '⌊⌊5!-√5⌋*5.55⌋',\n", " 650: '((5+5)*(5!-55))',\n", " 651: '(⌈√5⌉*⌈5!/.555⌉)',\n", - " 652: '⌊(5!*5.5)-√55⌋',\n", - " 653: '⌊(5!-√5)*5.55⌋',\n", + " 652: '(55+⌊5*(5!-.5)⌋)',\n", + " 653: '(55+⌈5*(5!-.5)⌉)',\n", " 654: '⌊5.5*⌊5!-.55⌋⌋',\n", " 655: '⌊(5*5!)+55.5⌋',\n", " 656: '⌈(5*5!)+55.5⌉',\n", " 657: '⌈5.5*(5!-.55)⌉',\n", - " 658: '⌈5!*√⌊.55*55⌋⌉',\n", + " 658: '(55+⌈5*(.5+5!)⌉)',\n", " 659: '⌊(5!*5.5)-.55⌋',\n", - " 660: '(5.5*⌊5.55⌋!)',\n", + " 660: '(55*⌊5+√55⌋)',\n", " 661: '((5!*5.55)-5)',\n", - " 662: '⌊(5!-√.5)*5.55⌋',\n", - " 663: '⌊5.5*(5!+.55)⌋',\n", + " 662: '⌊5*(5+(5!+√55))⌋',\n", + " 663: '⌊(5!-.5)*5.55⌋',\n", " 664: '⌊⌈5.5⌉!-55.5⌋',\n", " 665: '(⌈5.55⌉!-55)',\n", " 666: '⌊5!*5.555⌋',\n", @@ -2456,20 +2483,20 @@ " 681: '⌈5!*(5+(5/√55))⌉',\n", " 682: '⌊55*(5+√55)⌋',\n", " 683: '⌈55*(5+√55)⌉',\n", - " 684: '(⌈5.5⌉*⌊5!-5.5⌋)',\n", + " 684: '((5!/5)+(5!*5.5))',\n", " 685: '(5*⌊.5*(5*55)⌋)',\n", " 686: '⌊(√5-⌈.5⌉)*555⌋',\n", - " 687: '⌊5.5*⌊5!+5.5⌋⌋',\n", - " 688: '⌈5.5*⌊5!+5.5⌋⌉',\n", + " 687: '⌊.5*(5*(5*55))⌋',\n", + " 688: '⌈.5*(5*(5*55))⌉',\n", " 689: '(5!+⌈(5**5)/5.5⌉)',\n", - " 690: '⌊5.5*(5!+5.5)⌋',\n", + " 690: '(5*⌈.5*(5*55)⌉)',\n", " 691: '⌈5.5*(5!+5.5)⌉',\n", " 692: '(5+⌊5.5*(5+5!)⌋)',\n", " 693: '⌊(5+5!)*5.55⌋',\n", " 694: '⌈(5+5!)*5.55⌉',\n", " 695: '(⌈5.55⌉!-(5*5))',\n", " 696: '(⌈5.55⌉!-(5!/5))',\n", - " 697: '(⌈(.5*√55)**5⌉-5)',\n", + " 697: '(⌈5.5⌉!-((5!-5)/5))',\n", " 698: '⌊5.5*⌊5!+√55⌋⌋',\n", " 699: '⌈5.5*⌊5!+√55⌋⌉',\n", " 700: '(5*(5*⌈.5*55⌉))',\n", @@ -2501,95 +2528,95 @@ " 726: '⌈5.5+⌈5.55⌉!⌉',\n", " 727: '⌊√55+⌈5.55⌉!⌋',\n", " 728: '⌈√55+⌈5.55⌉!⌉',\n", - " 729: '(⌈√5⌉**⌈5.555⌉)',\n", + " 729: '(⌈5!/55⌉**⌈5.5⌉)',\n", " 730: '(5+(5+⌈5.55⌉!))',\n", " 731: '(⌈5.5⌉!+(55/5))',\n", " 732: '(5!*(5+(5.5/5)))',\n", " 733: '(5+⌈⌈5.5⌉!+√55⌉)',\n", - " 734: '(5!+⌊√5*(5*55)⌋)',\n", + " 734: '(5!+⌊5*(√5*55)⌋)',\n", " 735: '(5*(5!+⌊.5*55⌋))',\n", - " 736: '⌊√5.5**√(5+55)⌋',\n", + " 736: '(⌈5.5⌉!+⌊5!/√55⌋)',\n", " 737: '⌊5*(5!+(.5*55))⌋',\n", - " 738: '(⌈5.5⌉*⌈√5*55⌉)',\n", - " 739: '⌊5!*√⌈5*√55.5⌉⌋',\n", + " 738: '⌈5*(5!+(.5*55))⌉',\n", + " 739: '((5!/5)+(⌈5.5⌉!-5))',\n", " 740: '(5*(5!+⌈.5*55⌉))',\n", " 741: '(⌈5.5⌉!+⌊5!/5.5⌋)',\n", " 742: '(⌈5.5⌉!+⌈5!/5.5⌉)',\n", - " 743: '⌊⌊5!**√5⌋/(5+55)⌋',\n", + " 743: '⌊(5!**√5)/(5+55)⌋',\n", " 744: '((5!/5)+⌈5.55⌉!)',\n", " 745: '((5*5)+⌈5.55⌉!)',\n", " 746: '(5!+((5+(5**5))/5))',\n", - " 747: '(⌈5.5⌉!+⌊.5*55⌋)',\n", - " 748: '(⌈5.5⌉!+⌈.5*55⌉)',\n", - " 749: '⌈5!*(√5+⌊5-.55⌋)⌉',\n", + " 747: '(5!+⌊5*(5!+5.5)⌋)',\n", + " 748: '(5!+⌈5*(5!+5.5)⌉)',\n", + " 749: '(5+((5!/5)+⌈5.5⌉!))',\n", " 750: '((5+5!)*⌈5.55⌉)',\n", " 751: '⌈5!*(√.5+5.55)⌉',\n", " 752: '(5!+⌊5.5*(5!-5)⌋)',\n", - " 753: '(⌈5.5⌉*(5!+5.5))',\n", + " 753: '(5!+⌈5.5*(5!-5)⌉)',\n", " 754: '(5!+⌊5!*√⌈.5*55⌉⌋)',\n", " 755: '((5*(5!+55))-5!)',\n", " 756: '(⌈5.5⌉*⌈5!+5.5⌉)',\n", - " 757: '(⌈5.5⌉!+⌊5*√55⌋)',\n", - " 758: '(⌈5.5⌉!+⌈5*√55⌉)',\n", - " 759: '⌈5!*√⌊5.5*√55⌋⌉',\n", + " 757: '(5!+⌊5*(5!+√55)⌋)',\n", + " 758: '(5!+⌈5*(5!+√55)⌉)',\n", + " 759: '⌈5!*√(5!/⌈5!/55⌉)⌉',\n", " 760: '(5*⌊55*(5-√5)⌋)',\n", " 761: '⌈5*(55*(5-√5))⌉',\n", " 762: '(⌈5.5⌉*⌊5!+√55⌋)',\n", " 763: '⌈5*(5!**(.5+.55))⌉',\n", - " 764: '⌊⌈5.5⌉*(5!+√55)⌋',\n", + " 764: '(⌊5!*√55⌋-(5+5!))',\n", " 765: '(5*⌈55*(5-√5)⌉)',\n", - " 766: '⌈(⌈√5⌉**5.5)/.55⌉',\n", + " 766: '⌊((5*5)-5.5)**√5⌋',\n", " 767: '⌈((5*5)-5.5)**√5⌉',\n", - " 768: '⌊√⌈5.55⌉**√55⌋',\n", + " 768: '(⌈5.5⌉*⌈5!+√55⌉)',\n", " 769: '⌊55**√(5*.55)⌋',\n", - " 770: '(55*⌊√55/.5⌋)',\n", + " 770: '(⌈5.5⌉!+(55-5))',\n", " 771: '⌈(5*5.55)**⌊√5⌋⌉',\n", - " 772: '(55+⌊⌈5.5⌉!-√5⌋)',\n", + " 772: '(⌈5.5⌉!+⌊55-√5⌋)',\n", " 773: '(⌊5!*√55.5⌋-5!)',\n", - " 774: '(55+⌊⌈5.5⌉!-.5⌋)',\n", + " 774: '(⌈5.5⌉!+⌊55-.5⌋)',\n", " 775: '(55+⌈5.55⌉!)',\n", " 776: '⌈⌈5.5⌉!+55.5⌉',\n", " 777: '⌊(555-5)/√.5⌋',\n", " 778: '⌈(555-5)/√.5⌉',\n", " 779: '(⌊555/√.5⌋-5)',\n", - " 780: '(⌈555/√.5⌉-5)',\n", + " 780: '(5+(⌈5.5⌉!+55))',\n", " 781: '⌊(5**5)/⌊5-.55⌋⌋',\n", " 782: '⌈(5**5)/⌊5-.55⌋⌉',\n", " 783: '⌊⌊555/√.5⌋-.5⌋',\n", " 784: '⌊√⌊.5*5⌋*555⌋',\n", " 785: '⌊555.5/√.5⌋',\n", - " 786: '⌈555.5/√.5⌉',\n", - " 787: '⌈⌈555.5⌉/√.5⌉',\n", + " 786: '(5!+(5!*5.55))',\n", + " 787: '⌊(5-.5)*(5!+55)⌋',\n", " 788: '⌈(5-.5)*(5!+55)⌉',\n", " 789: '(5+⌊555/√.5⌋)',\n", " 790: '(5+⌈555/√.5⌉)',\n", " 791: '⌊(5+555)/√.5⌋',\n", " 792: '⌈(5+555)/√.5⌉',\n", " 793: '⌈⌈5.5⌉!*(5.5/5)⌉',\n", - " 794: '(⌈.55*⌈5.5⌉!⌉/.5)',\n", + " 794: '(⌊55*(√5+5)⌋/.5)',\n", " 795: '(5!+(5!+555))',\n", " 796: '⌈55**(5/⌈.5*5⌉)⌉',\n", " 797: '⌊5.5*(5!+(5*5))⌋',\n", " 798: '((⌈√5⌉**5)+555)',\n", - " 799: '⌈5!*(5+√(5*.55))⌉',\n", + " 799: '⌈⌊5!**√⌈5!/55⌉⌋/5⌉',\n", " 800: '(5*((⌈√5⌉*55)-5))',\n", " 801: '⌊⌊√55⌋*(5!-5.5)⌋',\n", " 802: '⌈⌊√55⌋*(5!-5.5)⌉',\n", " 803: '⌊⌊5!**√5⌋/55.5⌋',\n", " 804: '⌈⌊5!**√5⌋/55.5⌉',\n", - " 805: '((5!-5)*⌊√55.5⌋)',\n", - " 806: '⌊(5-.5)**(5-.55)⌋',\n", + " 805: '⌈5!*√(55-(5+5))⌉',\n", + " 806: '(⌈⌊5!**√5⌋/55⌉-5)',\n", " 807: '(5!+⌊5.5*(5+5!)⌋)',\n", " 808: '(5!+⌈5.5*(5+5!)⌉)',\n", " 809: '(⌊5!*√(5+55)⌋-5!)',\n", " 810: '(⌈√5⌉*((5*55)-5))',\n", - " 811: '⌈(5+(5!**√5))/55⌉',\n", - " 812: '⌈(5*⌊5-.55⌋)**√5⌉',\n", + " 811: '⌈(⌈5!**√5⌉-5)/55⌉',\n", + " 812: '⌈5!*(⌊5/.55⌋-√5)⌉',\n", " 813: '(⌊5!*(√5+5)⌋-55)',\n", " 814: '(⌊55*√55⌋/.5)',\n", " 815: '⌊55/(.5/√55)⌋',\n", " 816: '(⌈55*√55⌉/.5)',\n", - " 817: '⌊5**(5/(⌈5.5⌉/5))⌋',\n", + " 817: '⌊5**(5*(5/⌈5.5⌉))⌋',\n", " 818: '((5*5!)+⌊5!/.55⌋)',\n", " 819: '((5*5!)+⌈5!/.55⌉)',\n", " 820: '((⌈√5⌉*(5*55))-5)',\n", @@ -2600,8 +2627,8 @@ " 825: '(55*(5+(5+5)))',\n", " 826: '⌊(5*5!)**(.5+.55)⌋',\n", " 827: '⌊(5-.55)**(5-.5)⌋',\n", - " 828: '⌈(5-.55)**(5-.5)⌉',\n", - " 829: '⌈(√5+5)*(5!-5.5)⌉',\n", + " 828: '(⌊((5+5)**5)/5!⌋-5)',\n", + " 829: '(⌈((5+5)**5)/5!⌉-5)',\n", " 830: '(5*⌊⌈√5⌉*55.5⌋)',\n", " 831: '(⌈√5⌉*⌊.5*555⌋)',\n", " 832: '⌊(.5+⌈.5⌉)*555⌋',\n", @@ -2610,16 +2637,16 @@ " 835: '(⌈5!*√55⌉-55)',\n", " 836: '⌊⌊√55⌋*(5!-.55)⌋',\n", " 837: '⌈⌊√55⌋*(5!-.55)⌉',\n", - " 838: '⌊(5.5**5)/⌈5.5⌉⌋',\n", - " 839: '⌈(5.5**5)/⌈5.5⌉⌉',\n", + " 838: '⌊√55*⌈5!-√55⌉⌋',\n", + " 839: '⌈√55*⌈5!-√55⌉⌉',\n", " 840: '(5!+⌈5.555⌉!)',\n", " 841: '(5!+⌈.5+⌈5.55⌉!⌉)',\n", " 842: '(⌈5.5⌉!+⌊√5*55⌋)',\n", - " 843: '(⌈5.5⌉!+⌈√5*55⌉)',\n", + " 843: '(⌊5!*√(55-5)⌋-5)',\n", " 844: '⌊5!*√(55-5.5)⌋',\n", - " 845: '⌊√55*⌊5!-5.5⌋⌋',\n", + " 845: '(5+(5!+⌈5.55⌉!))',\n", " 846: '⌈√55*⌊5!-5.5⌋⌉',\n", - " 847: '(⌊√55⌋*⌈5!+.55⌉)',\n", + " 847: '(⌊(5!-5)*√55⌋-5)',\n", " 848: '⌊5!*√⌊55.5-5⌋⌋',\n", " 849: '⌊√55*(5!-5.5)⌋',\n", " 850: '(5*(5!+(55-5)))',\n", @@ -2628,20 +2655,20 @@ " 853: '⌈5!*√(55.5-5)⌉',\n", " 854: '(5+⌈5!*√(55-5)⌉)',\n", " 855: '(5*⌈5.55**⌈√5⌉⌉)',\n", - " 856: '⌊(5!-5)*√55.5⌋',\n", - " 857: '⌈(5!-5)*√55.5⌉',\n", + " 856: '⌊5!*√⌈55.5-5⌉⌋',\n", + " 857: '⌈5!*√⌈55.5-5⌉⌉',\n", " 858: '(5+⌈(5!-5)*√55⌉)',\n", " 859: '⌊55**(√5-.55)⌋',\n", " 860: '⌈55**(√5-.55)⌉',\n", " 861: '⌊5!*(5+(5!/55))⌋',\n", " 862: '⌈5!*(5+(5!/55))⌉',\n", - " 863: '⌈5**(⌊5!/5.5⌋/5)⌉',\n", - " 864: '(⌊.5*55⌋/(.5**5))',\n", - " 865: '(5*⌊55*√(5+5)⌋)',\n", - " 866: '⌈5!*√⌊55-√5.5⌋⌉',\n", - " 867: '⌊√55*⌊5!-√5.5⌋⌋',\n", - " 868: '⌈√55*⌊5!-√5.5⌋⌉',\n", - " 869: '⌊5*(55*√(5+5))⌋',\n", + " 863: '⌊5*(5!+(55-√5))⌋',\n", + " 864: '(⌊5!*√55⌋-(5*5))',\n", + " 865: '(5*⌊√(5+5)*55⌋)',\n", + " 866: '(⌈5!*√55⌉-(5!/5))',\n", + " 867: '(⌈5!**√⌊5!/55⌋⌉-5)',\n", + " 868: '⌊5!*(√5+⌊5.55⌋)⌋',\n", + " 869: '⌊5*(√(5+5)*55)⌋',\n", " 870: '((555-5!)/.5)',\n", " 871: '⌊5!**√⌈5.55/5⌉⌋',\n", " 872: '⌊5*(5!+(55-.5))⌋',\n", @@ -2651,23 +2678,23 @@ " 876: '⌈.5+(5*(5!+55))⌉',\n", " 877: '⌊5*(5!+55.5)⌋',\n", " 878: '⌈5*(5!+55.5)⌉',\n", - " 879: '⌈√5*⌈√.5*555⌉⌉',\n", + " 879: '(⌊5!*√55⌋-(5+5))',\n", " 880: '(5*⌈5!+55.5⌉)',\n", " 881: '⌊5!*√⌊55-.55⌋⌋',\n", - " 882: '⌊√55*⌊5!-.55⌋⌋',\n", + " 882: '⌈5!*√⌊55-.55⌋⌉',\n", " 883: '⌊⌊5!*√55⌋-5.5⌋',\n", " 884: '⌊⌈5!*√55⌉-5.5⌋',\n", " 885: '⌈⌈5!*√55⌉-5.5⌉',\n", " 886: '⌈√55*(5!-.55)⌉',\n", - " 887: '⌈⌊5!-.5⌋*√55.5⌉',\n", + " 887: '(⌈(5.5**5)/5⌉-5!)',\n", " 888: '(⌊5!*√55.5⌋-5)',\n", " 889: '⌊5!*(55/√55)⌋',\n", " 890: '⌈5!*(55/√55)⌉',\n", " 891: '⌈.55+(5!*√55)⌉',\n", - " 892: '⌊⌊5!*√55.5⌋-.5⌋',\n", + " 892: '(⌊5!*√⌈55.5⌉⌋-5)',\n", " 893: '⌊⌊5.5⌋!*√55.5⌋',\n", " 894: '⌊5.5+⌊5!*√55⌋⌋',\n", - " 895: '⌈5.5+⌊5!*√55⌋⌉',\n", + " 895: '(5!+(⌈5.5⌉!+55))',\n", " 896: '⌈5.5+⌈5!*√55⌉⌉',\n", " 897: '⌊5!*√⌈55.55⌉⌋',\n", " 898: '⌈5!*√⌈55.55⌉⌉',\n", @@ -2690,28 +2717,28 @@ " 915: '⌊5.5**⌊5-.55⌋⌋',\n", " 916: '⌈5.5**⌊5-.55⌋⌉',\n", " 917: '⌈⌈√5+5!⌉*√55.5⌉',\n", - " 918: '⌊5.5*⌈5.5**⌈√5⌉⌉⌋',\n", - " 919: '⌈5.5*⌈5.5**⌈√5⌉⌉⌉',\n", + " 918: '⌊(5+5!)*√⌊55-.5⌋⌋',\n", + " 919: '⌈(5+5!)*√⌊55-.5⌋⌉',\n", " 920: '(5+⌊5.5**⌊5-.5⌋⌋)',\n", - " 921: '⌊(.5*5)**√55.5⌋',\n", - " 922: '⌈(.5*5)**√55.5⌉',\n", + " 921: '(5+⌈5.5**⌊5-.5⌋⌉)',\n", + " 922: '(⌊(5+5!)*√55⌋-5)',\n", " 923: '(55+⌊5!*(√5+5)⌋)',\n", " 924: '(55+⌈5!*(√5+5)⌉)',\n", - " 925: '(5*(555/⌈√5⌉))',\n", + " 925: '(5*(5!+(5!-55)))',\n", " 926: '⌊⌊(5+5!)*√55⌋-.5⌋',\n", - " 927: '⌊√55*⌊5!+5.5⌋⌋',\n", - " 928: '⌈√55*⌊5!+5.5⌋⌉',\n", + " 927: '⌊5*(5*(5*√55))⌋',\n", + " 928: '⌈5*(5*(5*√55))⌉',\n", " 929: '⌊5!*√⌊5+55.5⌋⌋',\n", - " 930: '⌈5!*√⌊5+55.5⌋⌉',\n", + " 930: '(5*⌈5*(5*√55)⌉)',\n", " 931: '⌊(5+5!)*√55.5⌋',\n", " 932: '⌈(5+5!)*√55.5⌉',\n", " 933: '⌊5!*√(5+55.5)⌋',\n", - " 934: '⌈5!*√(5+55.5)⌉',\n", + " 934: '⌊5!*(√5+5.55)⌋',\n", " 935: '(55*⌈5!/√55⌉)',\n", " 936: '⌈(5+5!)*√⌈55.5⌉⌉',\n", " 937: '⌊5!*√⌈5+55.5⌉⌋',\n", " 938: '⌈5!*√⌈5+55.5⌉⌉',\n", - " 939: '⌊5.5/(.5**√55)⌋',\n", + " 939: '(⌈5.5⌉!+⌈5!/.55⌉)',\n", " 940: '⌈5.5/(.5**√55)⌉',\n", " 941: '⌊√55*⌊5!+√55⌋⌋',\n", " 942: '⌊⌊5**5.5⌋/√55⌋',\n", @@ -2719,7 +2746,7 @@ " 944: '(55+⌊5!*√55⌋)',\n", " 945: '(55+⌈5!*√55⌉)',\n", " 946: '(5.5*⌊(5+5)**√5⌋)',\n", - " 947: '⌊(√.5+⌈.5⌉)*555⌋',\n", + " 947: '(⌈5**(5-√.5)⌉-55)',\n", " 948: '⌊5.55**⌊5-.5⌋⌋',\n", " 949: '⌈5.55**⌊5-.5⌋⌉',\n", " 950: '(5*(5*⌈5*√55⌉))',\n", @@ -2729,53 +2756,53 @@ " 954: '⌊(5!+555)/√.5⌋',\n", " 955: '⌊5!*(.55+√55)⌋',\n", " 956: '⌈5!*(.55+√55)⌉',\n", - " 957: '⌊5!*(.5+√⌈55.5⌉)⌋',\n", - " 958: '⌈5!*(.5+√⌈55.5⌉)⌉',\n", + " 957: '⌊(5**5)/(5.5-√5)⌋',\n", + " 958: '⌈(5**5)/(5.5-√5)⌉',\n", " 959: '⌊(5!*⌈√55⌉)-.55⌋',\n", " 960: '(5!*⌈55/√55⌉)',\n", " 961: '⌊√⌈.5*5⌉*555⌋',\n", " 962: '⌊5.5*(5!+55)⌋',\n", " 963: '⌈5.5*(5!+55)⌉',\n", " 964: '⌈(√5-.5)*555⌉',\n", - " 965: '⌊(5!/5.55)**√5⌋',\n", + " 965: '(5*⌊5!**(5.5/5)⌋)',\n", " 966: '⌈(5!/5.55)**√5⌉',\n", - " 967: '⌊5!*√⌈5!-55.5⌉⌋',\n", - " 968: '⌈5!*√⌈5!-55.5⌉⌉',\n", + " 967: '⌊5!*√(5+(5+55))⌋',\n", + " 968: '⌊(5+5!)*√(5+55)⌋',\n", " 969: '((⌊5-.5⌋**5)-55)',\n", " 970: '(5*⌈5!**(5.5/5)⌉)',\n", " 971: '(⌈5*(5!/.55)⌉-5!)',\n", " 972: '⌊√5*(555-5!)⌋',\n", " 973: '⌈√5*(555-5!)⌉',\n", " 974: '⌊5!*√⌊5!*.555⌋⌋',\n", - " 975: '⌈5!*√⌊5!*.555⌋⌉',\n", + " 975: '((5*⌈5!/.55⌉)-5!)',\n", " 976: '(⌈√55⌉*⌊√5*55⌋)',\n", " 977: '⌈(5+5)*((.5*5)**5)⌉',\n", - " 978: '⌊5!*(√.5+√55.5)⌋',\n", + " 978: '⌈√5*⌈(5!+5!)/.55⌉⌉',\n", " 979: '⌊5!*(5+√⌊5+5.5⌋)⌋',\n", - " 980: '⌈5!*(5+√⌊5+5.5⌋)⌉',\n", + " 980: '((5+5)*⌈(.5*5)**5⌉)',\n", " 981: '((5-.5)*⌊5!/.55⌋)',\n", " 982: '⌊5!*√⌈5!*.555⌉⌋',\n", " 983: '⌈5!*√⌈5!*.555⌉⌉',\n", " 984: '(⌈√55⌉*⌈√5*55⌉)',\n", " 985: '⌊(5-.5)*⌈5!/.55⌉⌋',\n", " 986: '⌈(5-.5)*⌈5!/.55⌉⌉',\n", - " 987: '⌊√⌈√5*5⌉**5.55⌋',\n", + " 987: '(⌈(5**5)/⌈√5⌉⌉-55)',\n", " 988: '⌊5!*(√5+⌈5.55⌉)⌋',\n", - " 989: '⌈5!*(√5+⌈5.55⌉)⌉',\n", + " 989: '⌊5**(5!/⌈.5*55⌉)⌋',\n", " 990: '((555/.5)-5!)',\n", " 991: '⌊5!*(5-(√5-5.5))⌋',\n", " 992: '⌈5!*(5-(√5-5.5))⌉',\n", - " 993: '⌈√5*⌊⌈√5⌉**5.55⌋⌉',\n", + " 993: '(5+⌊(5**5)/√(5+5)⌋)',\n", " 994: '⌊5!*(5*√(5*.55))⌋',\n", - " 995: '(⌈5.5⌉!+(5*55))',\n", - " 996: '⌊⌈5**(5-√.5)⌉-5.5⌋',\n", + " 995: '(5!+(5*(5!+55)))',\n", + " 996: '⌊5!*√⌈.55*(5+5!)⌉⌋',\n", " 997: '⌊5!*(5+√(55/5))⌋',\n", - " 998: '⌊⌊5**5.5⌋/⌊√55⌋⌋',\n", + " 998: '⌈5!*(5+√(55/5))⌉',\n", " 999: '⌈⌊5**5.5⌋/⌊√55⌋⌉',\n", " ...}" ] }, - "execution_count": 32, + "execution_count": 71, "metadata": {}, "output_type": "execute_result" } @@ -2801,7 +2828,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 72, "metadata": { "button": false, "new_sheet": false, @@ -2816,7 +2843,7 @@ "23308" ] }, - "execution_count": 33, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2835,11 +2862,86 @@ } }, "source": [ - "I think we've conquered the five 5s problem.\n", + "I think we've conquered the five 5s problem!\n", "\n", - "# Conclusion\n", "\n", - "We were able to solve the puzzles, and we now have some tools to explore new puzzles. What can you discover?" + "# Countdown to 2018\n", + "\n", + "On January 1 2018, [Michael Littman](http://cs.brown.edu/~mlittman/) posted this:\n", + "\n", + "> `2+0+1x8, 2+0-1+8, (2+0-1)x8, |2-0-1-8|, -2-0+1x8, -(2+0+1-8), sqrt(|2+0-18|), 2+0+1^8, 20-18, 2^(0x18), 2x0x1x8`... Happy New Year!\n", + "\n", + "Can we replicate that countdown, using the four digits of the year, in order, with operators and parens to evaluate each of the numbers from 10 to 1? I'm assuming Michael is disallowing floor and ceil, but allowing our other operators." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8)'" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clear()\n", + "floor_ceil_allowed = False\n", + "\n", + "def littman_countdown(year):\n", + " \"Return a Littman countdown for the year.\"\n", + " return ', '.join(littman(year, i) for i in range(10, 0, -1))\n", + "\n", + "def littman(year, i):\n", + " \"Return a string that makes i with the digits of year.\"\n", + " digits = tuple(map(int, str(year)))\n", + " return unbracket(expressions(digits).get(i, '???').replace('**', '^'))\n", + "\n", + "littman_countdown(2018)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similar results, with some alternatives for some numbers.\n", + "\n", + "Let's look at the decade:" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{2011: '20/(1+1), 20-11, -2.0+(1/.1), (2.0+1)!+1, √(20-11)!, (2.0+1)!-1, 2.0*(1+1), √(20-11), 2+(0/11), 2.0/(1+1)',\n", + " 2012: '20/(1*2), (2.0+1)^2, 20-12, 2.0+(1/.2), 2.0*(1+2), 2.0+(1+2), 2.0*(1*2), 2.0-(1-2), 2+(0/12), -.20+1.2',\n", + " 2013: '20/(-1+3), (2.0+1)*3, 2.0*(1+3), 20-13, 2.0+(1+3), 20/(1+3), 2.0-(1-3), (2.0-1)*3, 2+(0/13), (2.0+1)/3',\n", + " 2014: '2.0*(1+4), (2.0+1)^√4, 2.0/(1/4), 2.0+(1+4), 20-14, 20*(1/4), 20/(1+4), -20-(1-4!), 2+(0/14), .20*(1+4)',\n", + " 2015: '2.0*(1*5), √(201-5!), 2.0+(1+5), 2.0+(1*5), (.20*15)!, 20-15, 20/(1*5), .20*15, 2+(0/15), 2*(0.1*5)',\n", + " 2016: '2*(0-(1-6)), 2.0+(1+6), 2.0*√16, 2.0-(1-6), √(20+16), 20/√16, 20-16, 2.0+(1^6), 2+(0/16), .20*(-1+6)',\n", + " 2017: '2.0+(1+7), 2.0+(1*7), 2.0-(1-7), (2.0-1)*7, (20-17)!, -2.0+(1*7), -2.0-(1-7), 20-17, 2+(0/17), 2.0-(1^7)',\n", + " 2018: '2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8)',\n", + " 2019: '20-(1+9), (2.0-1)*9, (2*0)-(1-9), -2.0+(1*9), -2.0-(1-9), 20/(1+√9), 2.0-(1-√9), 2.0+(1^9), 2+(0/19), 20-19'}" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{y: littman_countdown(y) \n", + " for y in range(2011, 2020)}" ] } ], From c75679e94a1c4c13781169c2df6559f337be2c2f Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 1 Jan 2018 16:41:46 -0800 Subject: [PATCH 54/55] Countdown.ipynb updated with Littman Countdown --- ipynb/Countdown.ipynb | 52 ++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/ipynb/Countdown.ipynb b/ipynb/Countdown.ipynb index dc61328..a756429 100644 --- a/ipynb/Countdown.ipynb +++ b/ipynb/Countdown.ipynb @@ -2876,16 +2876,16 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8)'" + "'2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8), 2*(0/18)'" ] }, - "execution_count": 75, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -2896,7 +2896,7 @@ "\n", "def littman_countdown(year):\n", " \"Return a Littman countdown for the year.\"\n", - " return ', '.join(littman(year, i) for i in range(10, 0, -1))\n", + " return ', '.join(littman(year, i) for i in range(10, -1, -1))\n", "\n", "def littman(year, i):\n", " \"Return a string that makes i with the digits of year.\"\n", @@ -2917,31 +2917,37 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 82, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{2011: '20/(1+1), 20-11, -2.0+(1/.1), (2.0+1)!+1, √(20-11)!, (2.0+1)!-1, 2.0*(1+1), √(20-11), 2+(0/11), 2.0/(1+1)',\n", - " 2012: '20/(1*2), (2.0+1)^2, 20-12, 2.0+(1/.2), 2.0*(1+2), 2.0+(1+2), 2.0*(1*2), 2.0-(1-2), 2+(0/12), -.20+1.2',\n", - " 2013: '20/(-1+3), (2.0+1)*3, 2.0*(1+3), 20-13, 2.0+(1+3), 20/(1+3), 2.0-(1-3), (2.0-1)*3, 2+(0/13), (2.0+1)/3',\n", - " 2014: '2.0*(1+4), (2.0+1)^√4, 2.0/(1/4), 2.0+(1+4), 20-14, 20*(1/4), 20/(1+4), -20-(1-4!), 2+(0/14), .20*(1+4)',\n", - " 2015: '2.0*(1*5), √(201-5!), 2.0+(1+5), 2.0+(1*5), (.20*15)!, 20-15, 20/(1*5), .20*15, 2+(0/15), 2*(0.1*5)',\n", - " 2016: '2*(0-(1-6)), 2.0+(1+6), 2.0*√16, 2.0-(1-6), √(20+16), 20/√16, 20-16, 2.0+(1^6), 2+(0/16), .20*(-1+6)',\n", - " 2017: '2.0+(1+7), 2.0+(1*7), 2.0-(1-7), (2.0-1)*7, (20-17)!, -2.0+(1*7), -2.0-(1-7), 20-17, 2+(0/17), 2.0-(1^7)',\n", - " 2018: '2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8)',\n", - " 2019: '20-(1+9), (2.0-1)*9, (2*0)-(1-9), -2.0+(1*9), -2.0-(1-9), 20/(1+√9), 2.0-(1-√9), 2.0+(1^9), 2+(0/19), 20-19'}" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "2011:\n", + "20/(1+1), 20-11, -2.0+(1/.1), (2.0+1)!+1, √(20-11)!, (2.0+1)!-1, 2.0*(1+1), √(20-11), 2+(0/11), 2.0/(1+1), 2*(0/11)\n", + "2012:\n", + "20/(1*2), (2.0+1)^2, 20-12, 2.0+(1/.2), 2.0*(1+2), 2.0+(1+2), 2.0*(1*2), 2.0-(1-2), 2+(0/12), -.20+1.2, 2*(0/12)\n", + "2013:\n", + "20/(-1+3), (2.0+1)*3, 2.0*(1+3), 20-13, 2.0+(1+3), 20/(1+3), 2.0-(1-3), (2.0-1)*3, 2+(0/13), (2.0+1)/3, 2*(0/13)\n", + "2014:\n", + "2.0*(1+4), (2.0+1)^√4, 2.0/(1/4), 2.0+(1+4), 20-14, 20*(1/4), 20/(1+4), -20-(1-4!), 2+(0/14), .20*(1+4), 2*(0/14)\n", + "2015:\n", + "2.0*(1*5), √(201-5!), 2.0+(1+5), 2.0+(1*5), (.20*15)!, 20-15, 20/(1*5), .20*15, 2+(0/15), 2*(0.1*5), 2*(0/15)\n", + "2016:\n", + "2*(0-(1-6)), 2.0+(1+6), 2.0*√16, 2.0-(1-6), √(20+16), 20/√16, 20-16, 2.0+(1^6), 2+(0/16), .20*(-1+6), 2*(0/16)\n", + "2017:\n", + "2.0+(1+7), 2.0+(1*7), 2.0-(1-7), (2.0-1)*7, (20-17)!, -2.0+(1*7), -2.0-(1-7), 20-17, 2+(0/17), 2.0-(1^7), 2*(0/17)\n", + "2018:\n", + "2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8), 2*(0/18)\n", + "2019:\n", + "20-(1+9), (2.0-1)*9, (2*0)-(1-9), -2.0+(1*9), -2.0-(1-9), 20/(1+√9), 2.0-(1-√9), 2.0+(1^9), 2+(0/19), 20-19, 2*(0/19)\n" + ] } ], "source": [ - "{y: littman_countdown(y) \n", - " for y in range(2011, 2020)}" + "for y in range(2011, 2020):\n", + " print('{}:\\n{}'.format(y, littman_countdown(y)))" ] } ], From 4a94ef6a428fd53ed8a61d6f7ccc8d2e97594e2c Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Tue, 2 Jan 2018 00:10:39 -0800 Subject: [PATCH 55/55] Countdown.ipynb updated with Littman Countdown --- ipynb/Countdown.ipynb | 2537 +++++++++++++++++++++-------------------- 1 file changed, 1273 insertions(+), 1264 deletions(-) diff --git a/ipynb/Countdown.ipynb b/ipynb/Countdown.ipynb index a756429..bfb69cf 100644 --- a/ipynb/Countdown.ipynb +++ b/ipynb/Countdown.ipynb @@ -351,7 +351,7 @@ " ...}\n", "\n", "\n", - "I can implement `EXPS` as a defaultdict of dicts, and define `expressions(numbers)` to fill in `EXPS` entries for `numbers` and all sub-sequences of `numbers`. Within `fill_tables`, note that `Lnums` and `Rnums` are sequences of numbers, such as `(10, 9, 8)` and `(7, 6)`. `L` and `R` are values, such as `27` and `1`. And `Lexp` and `Rexp` are strings, such as `\"((10+9)+8)\"` and `\"(7-6)\"`. Rather than catching division-by-zero errors, we just avoid the division when the denominator is 0." + "I can implement `EXPS` as a defaultdict of dicts, and define `expressions(numbers)` to fill in `EXPS` entries for `numbers` and all sub-sequences of `numbers`. Within `expressions`, note that `Lnums` and `Rnums` are sequences of numbers, such as `(10, 9, 8)` and `(7, 6)`. `L` and `R` are numeric values, such as `27` and `1`. And `Lexp` and `Rexp` are strings, such as `\"((10+9)+8)\"` and `\"(7-6)\"`. Rather than catching division-by-zero errors, we just avoid the division when the denominator is 0." ] }, { @@ -381,11 +381,11 @@ " for (Lnums, Rnums) in splits(numbers):\n", " for (L, R) in itertools.product(expressions(Lnums), expressions(Rnums)):\n", " Lexp, Rexp = '(' + EXPS[Lnums][L], EXPS[Rnums][R] + ')'\n", - " if R != 0: \n", - " expr(numbers, L / R, Lexp + '/' + Rexp)\n", " expr(numbers, L * R, Lexp + '*' + Rexp)\n", " expr(numbers, L - R, Lexp + '-' + Rexp)\n", " expr(numbers, L + R, Lexp + '+' + Rexp)\n", + " if R != 0: \n", + " expr(numbers, L / R, Lexp + '/' + Rexp)\n", " return EXPS[numbers]\n", "\n", "def expr(numbers, value, exp): \n", @@ -432,7 +432,7 @@ " 8.88888888888889: '((10/9)*8)',\n", " 9: '((10-9)+8)',\n", " 9.11111111111111: '((10/9)+8)',\n", - " 10.0: '(10*(9-8))',\n", + " 10: '(10/(9-8))',\n", " 11: '((10+9)-8)',\n", " 11.125: '(10+(9/8))',\n", " 11.25: '((10*9)/8)',\n", @@ -509,8 +509,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 30.1 s, sys: 767 ms, total: 30.9 s\n", - "Wall time: 31 s\n" + "CPU times: user 29.5 s, sys: 698 ms, total: 30.2 s\n", + "Wall time: 30.2 s\n" ] }, { @@ -540,7 +540,7 @@ "source": [ "We have an answer! And in a lot less than 8 hours, thanks to dynamic programming! \n", "\n", - "Removing unnecessry brackets, this equation is equivalent to:" + "Removing unnecessary brackets, this equation is equivalent to:" ] }, { @@ -569,6 +569,47 @@ "(10 + 9 * 8 * 7 - 6 - 5) * 4 + 3 + 2 - 1" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are solutions for nearby years:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{2010: '((((10*((9+((8+7)*6))+(5/4)))+3)*2)-1)',\n", + " 2011: '((((((10+9)*8)+7)*(6+(5*(4/3))))-2)-1)',\n", + " 2012: '((((((10+9)*8)+7)*(6+(5*(4/3))))-2)/1)',\n", + " 2013: '((((((10+9)*8)+7)*(6+(5*(4/3))))-2)+1)',\n", + " 2014: '((((10-(9*8))*(7-(6*((5+4)+3))))/2)-1)',\n", + " 2015: '((((((((10*9)+8)-7)*(6+5))+4)+3)*2)-1)',\n", + " 2016: '(((((((10+((9*8)*7))-6)-5)*4)+3)+2)-1)',\n", + " 2017: '(((((((10+((9*8)*7))-6)-5)*4)+3)+2)/1)',\n", + " 2018: '(((((((10+((9*8)*7))-6)-5)*4)+3)+2)+1)',\n", + " 2019: '((((10+9)+((8+7)*(6+((5*4)*3))))*2)+1)',\n", + " 2020: '((((10+((((9*8)*7)/(6-5))*4))-3)-2)-1)',\n", + " 2021: '((((10+((((9*8)*7)/(6-5))*4))-3)-2)/1)',\n", + " 2022: '((((10+((((9*8)*7)/(6-5))*4))-3)-2)+1)',\n", + " 2023: '(((((10+(((9*(8+7))*6)*5))/4)-3)*2)-1)',\n", + " 2024: '(((((10+(((9*(8+7))*6)*5))/4)-3)*2)/1)'}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{y: expressions(c10)[y] for y in range(2010, 2025)}" + ] + }, { "cell_type": "markdown", "metadata": { @@ -587,7 +628,7 @@ "\n", "As it stands, my program can't answer that question, because I only keep one expression for each value. \n", "\n", - "Also, I'm not sure what it means to be a distinct solution. For example, are `((10+9)+8)` and `(10+(9+8))` different, or are they same, because they both are equivalent to `(10+9+8)`? Similarly, are `((3-2)-1)` and `(3-(2+1)` different, or the same because they both are equivalent to `(3 + -2 + -1)`? I think the notion of \"distinct solution\" is just inherently ambiguous, and each of these questions could reasonably be answered either way. My choice is to count each of these as distinct: every expression has exactly ten numbers, nine operators, and nine pairs of brackets, and if an expression differs in any character, it is different. But I won't argue with anyone who has a different definition of \"distinct solution.\"\n", + "Also, I'm not sure what it means to be a distinct solution. For example, are `((10+9)+8)` and `(10+(9+8))` different, or are they same, because they both are equivalent to `(10+9+8)`? Similarly, are `((3-2)-1)` and `(3-(2+1)` different, or the same because they both are equivalent to `(3 + -2 + -1)`? I think the notion of \"distinct solution\" is just inherently ambiguous, and each of these questions could reasonably be answered either way. My choice is to count each of these as distinct: every expression has exactly ten numbers, nine operators, and nine pairs of brackets, and if an expression differs in any character, it is different. But I won't argue with anyone who prefers a different definition of \"distinct solution.\"\n", "\n", "So how can I count expressions? One approach would be to go back to enumerating every equation (all 4862 × 49 = 1.2 bilion of them) and checking which ones equal 2016. That would take about 40 hours with my Python program, but I could get it under 40 minutes in a more efficient language.\n", "\n", @@ -598,12 +639,12 @@ "because there are 2 ways to make 27 with the numbers `(10, 9, 8)`, namely, `((10+9)+8)` and `(10+(9+8))`.\n", "How do we compute the counts? By looking at every split and operator choice that can make the value, and summing up (over all of these) the product of the counts for the two sides. For example, there are 2 ways to make 27 with `(10 ... 8)`, and it turns out there are 3526 ways to make 1 with `(7 ... 1)`. So there are 2 × 3526 = 7052 ways to make 28 with this split by adding 27 and 1. \n", "\n", - "I'll make `expr` handle `COUNTS` as well as `EXPS`. And I'll define `clear` to clear out the cache of `COUNTS` and `EXPS`, so that we can fill the tables with our new, improved entries." + "I'll make `expr` maintain `COUNTS` as well as `EXPS`. And I'll define `clear` to clear out the cache of `COUNTS` and `EXPS`, so that we can fill the tables with our new, improved entries." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "button": false, "collapsed": true, @@ -627,11 +668,11 @@ " for (L, R) in itertools.product(expressions(Lnums), expressions(Rnums)):\n", " Lexp, Rexp = '(' + EXPS[Lnums][L], EXPS[Rnums][R] + ')'\n", " count = COUNTS[Lnums][L] * COUNTS[Rnums][R]\n", - " if R != 0: \n", - " expr(numbers, L / R, Lexp + '/' + Rexp, count)\n", " expr(numbers, L * R, Lexp + '*' + Rexp, count)\n", " expr(numbers, L - R, Lexp + '-' + Rexp, count)\n", " expr(numbers, L + R, Lexp + '+' + Rexp, count)\n", + " if R != 0: \n", + " expr(numbers, L / R, Lexp + '/' + Rexp, count)\n", " return EXPS[numbers]\n", "\n", "def expr(numbers, val, exp, count):\n", @@ -644,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "button": false, "new_sheet": false, @@ -668,7 +709,7 @@ " 8.88888888888889: '((10/9)*8)',\n", " 9: '((10-9)+8)',\n", " 9.11111111111111: '((10/9)+8)',\n", - " 10.0: '(10*(9-8))',\n", + " 10: '(10/(9-8))',\n", " 11: '((10+9)-8)',\n", " 11.125: '(10+(9/8))',\n", " 11.25: '((10*9)/8)',\n", @@ -680,7 +721,7 @@ " 720: '((10*9)*8)'}" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -692,7 +733,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "button": false, "new_sheet": false, @@ -716,7 +757,7 @@ " 8.88888888888889: 2,\n", " 9: 2,\n", " 9.11111111111111: 1,\n", - " 10.0: 2,\n", + " 10: 2,\n", " 11: 2,\n", " 11.125: 1,\n", " 11.25: 2,\n", @@ -728,7 +769,7 @@ " 720: 2})" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -739,7 +780,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "button": false, "new_sheet": false, @@ -754,7 +795,7 @@ "2" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -778,7 +819,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "button": false, "new_sheet": false, @@ -791,7 +832,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1min 4s, sys: 1.15 s, total: 1min 6s\n", + "CPU times: user 1min 4s, sys: 1.15 s, total: 1min 5s\n", "Wall time: 1min 6s\n" ] }, @@ -801,7 +842,7 @@ "'(((((((10+((9*8)*7))-6)-5)*4)+3)+2)-1)'" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -829,7 +870,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "button": false, "new_sheet": false, @@ -844,7 +885,7 @@ "30066" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -867,33 +908,11 @@ "\n", "**But I don't believe it.**\n", "\n", - "Why not? Because floating point division can have round-off errors. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "button": false, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2015.9999999999998" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2015 + 1/3 + 1/3 + 1/3" + "Why not? Because floating point division can have round-off errors. \n", + "\n", + "# Dealing with Round-off Errors\n", + "\n", + "Consider this:" ] }, { @@ -910,7 +929,7 @@ { "data": { "text/plain": [ - "False" + "2015.9999999999998" ] }, "execution_count": 19, @@ -918,6 +937,32 @@ "output_type": "execute_result" } ], + "source": [ + "2015 + 1/3 + 1/3 + 1/3" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "button": false, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "2015 + 1/3 + 1/3 + 1/3 == 2016" ] @@ -932,14 +977,12 @@ } }, "source": [ - "# Dealing with Round-off Errors\n", - "\n", - "So there might be perfectly good solutions that are hiding in the `EXPS` table under `2015.9999999999998` (or some similar number) when they should be exactly `2016`. Let's find all the values that are very near to `2016`:" + "This means there might be perfectly good expressions that are counted under `2015.9999999999998` (or some similar number) when they should be counted for `2016`. Let's find all the values that are very near to `2016`:" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": { "button": false, "new_sheet": false, @@ -956,7 +999,7 @@ " 2015.9999999999993,\n", " 2015.9999999999995,\n", " 2015.9999999999998,\n", - " 2016.0,\n", + " 2016,\n", " 2016.0000000000002,\n", " 2016.0000000000005,\n", " 2016.0000000000018,\n", @@ -964,14 +1007,16 @@ " 2016.0000000000023}" ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "{val for val in expressions(c10)\n", - " if abs(val - 2016) < 0.000001}" + "epsilon = 10 ** -8\n", + "\n", + "{y for y in expressions(c10)\n", + " if abs(y - 2016) < epsilon}" ] }, { @@ -986,55 +1031,38 @@ "source": [ "I suspect that all of these actually should be exactly 2016. \n", "\n", - "To find out for sure, let's re-do all the calculations using exact rational arithmetic, as provided by the `fractions.Fraction` data type. From experience I know that this will be an order of magnitude slower, so we're looking at 10 minutes or more of computation.\n", - "\n", - "I'll replace the computation `L / R` with `divide(L, R)`, which calls `Fraction`. To mitigate the expense of this computation, I make two optimizations. First, `divide` replaces a whole fraction, such as `Fraction(6, 2)`, with an `int`, such as `3`. Second, I modify `expr` to *not* fill in `EXPS[c10]`, except for `EXPS[c10][2016]`. The rationale is that we don't need the other entries, and by not storing them, we save a lot of memory, and thus save garbage collection time." + "To be absolutely sure, I could re-do the calculations using exact rational arithmetic, as provided by the `fractions.Fraction` data type. From experience I know that would be an order of magnitude slower, so instead I'll just add up all the counts in the `COUNTS` table that are within epsilon of 2016:" ] }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "button": false, - "collapsed": true, - "new_sheet": false, - "run_control": { - "read_only": false + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{2015.999999999997: 15,\n", + " 2015.999999999999: 10,\n", + " 2015.9999999999993: 14,\n", + " 2015.9999999999995: 1930,\n", + " 2015.9999999999998: 5868,\n", + " 2016: 30066,\n", + " 2016.0000000000002: 5792,\n", + " 2016.0000000000005: 510,\n", + " 2016.0000000000018: 264,\n", + " 2016.000000000002: 18,\n", + " 2016.0000000000023: 12}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" } - }, - "outputs": [], + ], "source": [ - "from fractions import Fraction\n", - "\n", - "def expressions(numbers):\n", - " \"Fill EXPS table for numbers, and all sub-sequences of numbers. Return EXPS[numbers]\"\n", - " if numbers in EXPS: # Already did the work\n", - " pass\n", - " elif len(numbers) == 1: # Only one way to make an expression out of a single number\n", - " expr(numbers, numbers[0], str(numbers[0]), 1)\n", - " else: # Split in all ways; fill tables for left and right; combine tables in all ways\n", - " for (Lnums, Rnums) in splits(numbers):\n", - " for (L, R) in itertools.product(expressions(Lnums), expressions(Rnums)):\n", - " Lexp, Rexp = '(' + EXPS[Lnums][L], EXPS[Rnums][R] + ')'\n", - " count = COUNTS[Lnums][L] * COUNTS[Rnums][R]\n", - " if R != 0: \n", - " expr(numbers, divide(L, R), Lexp + '/' + Rexp, count)\n", - " expr(numbers, L * R, Lexp + '*' + Rexp, count)\n", - " expr(numbers, L - R, Lexp + '-' + Rexp, count)\n", - " expr(numbers, L + R, Lexp + '+' + Rexp, count)\n", - " return EXPS[numbers]\n", - "\n", - "def divide(L, R):\n", - " \"Exact rational division of L/R.\"\n", - " f = Fraction(L, R)\n", - " return (f.numerator if f.denominator == 1 else f)\n", - "\n", - "def expr(numbers, value, exp, count):\n", - " \"Fill EXPS[numbers][val] with exp, and increment COUNTS.\"\n", - " if numbers is c10 and value != 2016: \n", - " return\n", - " EXPS[numbers][value] = exp\n", - " COUNTS[numbers][value] += count" + "{y: COUNTS[c10][y] for y in expressions(c10)\n", + " if abs(y - 2016) < epsilon}" ] }, { @@ -1052,40 +1080,22 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "button": false, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, + "execution_count": 23, + "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 12min 43s, sys: 1.82 s, total: 12min 45s\n", - "Wall time: 12min 46s\n" - ] - }, { "data": { "text/plain": [ "44499" ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "clear()\n", - "\n", - "%time expressions(c10)[2016]\n", - "\n", - "COUNTS[c10][2016]" + "sum(_.values())" ] }, { @@ -1098,7 +1108,18 @@ } }, "source": [ - "That did indeed take about ten times longer, but we now have an answer that I have more confidence in (but I wouldn't accept it as definitive until it was independently verified and had an extensive test suite). And of course, if you have a different definition of \"distinct solution,\" you will get a different answer." + "I have more confidence in this answer, 44,499, than in 30,066, but I wouldn't accept it as definitive until it was independently verified and passed an extensive test suite. And of course, if you have a different definition of \"distinct solution,\" you will get a different answer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "clear()" ] }, { @@ -1111,15 +1132,15 @@ } }, "source": [ - "# Dealing with the Exponentiation Operator\n", + "# Exponentiation, and Four 4s\n", "\n", "Now let's turn to another of Alex's puzzles: making 2016 and other target values from a string of four or five `4`s, with exponentiation allowed. Exponentiation is tricky for five reasons:\n", "\n", - "- **Division by zero**: `(0 ** -1)` is the same as `(1 / 0)`, and gives a `ZeroDivisionError`.\n", - "- **Irrationals**: `(3 ** (1 / 2))` is an irrational number; so we can't do exact rational arithmetic.\n", - "- **Imaginaries**: `(-1 ** (1 / 2))` is an imaginary number, but Python gives a `ValueError`.\n", - "- **Overflow**: `(10. ** (9. ** 8.))`, as a `float`, gives a `OverflowError`.\n", - "- **Finite memory**: [`(10 ** (9 ** (8 * 7)))`](http://www.wolframalpha.com/input/?i=10+%5E+9+%5E+56), as an `int`, gives an `OutOfMemoryError` (even if your memory uses every atom on Earth).\n", + "- **Division by zero**: `(0 ^ -1)` is the same as `(1 / 0)`, and gives a `ZeroDivisionError`.\n", + "- **Irrationals**: `(3 ^ (1 / 2))` is an irrational number; so we can't do exact rational arithmetic.\n", + "- **Imaginaries**: `(-1 ^ (1 / 2))` is an imaginary number, but Python gives a `ValueError`.\n", + "- **Overflow**: `(10. ^ (9. ^ 8.))`, as a `float`, gives a `OverflowError`.\n", + "- **Finite memory**: [`(10 ^ (9 ^ (8 * 7)))`](http://www.wolframalpha.com/input/?i=10+%5E+9+%5E+56), as an `int`, gives an `OutOfMemoryError` (even if your memory uses every atom on Earth).\n", "\n", "How do we deal with this? We can't do exact rational arithmetic. We could try to do exact *algebra*, perhaps using [SymPy](http://www.sympy.org/en/index.html), but that seems difficult\n", "and computationally expensive, so instead I will abandon the goal of exact computation, and do everything in the domain of floats (reluctantly accepting that there will be some round-off errors). We'll coerce numbers to floats when we first put them in the table, and all subsequent operations will be with floats. I define a new function, `expr2`, to call `expr`, catching arithmetic errors. Since we are making some rather arbitrary decisions about what expressions are allowed (e.g. imaginary numbers are not), I'll give up on trying to maintain `COUNTS`." @@ -1127,7 +1148,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 62, "metadata": { "button": false, "collapsed": true, @@ -1150,7 +1171,7 @@ " for (Lnums, Rnums) in splits(numbers):\n", " for (L, R) in itertools.product(expressions(Lnums), expressions(Rnums)):\n", " Lexp, Rexp = '(' + EXPS[Lnums][L], EXPS[Rnums][R] + ')'\n", - " expr2(numbers, L, pow, R, Lexp + '**' + Rexp)\n", + " expr2(numbers, L, pow, R, Lexp + '^' + Rexp)\n", " expr2(numbers, L, truediv, R, Lexp + '/' + Rexp)\n", " expr2(numbers, L, mul, R, Lexp + '*' + Rexp)\n", " expr2(numbers, L, add, R, Lexp + '+' + Rexp)\n", @@ -1182,7 +1203,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 64, "metadata": { "button": false, "new_sheet": false, @@ -1194,10 +1215,10 @@ { "data": { "text/plain": [ - "'(((4**4)-4)*(4+4))'" + "'(((4^4)-4)*(4+4))'" ] }, - "execution_count": 24, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -1223,7 +1244,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": { "button": false, "collapsed": true, @@ -1259,7 +1280,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 65, "metadata": { "button": false, "new_sheet": false, @@ -1283,7 +1304,7 @@ " 9: '(((4/4)+4)+4)'}" ] }, - "execution_count": 26, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -1309,7 +1330,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 67, "metadata": { "button": false, "new_sheet": false, @@ -1326,7 +1347,7 @@ " 2: '((((5+5)/5)-5)+5)',\n", " 3: '((((5*5)-5)-5)/5)',\n", " 4: '((((5-5)-5)/5)+5)',\n", - " 5: '((5/((5**5)**5))+5)',\n", + " 5: '((5/((5^5)^5))+5)',\n", " 6: '((((5/5)+5)*5)/5)',\n", " 7: '(((5/5)+(5/5))+5)',\n", " 8: '((((5+5)+5)/5)+5)',\n", @@ -1336,15 +1357,17 @@ " 12: '((((5+5)/5)+5)+5)'}" ] }, - "execution_count": 27, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ff = (5, 5, 5, 5, 5)\n", + "clear()\n", "\n", - "makeable(ff)" + "five5s = (5, 5, 5, 5, 5)\n", + "\n", + "makeable(five5s)" ] }, { @@ -1361,14 +1384,14 @@ "\n", "# More Operations\n", "\n", - "With some research, I [see](http://www.infobarrel.com/Five_Fives_Problem_Recreational_Mathematics) that others who got up to 55 with five 5s used these three concepts:\n", + "With some research, I [see](http://www.infobarrel.com/Five_Fives_Problem_Recreational_Mathematics) that others who got up to 55 with five 5s used some or all of these three concepts:\n", "\n", "- **digit concatenation**: `55`\n", "- **decimal point**: `.5`\n", - "- **unary operations**: `-5`, `5!` and √ `5`\n", + "- **unary operations**: `-5`, `5!`, and √ `5`\n", "\n", "\n", - "We'll refactor `expressions` to call these three new subfunctions:\n", + "We'll refactor `expressions` to call the following three new subfunctions:\n", "\n", "- `digit_expressions`: For every subsequence of numbers, we'll smush the digits together, and then make a table entry for those resulting digits as an integer, and with a decimal point in each possible position.\n", "- `binary_expressions`: The code that previously was the main body of `expressions`.\n", @@ -1379,7 +1402,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 68, "metadata": { "button": false, "new_sheet": false, @@ -1400,34 +1423,27 @@ " return EXPS[numbers]\n", "\n", "def digit_expressions(numbers):\n", - " \"Fill tables with expressions made from the digits of numbers, and a decimal point.\"\n", + " \"Fill EXPS with digits, with opyional minus sign and decimal point.\"\n", + " # digit_expressions(1, 2) => 12, .12, 1.2\n", " exp = ''.join(str(n) for n in numbers)\n", - " leading_zero = exp.startswith('0')\n", - " if valid_digits(exp):\n", - " expr(numbers, float(exp), exp)\n", - " expr(numbers, -float(exp), '-' + exp)\n", - " for d in range(len(exp)):\n", - " decimal = exp[:d] + '.' + exp[d:]\n", - " if valid_digits(exp[:d]):\n", + " for d in range(len(exp) + 1):\n", + " decimal = (exp[:d] + '.' + exp[d:]).rstrip('.')\n", + " if d < 2 or not decimal.startswith('0'): # '01' is illegal; '0', '0.1' ok\n", " expr(numbers, float(decimal), decimal)\n", " expr(numbers, -float(decimal), '-' + decimal)\n", - " \n", - "def valid_digits(digits):\n", - " \"Allow '0', but not '012'.\"\n", - " return digits == '0' or digits == '' or digits[0] != '0'\n", " \n", "def binary_expressions(numbers):\n", - " \"Fill tables with all expressions formed by splitting numbers and combining with an op.\"\n", + " \"Fill EXPS with all expressions formed by splitting numbers and combining with an op.\"\n", " for (Lnums, Rnums) in splits(numbers):\n", " for (L, R) in itertools.product(expressions(Lnums), expressions(Rnums)):\n", " Lexp, Rexp = '(' + EXPS[Lnums][L], EXPS[Rnums][R] + ')'\n", - " if 1 <= R <= 10 and (L > 0 or int(R) == R):\n", - " expr2(numbers, L, pow, R, Lexp + '**' + Rexp)\n", " expr2(numbers, L, truediv, R, Lexp + '/' + Rexp)\n", " expr2(numbers, L, mul, R, Lexp + '*' + Rexp)\n", " expr2(numbers, L, add, R, Lexp + '+' + Rexp)\n", " expr2(numbers, L, sub, R, Lexp + '-' + Rexp)\n", - " \n", + " if 1 <= R <= 10 and (L > 0 or int(R) == R):\n", + " expr2(numbers, L, pow, R, Lexp + '^' + Rexp)\n", + " \n", "def unary_expressions(numbers):\n", " \"Fill tables for -v, √v and v!\"\n", " for v in tuple(EXPS[numbers]):\n", @@ -1435,7 +1451,7 @@ " expr(numbers, -v, '-(' + exp + ')')\n", " if v > 0: \n", " expr(numbers, sqrt(v), '√' + exp)\n", - " if 2 <= v <= 6 and v == int(v):\n", + " if 3 <= v <= 6 and v == int(v):\n", " expr(numbers, factorial(v), exp + '!')" ] }, @@ -1449,15 +1465,14 @@ } }, "source": [ - "Now that we have more variety in the types of expressions formed, I want to choose a \"good\" expression to represent each value. I'll modify `expr` so that when there are multiple expressions for a value, it chooses the one with the least \"weight,\" where I define `weight` as the length of the string, plus a penalty of 2 for every square root sign (just because square root feels \"heavier\" than the other operations) and of 1 for every decimal point." + "Now that we have more variety in the types of expressions formed, I want to choose a \"good\" expression to represent each value. I'll modify `expr` so that when there are multiple expressions for a value, it chooses the one with the least \"weight,\" where I define the `weight` of a string as the sum of the weights of the characters, where the square root sign is the heaviest, and other characters are as listed." ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 69, "metadata": { "button": false, - "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1467,10 +1482,13 @@ "source": [ "def expr(numbers, value, exp): \n", " \"Fill EXPS[numbers][val] with exp, unless we already have a lighter exp.\"\n", - " if value not in EXPS[numbers] or weight(exp) < weight(EXPS[numbers][value]):\n", + " if value not in EXPS[numbers] or weight(exp) <= weight(EXPS[numbers][value]):\n", " EXPS[numbers][value] = exp\n", " \n", - "def weight(exp): return len(exp) + 2 * exp.count('√') + exp.count('.') " + "WEIGHTS = {'√':3, '.':2, '^':1.3, '/':1.2, '-':1.1}\n", + " \n", + "def weight(exp, weights=WEIGHTS): \n", + " return sum(weights.get(c, 1) for c in exp)" ] }, { @@ -1488,7 +1506,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 70, "metadata": { "button": false, "new_sheet": false, @@ -1501,173 +1519,173 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1min 56s, sys: 2.4 s, total: 1min 59s\n", - "Wall time: 1min 59s\n" + "CPU times: user 6min 4s, sys: 2.81 s, total: 6min 7s\n", + "Wall time: 6min 7s\n" ] }, { "data": { "text/plain": [ - "{0: '(5*(55-55))',\n", - " 1: '((55/55)**5)',\n", - " 2: '(55/(.5*55))',\n", - " 3: '(5-(5!/(5+55)))',\n", + "{0: '((55-55)*5)',\n", + " 1: '((55/55)^5)',\n", + " 2: '(55/(55*.5))',\n", + " 3: '√(5!-(555/5))',\n", " 4: '(5-(55/55))',\n", - " 5: '(5+(55-55))',\n", - " 6: '(5+(55/55))',\n", - " 7: '(((5+55)/5)-5)',\n", + " 5: '((55-55)+5)',\n", + " 6: '((55/55)+5)',\n", + " 7: '(((55+5)/5)-5)',\n", " 8: '(((5!-55)/5)-5)',\n", " 9: '(5!-(555/5))',\n", " 10: '(5!-(55+55))',\n", - " 11: '(5+((55/5)-5))',\n", - " 12: '(5!/(55/5.5))',\n", - " 13: '((5+(5+55))/5)',\n", + " 11: '((.55*5!)-55)',\n", + " 12: '((5.5/55)*5!)',\n", + " 13: '(((55+5)+5)/5)',\n", " 14: '((5*5)-(55/5))',\n", - " 15: '(5+(55/5.5))',\n", - " 16: '(((5*5)+55)/5)',\n", - " 17: '(5+((5+55)/5))',\n", - " 18: '(5+((5!-55)/5))',\n", - " 19: '((5*5)-(5+(5/5)))',\n", - " 20: '(55/(5*.55))',\n", - " 21: '(5+(5+(55/5)))',\n", + " 15: '((55/5.5)+5)',\n", + " 16: '((55+(5*5))/5)',\n", + " 17: '(((55+5)/5)+5)',\n", + " 18: '(((5!-55)/5)+5)',\n", + " 19: '((5*5)-((5/5)+5))',\n", + " 20: '(55/(.55*5))',\n", + " 21: '(((55/5)+5)+5)',\n", " 22: '((55+55)/5)',\n", - " 23: '((5+(55/.5))/5)',\n", + " 23: '(((55/.5)+5)/5)',\n", " 24: '(5-(55/55))!',\n", - " 25: '(55-(5+(5*5)))',\n", - " 26: '(55-(5+(5!/5)))',\n", - " 27: '(.5*(55-(5/5)))',\n", - " 28: '(.5*((5/5)+55))',\n", - " 29: '(5+((5*5)-(5/5)))',\n", - " 30: '(5*((55/5)-5))',\n", - " 31: '(55-(5-(5/5))!)',\n", - " 32: '(55-((5!-5)/5))',\n", - " 33: '(.55*(5+55))',\n", - " 34: '((5!+(55-5))/5)',\n", - " 35: '(5+(55-(5*5)))',\n", - " 36: '((5*5)+(55/5))',\n", - " 37: '((5!+(5!-55))/5)',\n", - " 38: '(5+(.5*(5!*.55)))',\n", - " 39: '(5+(5+(5+(5!/5))))',\n", - " 40: '(55-(5+(5+5)))',\n", - " 41: '(5!-((5!/5)+55))',\n", - " 42: '((5!*.55)-(5!/5))',\n", + " 25: '(55-((5*5)+5))',\n", + " 26: '(55-((5!/5)+5))',\n", + " 27: '((55/(5*.5))+5)',\n", + " 28: '((55+(5/5))*.5)',\n", + " 29: '(((5*5)-(5/5))+5)',\n", + " 30: '(((55/5)-5)*5)',\n", + " 31: '(((55*5)-5!)/5)',\n", + " 32: '(((5-5!)/5)+55)',\n", + " 33: '((55+5)*.55)',\n", + " 34: '(((55+5!)-5)/5)',\n", + " 35: '((55-(5*5))+5)',\n", + " 36: '((55/5)+(5*5))',\n", + " 37: '(((5!-55)+5!)/5)',\n", + " 38: '(((.55*.5)*5!)+5)',\n", + " 39: '((((5!/5)+5)+5)+5)',\n", + " 40: '(55-((5+5)+5))',\n", + " 41: '(5!-(55+(5!/5)))',\n", + " 42: '((.55*5!)-(5!/5))',\n", " 43: '(55-(5!/(5+5)))',\n", " 44: '(55-(55/5))',\n", - " 45: '((5*5!)-555)',\n", - " 46: '((5!+(55/.5))/5)',\n", - " 47: '((5!/5)+((5!-5)/5))',\n", - " 48: '(5!/(5*(5.5-5)))',\n", - " 49: '(55-(5+(5/5)))',\n", + " 45: '((5!*5)-555)',\n", + " 46: '(((55/.5)+5!)/5)',\n", + " 47: '(((5!-5)/5)+(5!/5))',\n", + " 48: '(5!/((5.5-5)*5))',\n", + " 49: '(55-((5/5)+5))',\n", " 50: '(55.5-5.5)',\n", - " 51: '((5/5)+(55-5))',\n", - " 52: '(55-(.5+(.5*5)))',\n", + " 51: '((55+(5/5))-5)',\n", + " 52: '(((5.5+5)*5)-.5)',\n", " 53: '(55-((5+5)/5))',\n", - " 54: '(((5*55)-5)/5)',\n", - " 55: '(.5*(55+55))',\n", - " 56: '((5+(5*55))/5)',\n", - " 57: '(55+((5+5)/5))',\n", - " 58: '((.5*5)+55.5)',\n", - " 59: '(5+(55-(5/5)))',\n", - " 60: '(5+(5+(55-5)))',\n", - " 61: '(5.5+55.5)',\n", + " 54: '(((55*5)-5)/5)',\n", + " 55: '((55+55)*.5)',\n", + " 56: '(((55*5)+5)/5)',\n", + " 57: '(((5+5)/5)+55)',\n", + " 58: '(55.5+(5*.5))',\n", + " 59: '((55-(5/5))+5)',\n", + " 60: '(√(55*55)+5)',\n", + " 61: '(55.5+5.5)',\n", " 62: '((55-(5!/5))/.5)',\n", - " 63: '(5.5+(.5*(5!-5)))',\n", - " 64: '(5!-((5/5)+55))',\n", - " 65: '(5*((5!-55)/5))',\n", - " 66: '(55+(55/5))',\n", - " 67: '(55+(5!/(5+5)))',\n", - " 68: '(5.5+(.5*(5+5!)))',\n", - " 69: '(5!-((.5+(5*5))/.5))',\n", - " 70: '(5+(5+(5+55)))',\n", - " 71: '((.5*5!)+(55/5))',\n", - " 72: '((5+(5/5))!/(5+5))',\n", - " 73: '((5*5)+((5!+5!)/5))',\n", - " 74: '((5!/5)+(55-5))',\n", - " 75: '((5*5)+(55-5))',\n", - " 76: '(5+(5+(5!*.55)))',\n", - " 77: '(5+(5!-((5!+5!)/5)))',\n", - " 78: '(55+((5!-5)/5))',\n", - " 79: '(55+(5-(5/5))!)',\n", - " 80: '(5*(5+(55/5)))',\n", - " 81: '((√.5+(5!/√(5-.5)))/√.5)',\n", - " 82: '(5!-(((5!/5)-5)/.5))',\n", - " 83: '((.5*5!)+((5!-5)/5))',\n", - " 84: '(5+((5!/5)+55))',\n", - " 85: '(5+((5*5)+55))',\n", + " 63: '(((5!-5)*.5)+5.5)',\n", + " 64: '(5!-(55+(5/5)))',\n", + " 65: '((5-(55+5))+5!)',\n", + " 66: '((55/5)+55)',\n", + " 67: '((5!/(5+5))+55)',\n", + " 68: '(((5!+5)*.5)+5.5)',\n", + " 69: '((5!-5)*((.5/5)+.5))',\n", + " 70: '(((55+5)+5)+5)',\n", + " 71: '((55/5)+(5!*.5))',\n", + " 72: '(((5/5)+5)!/(5+5))',\n", + " 73: '(((5!+5!)/5)+(5*5))',\n", + " 74: '((55+(5!/5))-5)',\n", + " 75: '((55+(5*5))-5)',\n", + " 76: '(((.55*5!)+5)+5)',\n", + " 77: '((((5!+5!)+5!)/5)+5)',\n", + " 78: '(((5!-5)/5)+55)',\n", + " 79: '(((55*5)+5!)/5)',\n", + " 80: '(((55/5)+5)*5)',\n", + " 81: '(((5!/√(5-.5))+√.5)/√.5)',\n", + " 82: '(((5-(5!/5))/.5)+5!)',\n", + " 83: '(((5!-5)/5)+(5!*.5))',\n", + " 84: '((55+(5!/5))+5)',\n", + " 85: '((55+(5*5))+5)',\n", " 86: '((55/.5)-(5!/5))',\n", " 87: '((555-5!)/5)',\n", - " 88: '(.5+(.5*(5!+55)))',\n", - " 89: '(5!-(55-(5!/5)))',\n", - " 90: '(5!-(55-(5*5)))',\n", - " 91: '((5*5)+(5!*.55))',\n", - " 92: '(5!-(.5+(.5*55)))',\n", - " 93: '(.5+(5!-(.5*55)))',\n", - " 94: '(5!-((5*5)+(5/5)))',\n", + " 88: '((.55/(.5^5))*5)',\n", + " 89: '(((5!/5)-55)+5!)',\n", + " 90: '(((5*5)-55)+5!)',\n", + " 91: '((.55*5!)+(5*5))',\n", + " 92: '(5!-((55*.5)+.5))',\n", + " 93: '((.5-(55*.5))+5!)',\n", + " 94: '(5!-((5/5)+(5*5)))',\n", " 95: '(((55-5)/.5)-5)',\n", - " 96: '(5!-((5*5)-(5/5)))',\n", - " 97: '(5!-((5!/5)-(5/5)))',\n", - " 98: '(5!-(55/(.5*5)))',\n", + " 96: '(((5/5)+5!)-(5*5))',\n", + " 97: '((((5!*5)+5)-5!)/5)',\n", + " 98: '(5!-(55/(5*.5)))',\n", " 99: '((55-5.5)/.5)',\n", " 100: '((55/.5)-(5+5))',\n", " 101: '((55.5-5)/.5)',\n", - " 102: '(5+(5!-((5!-5)/5)))',\n", - " 103: '(55+((5!+5!)/5))',\n", - " 104: '(5!-(5+(55/5)))',\n", - " 105: '(55+(55-5))',\n", + " 102: '((((5-5!)/5)+5)+5!)',\n", + " 103: '(((5!+5!)/5)+55)',\n", + " 104: '(5!-((55/5)+5))',\n", + " 105: '((55+55)-5)',\n", " 106: '((555/5)-5)',\n", - " 107: '(5!-((5!-55)/5))',\n", - " 108: '(5!-((5+55)/5))',\n", - " 109: '(((5*5!)-55)/5)',\n", + " 107: '(((55-5!)/5)+5!)',\n", + " 108: '(5!-((55+5)/5))',\n", + " 109: '(((5!*5)-55)/5)',\n", " 110: '((555-5)/5)',\n", " 111: '(555/√(5*5))',\n", - " 112: '((5+555)/5)',\n", - " 113: '(5!-(5+((5+5)/5)))',\n", - " 114: '(5+(5!-(55/5)))',\n", - " 115: '(5+(55+55))',\n", - " 116: '(5+(555/5))',\n", - " 117: '(5!-(5-((5+5)/5)))',\n", - " 118: '(5!-(5!/(5+55)))',\n", + " 112: '((555+5)/5)',\n", + " 113: '(5!-(((5+5)/5)+5))',\n", + " 114: '((5-(55/5))+5!)',\n", + " 115: '((55+55)+5)',\n", + " 116: '((555/5)+5)',\n", + " 117: '((((5+5)/5)-5)+5!)',\n", + " 118: '(5!-(5!/(55+5)))',\n", " 119: '(5!-(55/55))',\n", - " 120: '(5!+(55-55))',\n", - " 121: '(5!+(55/55))',\n", - " 122: '(5!+(5!/(5+55)))',\n", - " 123: '(5+(5!-((5+5)/5)))',\n", - " 124: '((5*(5*5))-(5/5))',\n", - " 125: '(.5*(5*(55-5)))',\n", - " 126: '(5!+((55/5)-5))',\n", - " 127: '((5!*(5.5/5))-5)',\n", - " 128: '(5!+(5!/(5+(5+5))))',\n", + " 120: '((55-55)+5)!',\n", + " 121: '((55/55)+5!)',\n", + " 122: '((5!/(55+5))+5!)',\n", + " 123: '((((5+5)+5)/5)+5!)',\n", + " 124: '(((5*5)*5)-(5/5))',\n", + " 125: '(((55-5)*5)*.5)',\n", + " 126: '(((55/5)+5!)-5)',\n", + " 127: '(((5.5/5)*5!)-5)',\n", + " 128: '(((5*.5)+5.5)+5!)',\n", " 129: '((5!-55.5)/.5)',\n", - " 130: '(5!+(55/5.5))',\n", - " 131: '((55+(5*5!))/5)',\n", - " 132: '(5!+((5+55)/5))',\n", - " 133: '(5!+((5!-55)/5))',\n", - " 134: '((5!/5)+(55/.5))',\n", - " 135: '((5!+555)/5)',\n", - " 136: '(5+(5!+(55/5)))',\n", - " 137: '(5+(5!*(5.5/5)))',\n", - " 138: '(.5+(.5*(5*55)))',\n", - " 139: '(((5+(5/5))!/5)-5)',\n", - " 140: '(.5*(5+(5*55)))',\n", - " 141: '(5!+((5+5.5)/.5))',\n", - " 142: '(5!+(55/(.5*5)))',\n", - " 143: '(((5+(5/5))!-5)/5)',\n", + " 130: '((55/5.5)+5!)',\n", + " 131: '(((5!*5)+55)/5)',\n", + " 132: '(((55+5)/5)+5!)',\n", + " 133: '(((5!-55)/5)+5!)',\n", + " 134: '((55/.5)+(5!/5))',\n", + " 135: '((555+5!)/5)',\n", + " 136: '(((55/5)+5!)+5)',\n", + " 137: '(((5.5/5)*5!)+5)',\n", + " 138: '(((55*5)*.5)+.5)',\n", + " 139: '((((5/5)+5)!/5)-5)',\n", + " 140: '(((55*5)+5)*.5)',\n", + " 141: '(((5.5+5)/.5)+5!)',\n", + " 142: '((55/(5*.5))+5!)',\n", + " 143: '((((5/5)+5)!-5)/5)',\n", " 144: '(((55/5)-5)!/5)',\n", - " 145: '(5!+(.5*(55-5)))',\n", - " 146: '(5!+((5*5)+(5/5)))',\n", - " 147: '(5!+((.5*55)-.5))',\n", - " 148: '(.5+(5!+(.5*55)))',\n", - " 149: '(5+((5+(5/5))!/5))',\n", - " 150: '(5*(55-(5*5)))',\n", - " 151: '(5!+(55-(5!/5)))',\n", - " 152: '(5!+(((5+5)/5)**5))',\n", - " 153: '(5!+(.5*(5!*.55)))',\n", - " 154: '(5+(5+(5!+(5!/5))))',\n", - " 155: '(5*(55-(5!/5)))',\n", - " 156: '((5!+(5!*5.5))/5)'}" + " 145: '((((5*5)+5)*5)-5)',\n", + " 146: '(((5/5)+(5*5))+5!)',\n", + " 147: '(((55*.5)+5!)-.5)',\n", + " 148: '(((55*.5)+5!)+.5)',\n", + " 149: '(((5*5)*5)+(5!/5))',\n", + " 150: '((55-(5*5))*5)',\n", + " 151: '((55-(5!/5))+5!)',\n", + " 152: '((((5+5)/5)^5)+5!)',\n", + " 153: '(((.55*.5)*5!)+5!)',\n", + " 154: '((((5!/5)+5!)+5)+5)',\n", + " 155: '((55-(5!/5))*5)',\n", + " 156: '(((5.5*5!)+5!)/5)'}" ] }, - "execution_count": 69, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -1675,7 +1693,7 @@ "source": [ "clear()\n", "\n", - "%time makeable(ff)" + "%time makeable(five5s)" ] }, { @@ -1688,9 +1706,9 @@ } }, "source": [ - "Wow! We almost tripled the 55 goal! \n", + "Wow! We almost tripled the 55 goal! (Although the increased number of expressions means it took 6 minutes.)\n", "\n", - "I have to say, I would never have come up with the solution for 81 on my own. It works because (√(5 - .5) \\* √.5) = √(4.5 \\* 0.5) = (√2.25) = 1.5." + "I have to say, I would never have come up with the solution for 81 on my own. It works because (√(5 - .5) \\* √.5) = √(4.5 \\* 0.5) = √(9/4) = 3/2." ] }, { @@ -1720,13 +1738,12 @@ "But still not allowing three consecutive applications, such as\n", "\n", "- ⌈√5⌉! = 6\n", - "\n", - "To compensate for these new expressions, I'll be pickier about when I allow the square root function to apply." + "\n" ] }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 72, "metadata": { "button": false, "collapsed": true, @@ -1744,14 +1761,15 @@ "def unary_expressions(numbers):\n", " \"Fill tables for -v, √v and v!, ⌊x⌋, and ⌈x⌉\"\n", " for i in range(2):\n", - " for v in list(EXPS[numbers]):\n", + " for v in tuple(EXPS[numbers]):\n", " exp = EXPS[numbers][v]\n", " expr(numbers, -v, '-(' + exp + ')')\n", " if 0 < v <= 100 and 4*v == round(4*v):\n", + " # Be stingier in allowing √ operator\n", " expr(numbers, sqrt(v), '√' + exp)\n", - " if 2 <= v <= 6 and v == round(v):\n", + " if 3 <= v <= 6 and v == int(v):\n", " expr(numbers, factorial(v), exp + '!')\n", - " if floor_ceil_allowed and v != round(v):\n", + " if floor_ceil_allowed and v != int(v):\n", " uexp = unbracket(exp)\n", " expr(numbers, floor(v), '⌊' + uexp + '⌋')\n", " expr(numbers, ceil(v), '⌈' + uexp + '⌉')\n", @@ -1774,12 +1792,12 @@ } }, "source": [ - "Let's try:" + "Let's try (warning—it will take 20 or 30 minutes to run):" ] }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 73, "metadata": { "button": false, "new_sheet": false, @@ -1792,1017 +1810,1017 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 6min 54s, sys: 2.69 s, total: 6min 57s\n", - "Wall time: 6min 58s\n" + "CPU times: user 24min 17s, sys: 3.22 s, total: 24min 21s\n", + "Wall time: 24min 23s\n" ] }, { "data": { "text/plain": [ - "{0: '⌊5/5555⌋',\n", - " 1: '⌈5/5555⌉',\n", - " 2: '⌊5*.5555⌋',\n", - " 3: '⌈5*.5555⌉',\n", + "{0: '⌊55/555⌋',\n", + " 1: '⌈55/555⌉',\n", + " 2: '⌊.5555*5⌋',\n", + " 3: '⌈.5555*5⌉',\n", " 4: '⌊5-.5555⌋',\n", " 5: '⌊5.5555⌋',\n", " 6: '⌈5.5555⌉',\n", - " 7: '⌈.5+5.555⌉',\n", - " 8: '(5+⌈5*.555⌉)',\n", - " 9: '⌊5/.5555⌋',\n", + " 7: '⌈5.55+.55⌉',\n", + " 8: '⌈5.555+√5⌉',\n", + " 9: '⌊55/5.55⌋',\n", " 10: '⌊555/55⌋',\n", " 11: '⌈555/55⌉',\n", " 12: '⌈55.55/5⌉',\n", - " 13: '⌊55/⌊5-.55⌋⌋',\n", - " 14: '(5+⌊5/.555⌋)',\n", - " 15: '(5+(55/5.5))',\n", - " 16: '(5+⌊55.5/5⌋)',\n", - " 17: '(5+⌈55.5/5⌉)',\n", + " 13: '⌊(.555*5)*5⌋',\n", + " 14: '⌈(.555*5)*5⌉',\n", + " 15: '⌊(5.55+5)+5⌋',\n", + " 16: '⌈(5.55+5)+5⌉',\n", + " 17: '⌈(55.5/5)+5⌉',\n", " 18: '⌊55/⌈5!/55⌉⌋',\n", " 19: '⌈55/⌈5!/55⌉⌉',\n", - " 20: '(5*⌊555/5!⌋)',\n", + " 20: '(⌊555/5!⌋*5)',\n", " 21: '⌊5!/5.555⌋',\n", - " 22: '((55+55)/5)',\n", + " 22: '⌈5!/5.555⌉',\n", " 23: '⌈555/(5*5)⌉',\n", " 24: '⌊5-.5555⌋!',\n", - " 25: '(5*⌈555/5!⌉)',\n", - " 26: '⌈55*(55/5!)⌉',\n", - " 27: '⌊5*5.555⌋',\n", - " 28: '⌈5*5.555⌉',\n", - " 29: '(5+⌊555/5!⌋!)',\n", - " 30: '⌊55*.555⌋',\n", - " 31: '⌈55*.555⌉',\n", - " 32: '(5+⌊5*5.55⌋)',\n", - " 33: '(5+⌈5*5.55⌉)',\n", - " 34: '(55-⌊5!/5.5⌋)',\n", - " 35: '(5+⌊.55*55⌋)',\n", - " 36: '(5+⌈.55*55⌉)',\n", - " 37: '⌊5*(55/√55)⌋',\n", - " 38: '⌈5*(55/√55)⌉',\n", - " 39: '(55-⌊5!/√55⌋)',\n", - " 40: '(5*⌈55/√55⌉)',\n", - " 41: '⌊√55*5.55⌋',\n", - " 42: '⌈√55*5.55⌉',\n", - " 43: '(55-⌊5+√55⌋)',\n", + " 25: '(⌊5.555⌋*5)',\n", + " 26: '⌈(55*55)/5!⌉',\n", + " 27: '⌊5.555*5⌋',\n", + " 28: '⌈5.555*5⌉',\n", + " 29: '(⌊555/5!⌋!+5)',\n", + " 30: '⌊.555*55⌋',\n", + " 31: '⌈.555*55⌉',\n", + " 32: '⌊(5.55*5)+5⌋',\n", + " 33: '⌈(5.55*5)+5⌉',\n", + " 34: '⌈5.55*⌈5.5⌉⌉',\n", + " 35: '⌊(55*.55)+5⌋',\n", + " 36: '⌈(55*.55)+5⌉',\n", + " 37: '⌊(55/√55)*5⌋',\n", + " 38: '⌈(55/√55)*5⌉',\n", + " 39: '⌊55.55*√.5⌋',\n", + " 40: '(55-((5+5)+5))',\n", + " 41: '⌊5.55*√55⌋',\n", + " 42: '⌈5.55*√55⌉',\n", + " 43: '⌈55-(√55+5)⌉',\n", " 44: '(55-(55/5))',\n", - " 45: '((5*5!)-555)',\n", + " 45: '((5!*5)-555)',\n", " 46: '⌊5555/5!⌋',\n", " 47: '⌈5555/5!⌉',\n", - " 48: '⌈55-√55.5⌉',\n", + " 48: '⌊55.5-√55⌋',\n", " 49: '⌊55-5.55⌋',\n", - " 50: '⌊55.55-5⌋',\n", + " 50: '⌈55-5.55⌉',\n", " 51: '⌈55.55-5⌉',\n", - " 52: '(55-⌈5!/55⌉)',\n", - " 53: '(55-⌊5!/55⌋)',\n", + " 52: '⌊55-(5!/55)⌋',\n", + " 53: '⌈55-(5!/55)⌉',\n", " 54: '⌊55-.555⌋',\n", " 55: '⌊55.555⌋',\n", " 56: '⌈55.555⌉',\n", - " 57: '(55+⌊5!/55⌋)',\n", - " 58: '(55+⌈5!/55⌉)',\n", - " 59: '(5+⌊55-.55⌋)',\n", - " 60: '⌊5+55.55⌋',\n", - " 61: '⌈5+55.55⌉',\n", - " 62: '⌊√55+55.5⌋',\n", - " 63: '⌈√55+55.5⌉',\n", + " 57: '⌈55.55+.5⌉',\n", + " 58: '⌈(5!/55)+55⌉',\n", + " 59: '⌊(55-.55)+5⌋',\n", + " 60: '⌊55.55+5⌋',\n", + " 61: '⌈55.55+5⌉',\n", + " 62: '⌊√55.5+55⌋',\n", + " 63: '⌈√55.5+55⌉',\n", " 64: '⌊5!-55.55⌋',\n", " 65: '⌈5!-55.55⌉',\n", - " 66: '(55+(55/5))',\n", - " 67: '⌈5!*.5555⌉',\n", - " 68: '(5+⌈55+√55⌉)',\n", + " 66: '⌊.5555*5!⌋',\n", + " 67: '⌈.5555*5!⌉',\n", + " 68: '⌈(√55+55)+5⌉',\n", " 69: '⌊555/⌈√55⌉⌋',\n", " 70: '⌈555/⌈√55⌉⌉',\n", - " 71: '(5+⌊5!*.555⌋)',\n", - " 72: '(5+⌈5!*.555⌉)',\n", - " 73: '(5!-⌊55-√55⌋)',\n", + " 71: '⌊(.555*5!)+5⌋',\n", + " 72: '⌈(.555*5!)+5⌉',\n", + " 73: '⌊(5!/55)^5.5⌋',\n", " 74: '⌊555/√55⌋',\n", " 75: '⌈555/√55⌉',\n", - " 76: '(55+⌊5!/5.5⌋)',\n", - " 77: '(55+⌈5!/5.5⌉)',\n", - " 78: '(55+((5!-5)/5))',\n", + " 76: '⌊555/(5+√5)⌋',\n", + " 77: '⌈555/(5+√5)⌉',\n", + " 78: '⌈√⌊5!/55⌋*55⌉',\n", " 79: '⌊555/⌊√55⌋⌋',\n", - " 80: '⌊(5*5)+55.5⌋',\n", - " 81: '⌈(5*5)+55.5⌉',\n", - " 82: '(55+⌊.5*55⌋)',\n", - " 83: '(55+⌈.5*55⌉)',\n", - " 84: '(5+((5!/5)+55))',\n", - " 85: '(5+((5*5)+55))',\n", - " 86: '(5!-⌈5**(5!/55)⌉)',\n", + " 80: '⌊55.5+(5*5)⌋',\n", + " 81: '⌈55.5+(5*5)⌉',\n", + " 82: '⌊(55*.5)+55⌋',\n", + " 83: '⌈(55*.5)+55⌉',\n", + " 84: '((55+(5!/5))+5)',\n", + " 85: '((55+(5*5))+5)',\n", + " 86: '⌊5!-(5^(5!/55))⌋',\n", " 87: '((555-5!)/5)',\n", - " 88: '⌈5**(5*.555)⌉',\n", - " 89: '(5!-⌈.55*55⌉)',\n", + " 88: '⌈√5^5.555⌉',\n", + " 89: '⌊5!-(55*.55)⌋',\n", " 90: '⌊(55-5)/.55⌋',\n", " 91: '⌈(55-5)/.55⌉',\n", " 92: '⌊555/⌈5.5⌉⌋',\n", " 93: '⌈555/⌈5.5⌉⌉',\n", - " 94: '(⌊55/.55⌋-5)',\n", - " 95: '(⌈55/.55⌉-5)',\n", - " 96: '(5!-⌊555/5!⌋!)',\n", - " 97: '⌈.55*(5!+55)⌉',\n", - " 98: '(5!-⌈5!/5.55⌉)',\n", + " 94: '⌊(55/.55)-5⌋',\n", + " 95: '⌈(55/.55)-5⌉',\n", + " 96: '⌊(55+5!)*.55⌋',\n", + " 97: '⌈(55+5!)*.55⌉',\n", + " 98: '⌊⌊55-.5⌋/.55⌋',\n", " 99: '⌊55/.555⌋',\n", - " 100: '⌊555/5.5⌋',\n", + " 100: '⌈55/.555⌉',\n", " 101: '⌈555/5.5⌉',\n", " 102: '⌈⌈55.5⌉/.55⌉',\n", - " 103: '(55+((5!+5!)/5))',\n", - " 104: '(5+⌊55/.55⌋)',\n", - " 105: '(55+(55-5))',\n", + " 103: '⌈⌈55/.55⌉+√5⌉',\n", + " 104: '⌊(55/.55)+5⌋',\n", + " 105: '((55+55)-5)',\n", " 106: '((555/5)-5)',\n", - " 107: '(55+⌊55-√5⌋)',\n", - " 108: '(5!-⌈55.5/5⌉)',\n", - " 109: '(55+⌊55-.5⌋)',\n", - " 110: '⌊55+55.5⌋',\n", - " 111: '⌈55+55.5⌉',\n", + " 107: '⌊(55+55)-√5⌋',\n", + " 108: '⌈(55+55)-√5⌉',\n", + " 109: '⌊(55+55)-.5⌋',\n", + " 110: '⌊55.5+55⌋',\n", + " 111: '⌈55.5+55⌉',\n", " 112: '⌈555.5/5⌉',\n", - " 113: '(55+⌈√5+55⌉)',\n", + " 113: '⌈(55+55)+√5⌉',\n", " 114: '⌊5!-5.555⌋',\n", - " 115: '(5+(55+55))',\n", - " 116: '(5+(555/5))',\n", - " 117: '(5!-⌈5*.555⌉)',\n", - " 118: '(5!-⌈5.55/5⌉)',\n", + " 115: '((55+55)+5)',\n", + " 116: '((555/5)+5)',\n", + " 117: '⌊5!-(.555*5)⌋',\n", + " 118: '⌈5!-(.555*5)⌉',\n", " 119: '⌊5!-.5555⌋',\n", " 120: '⌊5.5555⌋!',\n", - " 121: '⌈5!+.5555⌉',\n", - " 122: '(5!+⌈5.55/5⌉)',\n", + " 121: '⌈.5555+5!⌉',\n", + " 122: '⌊(.555*5)+5!⌋',\n", " 123: '⌊555/(5-.5)⌋',\n", - " 124: '(5!+⌊555/5!⌋)',\n", - " 125: '⌊5!+5.555⌋',\n", - " 126: '⌈5!+5.555⌉',\n", - " 127: '⌊(5**5.5)/55⌋',\n", - " 128: '⌈(5**5.5)/55⌉',\n", - " 129: '(5!+⌊5/.555⌋)',\n", - " 130: '(5+⌊5!+5.55⌋)',\n", - " 131: '(5+⌈5!+5.55⌉)',\n", - " 132: '(5!+⌈55.5/5⌉)',\n", - " 133: '⌈55*(√55-5)⌉',\n", - " 134: '⌈5!*(5.55/5)⌉',\n", - " 135: '((5!+555)/5)',\n", - " 136: '(5+(5!+(55/5)))',\n", - " 137: '⌊5*(55/⌊.5*5⌋)⌋',\n", - " 138: '⌊5*(5*5.55)⌋',\n", - " 139: '⌈5*(5*5.55)⌉',\n", - " 140: '(5*⌈5*5.55⌉)',\n", - " 141: '(5!+⌊5!/5.55⌋)',\n", - " 142: '(5!+⌈5!/5.55⌉)',\n", - " 143: '(5+⌈.5*(5*55)⌉)',\n", + " 124: '⌊55.55*√5⌋',\n", + " 125: '⌊5.555+5!⌋',\n", + " 126: '⌈5.555+5!⌉',\n", + " 127: '⌊⌈5^5.5⌉/55⌋',\n", + " 128: '⌈⌈5^5.5⌉/55⌉',\n", + " 129: '⌊(5/.555)+5!⌋',\n", + " 130: '⌊(5.55+5)+5!⌋',\n", + " 131: '⌈(5.55+5)+5!⌉',\n", + " 132: '⌊(√55-5)*55⌋',\n", + " 133: '⌈(√55-5)*55⌉',\n", + " 134: '⌈(5.55/5)*5!⌉',\n", + " 135: '((555+5!)/5)',\n", + " 136: '(((55/5)+5!)+5)',\n", + " 137: '⌈⌈55.5+5⌉*√5⌉',\n", + " 138: '⌊(5.55*5)*5⌋',\n", + " 139: '⌈(5.55*5)*5⌉',\n", + " 140: '(⌈5.55*5⌉*5)',\n", + " 141: '⌊⌊55^√5⌋/55⌋',\n", + " 142: '⌈⌊55^√5⌋/55⌉',\n", + " 143: '⌈((55*5)*.5)+5⌉',\n", " 144: '(⌈5.555⌉!/5)',\n", - " 145: '(5+(5*⌈.5*55⌉))',\n", - " 146: '⌊55*(5-√5.5)⌋',\n", - " 147: '(5!+⌊5*5.55⌋)',\n", - " 148: '(5!+⌈5*5.55⌉)',\n", - " 149: '⌈5.5*⌊.5*55⌋⌉',\n", - " 150: '(5*⌊.55*55⌋)',\n", - " 151: '⌊.55*(5*55)⌋',\n", - " 152: '⌈.55*(5*55)⌉',\n", - " 153: '⌈5*(5.5+(5*5))⌉',\n", - " 154: '(5.5*⌈.5*55⌉)',\n", - " 155: '(5*⌈.55*55⌉)',\n", - " 156: '⌊555/(5*√.5)⌋',\n", - " 157: '(⌊.5*555⌋-5!)',\n", - " 158: '(⌈.5*555⌉-5!)',\n", - " 159: '⌊5.5*(5+(5!/5))⌋',\n", - " 160: '(5+((5*55)-5!))',\n", - " 161: '⌊(.5*5)**5.55⌋',\n", - " 162: '⌊5*(5+(.5*55))⌋',\n", - " 163: '(⌊5!/.55⌋-55)',\n", - " 164: '(⌈5!/.55⌉-55)',\n", - " 165: '(55*⌈5!/55⌉)',\n", - " 166: '⌊5.5**⌈5!/55⌉⌋',\n", - " 167: '(5!+⌊55-√55⌋)',\n", - " 168: '(5!+⌈55-√55⌉)',\n", - " 169: '(5!+⌊55-5.5⌋)',\n", - " 170: '(5!+⌊55.5-5⌋)',\n", - " 171: '(5!+⌈55.5-5⌉)',\n", - " 172: '⌈5.555**⌈√5⌉⌉',\n", - " 173: '⌊55*√⌊5+5.5⌋⌋',\n", - " 174: '(5!+⌊55-.55⌋)',\n", - " 175: '⌊5!+55.55⌋',\n", - " 176: '⌈5!+55.55⌉',\n", - " 177: '(55+⌊√5*55⌋)',\n", - " 178: '(55+⌈√5*55⌉)',\n", - " 179: '⌊55*(5.5-√5)⌋',\n", - " 180: '(5+⌊5!+55.5⌋)',\n", - " 181: '(5+⌈5!+55.5⌉)',\n", - " 182: '(⌊5.5*55⌋-5!)',\n", - " 183: '(⌈5.5*55⌉-5!)',\n", - " 184: '(5!+⌊5!-55.5⌋)',\n", - " 185: '(555/⌈.5*5⌉)',\n", - " 186: '(5!+⌊5!*.555⌋)',\n", - " 187: '(5!+⌈5!*.555⌉)',\n", - " 188: '((⌈.5*5⌉**5)-55)',\n", - " 189: '⌊√(5+5)*(5+55)⌋',\n", - " 190: '(5*⌈5*√55.5⌉)',\n", - " 191: '(5+⌈5*(5*√55)⌉)',\n", - " 192: '(⌈5.55⌉/(.5**5))',\n", - " 193: '(⌊5!/.55⌋-(5*5))',\n", + " 145: '((⌊5.55⌋*5)+5!)',\n", + " 146: '⌊(5-√5.5)*55⌋',\n", + " 147: '⌊(5.55*5)+5!⌋',\n", + " 148: '⌈(5.55*5)+5!⌉',\n", + " 149: '⌈⌊55*.5⌋*5.5⌉',\n", + " 150: '(⌊55*.55⌋*5)',\n", + " 151: '⌊(55*.55)*5⌋',\n", + " 152: '⌈(55*.55)*5⌉',\n", + " 153: '⌊(.55+√5)*55⌋',\n", + " 154: '(⌈55*.5⌉*5.5)',\n", + " 155: '(⌈55*.55⌉*5)',\n", + " 156: '⌈(55+55)/√.5⌉',\n", + " 157: '⌊(555*.5)-5!⌋',\n", + " 158: '⌈(555*.5)-5!⌉',\n", + " 159: '⌈(55-5)*√(5+5)⌉',\n", + " 160: '(((55*5)-5!)+5)',\n", + " 161: '⌊(5*.5)^5.55⌋',\n", + " 162: '⌈(5*.5)^5.55⌉',\n", + " 163: '⌊(5!/.55)-55⌋',\n", + " 164: '⌊(.555*5)^5⌋',\n", + " 165: '(⌈5!/55⌉*55)',\n", + " 166: '⌊5.5^⌈5!/55⌉⌋',\n", + " 167: '⌈5.5^⌈5!/55⌉⌉',\n", + " 168: '⌈(55-√55)+5!⌉',\n", + " 169: '⌊(55-5.5)+5!⌋',\n", + " 170: '⌈(55-5.5)+5!⌉',\n", + " 171: '⌈(55.5+5!)-5⌉',\n", + " 172: '⌈5.555^⌈√5⌉⌉',\n", + " 173: '⌊√⌊5.5+5⌋*55⌋',\n", + " 174: '⌊(55-.55)+5!⌋',\n", + " 175: '⌊55.55+5!⌋',\n", + " 176: '⌈55.55+5!⌉',\n", + " 177: '⌊(55*√5)+55⌋',\n", + " 178: '⌈(55*√5)+55⌉',\n", + " 179: '⌈√(5.5+5)*55⌉',\n", + " 180: '⌊(55.5+5)+5!⌋',\n", + " 181: '⌈(55.5+5)+5!⌉',\n", + " 182: '⌊(55*5.5)-5!⌋',\n", + " 183: '⌈(55*5.5)-5!⌉',\n", + " 184: '⌊(5!-55.5)+5!⌋',\n", + " 185: '(555/⌈5*.5⌉)',\n", + " 186: '⌊(.555*5!)+5!⌋',\n", + " 187: '⌈(.555*5!)+5!⌉',\n", + " 188: '((⌈5*.5⌉^5)-55)',\n", + " 189: '⌊(55+5)*√(5+5)⌋',\n", + " 190: '(⌈√55.5*5⌉*5)',\n", + " 191: '⌈√⌊√55+5⌋*55⌉',\n", + " 192: '⌈⌈√55.5^5⌉/5!⌉',\n", + " 193: '⌊5!^(.55+.55)⌋',\n", " 194: '⌊(555-5!)/√5⌋',\n", " 195: '⌈(555-5!)/√5⌉',\n", - " 196: '⌊555/√⌈√5+5⌉⌋',\n", - " 197: '⌊.5*(5!+(5*55))⌋',\n", + " 196: '⌊555/√⌈5+√5⌉⌋',\n", + " 197: '⌊((55*5)+5!)*.5⌋',\n", " 198: '(⌊55/.55⌋/.5)',\n", - " 199: '⌊55/(.5*.55)⌋',\n", + " 199: '⌊55/(.55*.5)⌋',\n", " 200: '⌊555/(5-√5)⌋',\n", " 201: '⌈555/(5-√5)⌉',\n", - " 202: '⌊555/(.5+√5)⌋',\n", - " 203: '⌊5!**(5.55/5)⌋',\n", - " 204: '⌈5!**(5.55/5)⌉',\n", - " 205: '(5*⌈5.5*√55⌉)',\n", - " 206: '⌈⌈5!-√55⌉/.55⌉',\n", + " 202: '⌊555/(√5+.5)⌋',\n", + " 203: '⌊5!^(5.55/5)⌋',\n", + " 204: '⌈5!^(5.55/5)⌉',\n", + " 205: '(⌈√55*5.5⌉*5)',\n", + " 206: '⌈5.55*⌈5^√5⌉⌉',\n", " 207: '⌊(5!-5)/.555⌋',\n", " 208: '⌈(5!-5)/.555⌉',\n", - " 209: '(5.5*⌈5*√55⌉)',\n", - " 210: '((⌈5.5⌉*55)-5!)',\n", - " 211: '(⌊5!/.555⌋-5)',\n", - " 212: '(⌈5!/.555⌉-5)',\n", - " 213: '⌊⌈5!/.55⌉-5.5⌋',\n", - " 214: '⌈⌈5!/.55⌉-5.5⌉',\n", - " 215: '((⌊5-.5⌋*55)-5)',\n", + " 209: '(⌈√55*5⌉*5.5)',\n", + " 210: '((55*⌈5.5⌉)-5!)',\n", + " 211: '⌊(5!/.555)-5⌋',\n", + " 212: '⌈(5!/.555)-5⌉',\n", + " 213: '⌈(5!/.55)-5.5⌉',\n", + " 214: '⌊⌊5!-.5⌋/.555⌋',\n", + " 215: '((55*⌊5-.5⌋)-5)',\n", " 216: '⌊5!/.5555⌋',\n", " 217: '⌈5!/.5555⌉',\n", - " 218: '⌈.5*(555-5!)⌉',\n", - " 219: '(5!+⌊55/.55⌋)',\n", - " 220: '((5*55)-55)',\n", - " 221: '(5+⌊5!/.555⌋)',\n", - " 222: '(555/(.5*5))',\n", - " 223: '⌊5.5+⌊5!/.55⌋⌋',\n", - " 224: '⌊5.5+⌈5!/.55⌉⌋',\n", - " 225: '(5*(55-(5+5)))',\n", - " 226: '⌈(5+5!)/.555⌉',\n", + " 218: '⌈(555-5!)*.5⌉',\n", + " 219: '(⌊55/.55⌋+5!)',\n", + " 220: '((55*5)-55)',\n", + " 221: '⌊(5!/.555)+5⌋',\n", + " 222: '(555/(5*.5))',\n", + " 223: '⌊⌈55*√5⌉/.55⌋',\n", + " 224: '⌈⌈55*√5⌉/.55⌉',\n", + " 225: '((55-(5+5))*5)',\n", + " 226: '⌈(5!+5)/.555⌉',\n", " 227: '⌈555/√⌈5.5⌉⌉',\n", - " 228: '(⌊5!-5.55⌋/.5)',\n", - " 229: '(5!+(5!-(55/5)))',\n", - " 230: '(5!+(55+55))',\n", - " 231: '(5!+(555/5))',\n", - " 232: '(5+⌊(5+5!)/.55⌋)',\n", - " 233: '(5+⌈(5+5!)/.55⌉)',\n", - " 234: '(5!+⌊5!-5.55⌋)',\n", - " 235: '(5*⌊55-√55⌋)',\n", + " 228: '⌊(5.5+5!)/.55⌋',\n", + " 229: '⌊⌈5.5+5!⌉/.55⌋',\n", + " 230: '((55+55)+5!)',\n", + " 231: '((555/5)+5!)',\n", + " 232: '⌈(√55+5!)/.55⌉',\n", + " 233: '⌈⌈√55+5!⌉/.55⌉',\n", + " 234: '⌊(5!-5.55)+5!⌋',\n", + " 235: '(⌊55-√55⌋*5)',\n", " 236: '⌊555/√5.5⌋',\n", " 237: '⌈555/√5.5⌉',\n", - " 238: '⌈5*(55-√55)⌉',\n", - " 239: '(5!+⌊5!-.555⌋)',\n", - " 240: '(5*⌈55-√55⌉)',\n", - " 241: '(5!+⌈5!+.555⌉)',\n", - " 242: '(⌊(5-.5)*55⌋-5)',\n", - " 243: '(⌈5*.555⌉**5)',\n", - " 244: '⌊55*(5-.55)⌋',\n", - " 245: '(5*⌊55-5.5⌋)',\n", - " 246: '⌈(555-5)/√5⌉',\n", - " 247: '⌊5*(55-5.5)⌋',\n", - " 248: '⌈5*(55-5.5)⌉',\n", + " 238: '⌈(55-√55)*5⌉',\n", + " 239: '⌊(5!-.555)+5!⌋',\n", + " 240: '(⌊5.555⌋!+5!)',\n", + " 241: '⌈(.555+5!)+5!⌉',\n", + " 242: '⌈(.555+5!)/.5⌉',\n", + " 243: '(⌈.555*5⌉^5)',\n", + " 244: '⌊(5-.55)*55⌋',\n", + " 245: '⌈(5-.55)*55⌉',\n", + " 246: '⌈(55+55)*√5⌉',\n", + " 247: '⌊(55-5.5)*5⌋',\n", + " 248: '⌈(55-5.5)*5⌉',\n", " 249: '⌈555.5/√5⌉',\n", - " 250: '(5*⌊55.5-5⌋)',\n", - " 251: '⌈(5+555)/√5⌉',\n", - " 252: '⌊5*(55.5-5)⌋',\n", - " 253: '⌈5*(55.5-5)⌉',\n", - " 254: '(5+⌈555/√5⌉)',\n", - " 255: '(5*⌈55.5-5⌉)',\n", - " 256: '(⌊5!*(5!/55)⌋-5)',\n", - " 257: '(⌈5!*(5!/55)⌉-5)',\n", - " 258: '(5!+⌈.5*(5*55)⌉)',\n", - " 259: '⌊5!/(55.5/5!)⌋',\n", - " 260: '⌈5!/(55.5/5!)⌉',\n", - " 261: '⌊555/√(5-.5)⌋',\n", - " 262: '⌊5*(5*(5+5.5))⌋',\n", - " 263: '⌈5*(5*(5+5.5))⌉',\n", - " 264: '(5!/(5/(55/5)))',\n", - " 265: '((5*55)-(5+5))',\n", - " 266: '(5+⌊5!*(5!/55)⌋)',\n", - " 267: '⌊(5*55)-√55⌋',\n", - " 268: '⌈(5*55)-√55⌉',\n", - " 269: '⌊(5*55)-5.5⌋',\n", - " 270: '(5*⌊55-.55⌋)',\n", - " 271: '(⌈.5-5⌉+(5*55))',\n", - " 272: '(⌊.5*555⌋-5)',\n", - " 273: '(⌈.5*555⌉-5)',\n", - " 274: '⌊(5*55)-.55⌋',\n", - " 275: '(5*⌊55.55⌋)',\n", - " 276: '⌈.55+(5*55)⌉',\n", - " 277: '⌊5*55.55⌋',\n", - " 278: '⌈5*55.55⌉',\n", - " 279: '⌈.5+⌈.5*555⌉⌉',\n", - " 280: '(5*⌈55.55⌉)',\n", - " 281: '⌈5.5+(5*55)⌉',\n", - " 282: '(5+⌊.5*555⌋)',\n", - " 283: '(5+⌈.5*555⌉)',\n", - " 284: '⌊5*((5**5)/55)⌋',\n", - " 285: '(5+(5+(5*55)))',\n", - " 286: '(555-⌈√5*5!⌉)',\n", - " 287: '(555-⌊√5*5!⌋)',\n", - " 288: '(⌈55*√55⌉-5!)',\n", - " 289: '⌈5*(√5+55.5)⌉',\n", - " 290: '(5*(⌈.5*5⌉+55))',\n", - " 291: '⌊5.5*⌈55-√5⌉⌋',\n", - " 292: '⌈5.5*⌈55-√5⌉⌉',\n", - " 293: '⌊5!*√⌈5.555⌉⌋',\n", - " 294: '⌈5!*√⌈5.555⌉⌉',\n", - " 295: '((5*(5+55))-5)',\n", - " 296: '(5!+⌈5!+55.5⌉)',\n", - " 297: '(⌊5.5*55⌋-5)',\n", - " 298: '(⌈5.5*55⌉-5)',\n", - " 299: '((5!/5)+(5*55))',\n", - " 300: '(5*⌊5+55.5⌋)',\n", - " 301: '⌊(5!+555)/√5⌋',\n", - " 302: '⌊5*(5+55.5)⌋',\n", - " 303: '⌈5*(5+55.5)⌉',\n", - " 304: '⌈.5+⌈5.5*55⌉⌉',\n", - " 305: '⌊.55*555⌋',\n", - " 306: '⌈.55*555⌉',\n", - " 307: '(5+⌊5.5*55⌋)',\n", - " 308: '(5+⌈5.5*55⌉)',\n", - " 309: '(⌈(5+√.5)*55⌉-5)',\n", - " 310: '(5*⌊55+√55⌋)',\n", - " 311: '⌈5*(5*(5+√55))⌉',\n", - " 312: '⌊5*(55+√55)⌋',\n", - " 313: '⌈5*(55+√55)⌉',\n", - " 314: '⌈5.5*⌊√5+55⌋⌉',\n", + " 250: '(⌈55-5.5⌉*5)',\n", + " 251: '⌈(555+5)/√5⌉',\n", + " 252: '⌊(55.5-5)*5⌋',\n", + " 253: '⌈(55.5-5)*5⌉',\n", + " 254: '⌈(555/√5)+5⌉',\n", + " 255: '(⌈55.5-5⌉*5)',\n", + " 256: '⌊((5!/55)*5!)-5⌋',\n", + " 257: '⌈((5!/55)*5!)-5⌉',\n", + " 258: '⌊⌈55.5/5⌉^√5⌋',\n", + " 259: '⌊(5!/55.5)*5!⌋',\n", + " 260: '⌈(5!/55.5)*5!⌉',\n", + " 261: '⌈(.55*5)^5.5⌉',\n", + " 262: '⌊((5.5+5)*5)*5⌋',\n", + " 263: '⌈((5.5+5)*5)*5⌉',\n", + " 264: '((55/(5*5))*5!)',\n", + " 265: '((55*5)-(5+5))',\n", + " 266: '⌊(55.5-√5)*5⌋',\n", + " 267: '⌊(55*5)-√55⌋',\n", + " 268: '⌈(55*5)-√55⌉',\n", + " 269: '⌊(55*5)-5.5⌋',\n", + " 270: '⌈(55*5)-5.5⌉',\n", + " 271: '⌈((55*5)+.5)-5⌉',\n", + " 272: '⌊(555*.5)-5⌋',\n", + " 273: '⌈(555*.5)-5⌉',\n", + " 274: '⌊(55*5)-.55⌋',\n", + " 275: '(⌊55.55⌋*5)',\n", + " 276: '⌈(55*5)+.55⌉',\n", + " 277: '⌊55.55*5⌋',\n", + " 278: '⌈55.55*5⌉',\n", + " 279: '⌈⌈555*.5⌉+.5⌉',\n", + " 280: '(⌈55.55⌉*5)',\n", + " 281: '⌈(55*5)+5.5⌉',\n", + " 282: '⌊(555*.5)+5⌋',\n", + " 283: '⌈(555*.5)+5⌉',\n", + " 284: '⌊((5^5)*5)/55⌋',\n", + " 285: '(((55*5)+5)+5)',\n", + " 286: '⌊555-(5!*√5)⌋',\n", + " 287: '⌊(√55*55)-5!⌋',\n", + " 288: '⌈(√55*55)-5!⌉',\n", + " 289: '⌊55^√⌊5!/55⌋⌋',\n", + " 290: '⌈55^√⌊5!/55⌋⌉',\n", + " 291: '⌊√⌈55*.5⌉*55⌋',\n", + " 292: '⌈√⌈55*.5⌉*55⌉',\n", + " 293: '⌊√⌈5.555⌉*5!⌋',\n", + " 294: '⌈√⌈5.555⌉*5!⌉',\n", + " 295: '(((55+5)*5)-5)',\n", + " 296: '⌈(55.5+5!)+5!⌉',\n", + " 297: '⌊(55*5.5)-5⌋',\n", + " 298: '⌈(55*5.5)-5⌉',\n", + " 299: '⌊(55-.5)*5.5⌋',\n", + " 300: '(⌊55.5+5⌋*5)',\n", + " 301: '⌊⌊55*5.5⌋-.5⌋',\n", + " 302: '⌊(55.5+5)*5⌋',\n", + " 303: '⌈(55.5+5)*5⌉',\n", + " 304: '⌈⌈55*5.5⌉+.5⌉',\n", + " 305: '⌊5.55*55⌋',\n", + " 306: '⌈5.55*55⌉',\n", + " 307: '⌊(55*5.5)+5⌋',\n", + " 308: '⌈(55*5.5)+5⌉',\n", + " 309: '⌊((5!-55)/5)^√5⌋',\n", + " 310: '(⌊√55+55⌋*5)',\n", + " 311: '⌈5.55*(√5^5)⌉',\n", + " 312: '⌊(√55+55)*5⌋',\n", + " 313: '⌈(√55+55)*5⌉',\n", + " 314: '⌊(55+√5)*5.5⌋',\n", " 315: '(555-(5!+5!))',\n", - " 316: '⌊.55*(5*(5!-5))⌋',\n", - " 317: '⌈.55*(5*(5!-5))⌉',\n", - " 318: '⌊(5!+55)/.55⌋',\n", - " 319: '⌈(5!+55)/.55⌉',\n", - " 320: '(5*⌊5!-55.5⌋)',\n", - " 321: '⌊⌈5.555⌉!/√5⌋',\n", - " 322: '⌊5*(5!-55.5)⌋',\n", - " 323: '⌈5*(5!-55.5)⌉',\n", - " 324: '(⌈5.5⌉*⌊55-.5⌋)',\n", - " 325: '(5*(5+(5+55)))',\n", - " 326: '⌈(5!/55)**√55⌉',\n", - " 327: '(⌈5.5⌉*(55-.5))',\n", - " 328: '⌈.5*((5*5!)+55)⌉',\n", - " 329: '⌊(⌈5.5⌉*55)-.5⌋',\n", - " 330: '(55+(5*55))',\n", - " 331: '⌈.5+(⌈5.5⌉*55)⌉',\n", - " 332: '⌊.55*(5+(5*5!))⌋',\n", - " 333: '(⌈5.5⌉*55.5)',\n", - " 334: '⌈5*(5!*.555)⌉',\n", - " 335: '(5*⌈5!*.555⌉)',\n", - " 336: '(5!+⌊5!/.555⌋)',\n", - " 337: '⌊.5*(5!+555)⌋',\n", - " 338: '⌈.5*(5!+555)⌉',\n", - " 339: '⌈5!*(5-(5!/55))⌉',\n", - " 340: '(5*⌊.55*(5+5!)⌋)',\n", - " 341: '⌊55*(√.5+5.5)⌋',\n", - " 342: '(⌈5.5⌉*⌊√5+55⌋)',\n", - " 343: '⌊5*(.55*(5+5!))⌋',\n", - " 344: '⌈5*(.55*(5+5!))⌉',\n", - " 345: '((5!-5)*⌈5!/55⌉)',\n", - " 346: '⌊√5*((5*55)-5!)⌋',\n", - " 347: '⌊(5**5)/⌊5/.55⌋⌋',\n", - " 348: '⌈(5**5)/⌊5/.55⌋⌉',\n", - " 349: '(⌊(5-.55)**5⌋/5)',\n", - " 350: '(5*(5+(5!-55)))',\n", - " 351: '((5!+55.5)/.5)',\n", - " 352: '(⌈5!+55.5⌉/.5)',\n", - " 353: '⌈55*(√55-⌈.5⌉)⌉',\n", - " 354: '⌊(√5+⌈5/55⌉)**5⌋',\n", - " 355: '((5!*⌈5!/55⌉)-5)',\n", - " 356: '(⌈(5!+5!)*√55⌉/5)',\n", - " 357: '⌊5.5*(5!-55)⌋',\n", - " 358: '⌈5.5*(5!-55)⌉',\n", - " 359: '⌊(5!*⌈5!/55⌉)-.5⌋',\n", - " 360: '(5!*⌈5*.555⌉)',\n", - " 361: '⌊(√5+5)*(55-5)⌋',\n", - " 362: '⌈(√5+5)*(55-5)⌉',\n", - " 363: '(5.5*(5!*.55))',\n", - " 364: '⌈5!*(.55*5.5)⌉',\n", - " 365: '(5+(5!*⌈5!/55⌉))',\n", - " 366: '(5!+(5!+⌈5!+5.5⌉))',\n", - " 367: '(5!+⌊(5-.5)*55⌋)',\n", - " 368: '(5!+⌊555/√5⌋)',\n", - " 369: '(5!+⌈555/√5⌉)',\n", - " 370: '⌊√55*(55-5)⌋',\n", - " 371: '⌈√55*(55-5)⌉',\n", - " 372: '(55+⌈√(5+5)**5⌉)',\n", - " 373: '⌈(5-√⌈5!/55⌉)**5⌉',\n", - " 374: '(5+(⌊(5-.5)**5⌋/5))',\n", - " 375: '((5+5!)*⌈5!/55⌉)',\n", - " 376: '(55+⌊⌈5.5⌉!/√5⌋)',\n", - " 377: '(55+⌈⌈5.5⌉!/√5⌉)',\n", - " 378: '(⌊√55⌋*⌊55-.5⌋)',\n", - " 379: '⌊5!*√(55/5.5)⌋',\n", - " 380: '((⌊√55⌋*55)-5)',\n", - " 381: '⌊55**(√55/5)⌋',\n", - " 382: '⌈55**(√55/5)⌉',\n", - " 383: '(5!+⌊5*(55-√5)⌋)',\n", - " 384: '(5!+⌈5*(55-√5)⌉)',\n", - " 385: '(55*⌊√55.5⌋)',\n", - " 386: '(555-⌊5!/√.5⌋)',\n", - " 387: '(⌊√.5*555⌋-5)',\n", - " 388: '⌊55*√(55-5)⌋',\n", - " 389: '⌈55*√(55-5)⌉',\n", - " 390: '(5!+((5*55)-5))',\n", - " 391: '⌊√5*⌊5!+55.5⌋⌋',\n", - " 392: '⌊√.5*555.5⌋',\n", - " 393: '⌈√.5*555.5⌉',\n", - " 394: '(5!+⌊(5*55)-.5⌋)',\n", - " 395: '(5*((5!/5)+55))',\n", - " 396: '⌊.55*⌈5.55⌉!⌋',\n", - " 397: '(5!+⌊.5*555⌋)',\n", - " 398: '(5!+⌈.5*555⌉)',\n", - " 399: '⌊⌈5.5⌉!*.555⌋',\n", - " 400: '(5*((5*5)+55))',\n", - " 401: '⌊(√5+5)*55.5⌋',\n", - " 402: '(⌊55*√55⌋-5)',\n", - " 403: '(⌈55*√55⌉-5)',\n", - " 404: '⌊55*√⌊55-.5⌋⌋',\n", - " 405: '⌈55*√⌊55-.5⌋⌉',\n", - " 406: '⌊⌊55*√55⌋-.5⌋',\n", - " 407: '⌊⌊√55**5⌋/55⌋',\n", - " 408: '⌈⌊√55**5⌋/55⌉',\n", - " 409: '⌊55*√55.5⌋',\n", - " 410: '⌈55*√55.5⌉',\n", - " 411: '⌊√55*55.5⌋',\n", - " 412: '⌈√55*55.5⌉',\n", - " 413: '(5+⌈55*√55⌉)',\n", - " 414: '((5!*(5-.55))-5!)',\n", - " 415: '⌊√55*⌈55.5⌉⌋',\n", - " 416: '⌈√55*⌈55.5⌉⌉',\n", - " 417: '⌊5*(5**(5*.55))⌋',\n", - " 418: '⌈5*(5**(5*.55))⌉',\n", - " 419: '⌊(5**5)/√55.5⌋',\n", - " 420: '(5!+(5*(5+55)))',\n", - " 421: '⌈⌈5!/55⌉**5.5⌉',\n", - " 422: '(5!+⌊5.5*55⌋)',\n", - " 423: '(5!+⌈5.5*55⌉)',\n", - " 424: '⌊√55*(√5+55)⌋',\n", - " 425: '((5*5!)-(5!+55))',\n", - " 426: '⌊55*√(5+55)⌋',\n", - " 427: '⌈55*√(5+55)⌉',\n", - " 428: '⌈55*(5-(√5-5))⌉',\n", - " 429: '(5.5*⌈55/√.5⌉)',\n", - " 430: '(555-(5+5!))',\n", - " 431: '⌈√55*⌈√5+55⌉⌉',\n", - " 432: '(555-⌈√5+5!⌉)',\n", - " 433: '(555-⌊√5+5!⌋)',\n", - " 434: '(555-⌈.5+5!⌉)',\n", + " 316: '⌊√⌊5.55+5⌋^5⌋',\n", + " 317: '⌈√⌊5.55+5⌋^5⌉',\n", + " 318: '⌊(55+5!)/.55⌋',\n", + " 319: '⌈(55+5!)/.55⌉',\n", + " 320: '(⌊5!-55.5⌋*5)',\n", + " 321: '⌈555/√⌈5*.5⌉⌉',\n", + " 322: '⌊(5!-55.5)*5⌋',\n", + " 323: '⌈(5!-55.5)*5⌉',\n", + " 324: '⌈55.5+(5!*√5)⌉',\n", + " 325: '(((55+5)+5)*5)',\n", + " 326: '⌈(5!/55)^√55⌉',\n", + " 327: '⌊(55+(5!*5))*.5⌋',\n", + " 328: '⌈(55+(5!*5))*.5⌉',\n", + " 329: '⌊(55*⌈5.5⌉)-.5⌋',\n", + " 330: '((55*5)+55)',\n", + " 331: '⌈(55+(5*√5))*5⌉',\n", + " 332: '⌊((5!*5)+5)*.55⌋',\n", + " 333: '⌊(.555*5)*5!⌋',\n", + " 334: '⌈(.555*5)*5!⌉',\n", + " 335: '(⌈.555*5!⌉*5)',\n", + " 336: '⌊(5!/.555)+5!⌋',\n", + " 337: '⌊(555+5!)*.5⌋',\n", + " 338: '⌈(555+5!)*.5⌉',\n", + " 339: '⌈(5-(5!/55))*5!⌉',\n", + " 340: '⌈√⌈√55*5⌉*55⌉',\n", + " 341: '⌊(5.5+√.5)*55⌋',\n", + " 342: '⌈(5.5+√.5)*55⌉',\n", + " 343: '⌊((5^5)*.55)/5⌋',\n", + " 344: '⌈((5^5)*.55)/5⌉',\n", + " 345: '(⌈5!/55⌉*(5!-5))',\n", + " 346: '⌊((55*5)-5!)*√5⌋',\n", + " 347: '⌊(5^5)/⌊5/.55⌋⌋',\n", + " 348: '⌈(5^5)/⌊5/.55⌋⌉',\n", + " 349: '⌊((5-.55)^5)/5⌋',\n", + " 350: '(((5-55)+5!)*5)',\n", + " 351: '⌊555/√(5*.5)⌋',\n", + " 352: '⌈555/√(5*.5)⌉',\n", + " 353: '⌈(√55-⌈.5⌉)*55⌉',\n", + " 354: '⌊(⌈5/55⌉+√5)^5⌋',\n", + " 355: '((⌈5!/55⌉*5!)-5)',\n", + " 356: '⌈(55/5)^√⌈5.5⌉⌉',\n", + " 357: '⌊(5!-55)*5.5⌋',\n", + " 358: '⌈(5!-55)*5.5⌉',\n", + " 359: '⌈⌈5!/55⌉*(5!-.5)⌉',\n", + " 360: '(⌈.555*5⌉*5!)',\n", + " 361: '⌊(55-5)*(5+√5)⌋',\n", + " 362: '⌈(55-5)*(5+√5)⌉',\n", + " 363: '⌊(5.5*.55)*5!⌋',\n", + " 364: '⌈(5.5*.55)*5!⌉',\n", + " 365: '((⌈5!/55⌉*5!)+5)',\n", + " 366: '⌈(⌈√5⌉^5.5)-55⌉',\n", + " 367: '⌊(55*(5-.5))+5!⌋',\n", + " 368: '⌊(555/√5)+5!⌋',\n", + " 369: '⌈(555/√5)+5!⌉',\n", + " 370: '⌊(55-5)*√55⌋',\n", + " 371: '⌈(55-5)*√55⌉',\n", + " 372: '⌈(√(5+5)^5)+55⌉',\n", + " 373: '⌈(5-√⌈5!/55⌉)^5⌉',\n", + " 374: '⌈√⌈5.5^√5⌉*55⌉',\n", + " 375: '(⌈5!/55⌉*(5!+5))',\n", + " 376: '⌊(5.55+5!)*⌈√5⌉⌋',\n", + " 377: '⌈(5.55+5!)*⌈√5⌉⌉',\n", + " 378: '(⌊55-.5⌋*⌊√55⌋)',\n", + " 379: '⌊√⌊5.55+5⌋*5!⌋',\n", + " 380: '⌊(√55-.5)*55⌋',\n", + " 381: '⌊55^(√55/5)⌋',\n", + " 382: '⌈55^(√55/5)⌉',\n", + " 383: '⌊((55-√5)*5)+5!⌋',\n", + " 384: '⌈((55-√5)*5)+5!⌉',\n", + " 385: '(⌊√55.5⌋*55)',\n", + " 386: '⌈⌊55-√5⌋*√55⌉',\n", + " 387: '⌊(555*√.5)-5⌋',\n", + " 388: '⌊√(55-5)*55⌋',\n", + " 389: '⌈√(55-5)*55⌉',\n", + " 390: '(((55*5)+5!)-5)',\n", + " 391: '⌊⌊55.5+5!⌋*√5⌋',\n", + " 392: '⌊555.5*√.5⌋',\n", + " 393: '⌈555.5*√.5⌉',\n", + " 394: '⌈⌈555.5⌉*√.5⌉',\n", + " 395: '((55+(5!/5))*5)',\n", + " 396: '⌊⌈5.55⌉!*.55⌋',\n", + " 397: '⌊(555*.5)+5!⌋',\n", + " 398: '⌈(555*.5)+5!⌉',\n", + " 399: '⌊.555*⌈5.5⌉!⌋',\n", + " 400: '((55+(5*5))*5)',\n", + " 401: '⌊55.5*(5+√5)⌋',\n", + " 402: '⌊(√55*55)-5⌋',\n", + " 403: '⌈(√55*55)-5⌉',\n", + " 404: '⌈(√5.5+5)*55⌉',\n", + " 405: '⌈(55-.5)*√55⌉',\n", + " 406: '⌊√(55-.5)*55⌋',\n", + " 407: '⌊(√55^5)/55⌋',\n", + " 408: '⌈(√55^5)/55⌉',\n", + " 409: '⌊√55.5*55⌋',\n", + " 410: '⌈√55.5*55⌉',\n", + " 411: '⌊55.5*√55⌋',\n", + " 412: '⌈55.5*√55⌉',\n", + " 413: '⌈(√55*55)+5⌉',\n", + " 414: '⌊(5!-(√55*5))*5⌋',\n", + " 415: '⌊⌈55.5⌉*√55⌋',\n", + " 416: '⌈⌈55.5⌉*√55⌉',\n", + " 417: '⌊(5^(.55*5))*5⌋',\n", + " 418: '⌈(5^(.55*5))*5⌉',\n", + " 419: '⌊(5^5)/√55.5⌋',\n", + " 420: '⌊⌈5!/55⌉^5.5⌋',\n", + " 421: '⌈⌈5!/55⌉^5.5⌉',\n", + " 422: '⌊(55*5.5)+5!⌋',\n", + " 423: '⌈(55*5.5)+5!⌉',\n", + " 424: '⌊(55+√5)*√55⌋',\n", + " 425: '⌊(5.5+√5)*55⌋',\n", + " 426: '⌊√(55+5)*55⌋',\n", + " 427: '⌈√(55+5)*55⌉',\n", + " 428: '⌈((5-√5)+5)*55⌉',\n", + " 429: '⌈⌈55*5.5⌉/√.5⌉',\n", + " 430: '(555-(5!+5))',\n", + " 431: '⌈⌈55+√5⌉*√55⌉',\n", + " 432: '⌊555-(5!+√5)⌋',\n", + " 433: '⌈555-(5!+√5)⌉',\n", + " 434: '⌊555-(5!+.5)⌋',\n", " 435: '⌊555.5-5!⌋',\n", " 436: '⌈555.5-5!⌉',\n", - " 437: '(⌊√5-5!⌋+555)',\n", - " 438: '(⌈√5-5!⌉+555)',\n", - " 439: '⌊(⌈√55⌉*55)-.5⌋',\n", - " 440: '(5+(555-5!))',\n", - " 441: '(5+⌊(5!+5!)/.55⌋)',\n", - " 442: '(5+⌈(5!+5!)/.55⌉)',\n", - " 443: '⌊55*√(5!-55)⌋',\n", - " 444: '⌊√55*(5+55)⌋',\n", - " 445: '⌈√55*(5+55)⌉',\n", - " 446: '⌊55*√(5!*.55)⌋',\n", - " 447: '⌊⌈√5⌉**5.555⌋',\n", - " 448: '⌈⌈√5⌉**5.555⌉',\n", - " 449: '⌈55*(5+√(5+5))⌉',\n", - " 450: '(5!+(⌈5.5⌉*55))',\n", - " 451: '⌊5!*(⌈5.55⌉-√5)⌋',\n", - " 452: '(⌊5*(5!-5.5)⌋-5!)',\n", - " 453: '(⌈5*(5!-5.5)⌉-5!)',\n", - " 454: '(⌊(5+5!)/.55⌋/.5)',\n", - " 455: '(⌊√55⌋*(5!-55))',\n", - " 456: '(5!/(5/((5!/5)-5)))',\n", - " 457: '⌊5*((5**√5)+55)⌋',\n", - " 458: '⌈5*((5**√5)+55)⌉',\n", - " 459: '⌊555/(.5+√.5)⌋',\n", - " 460: '(5*(5!-⌈.5*55⌉))',\n", - " 461: '(⌈5!*(5-√.5)⌉-55)',\n", - " 462: '⌊5*(5!-(.5*55))⌋',\n", - " 463: '⌈5*(5!-(.5*55))⌉',\n", - " 464: '(⌈√55⌉*⌈√5+55⌉)',\n", - " 465: '(5*(5!-⌊.5*55⌋))',\n", - " 466: '⌊⌊√.5*5!⌋*5.55⌋',\n", - " 467: '⌊55*(.5+⌈√55⌉)⌋',\n", - " 468: '(5!*(5-(5.5/5)))',\n", - " 469: '⌊55*(5+(5*√.5))⌋',\n", - " 470: '(555-⌈√.5*5!⌉)',\n", - " 471: '(555-⌊√.5*5!⌋)',\n", - " 472: '((5*5!)-⌈5!+√55⌉)',\n", - " 473: '((5*5!)-⌊5!+√55⌋)',\n", - " 474: '((5*5!)-⌈5!+5.5⌉)',\n", - " 475: '((5!*⌊5-.55⌋)-5)',\n", - " 476: '⌊⌊5!/(.55**5)⌋/5⌋',\n", - " 477: '⌊√.5*(5!+555)⌋',\n", - " 478: '⌈√.5*(5!+555)⌉',\n", - " 479: '((5*5!)-⌈5!+.55⌉)',\n", - " 480: '(5!*⌊555/5!⌋)',\n", - " 481: '((5*5!)+⌈.55-5!⌉)',\n", - " 482: '⌊√55*(5!-55)⌋',\n", - " 483: '⌈√55*(5!-55)⌉',\n", - " 484: '⌊⌈√5*5!⌉/.555⌋',\n", - " 485: '(5+(5!*⌊5-.55⌋))',\n", - " 486: '⌈√5*⌈5!/.555⌉⌉',\n", - " 487: '((5*5!)-⌈5!-√55⌉)',\n", - " 488: '⌊.55*⌊5!*√55⌋⌋',\n", - " 489: '⌊.55*⌈5!*√55⌉⌋',\n", - " 490: '((5*5!)-(55/.5))',\n", - " 491: '⌈5!*((5/.55)-5)⌉',\n", - " 492: '⌊(⌊5/.55⌋**5)/5!⌋',\n", - " 493: '⌈(⌊5/.55⌋**5)/5!⌉',\n", - " 494: '(⌊(5-.5)*55⌋/.5)',\n", - " 495: '(5*⌊55/.55⌋)',\n", - " 496: '(⌊555/√5⌋/.5)',\n", - " 497: '⌈555/(.5*√5)⌉',\n", + " 437: '⌊(555+√5)-5!⌋',\n", + " 438: '⌈(555+√5)-5!⌉',\n", + " 439: '⌊(55*⌈√55⌉)-.5⌋',\n", + " 440: '((555-5!)+5)',\n", + " 441: '⌊(5^5)/√(55-5)⌋',\n", + " 442: '⌈(5^5)/√(55-5)⌉',\n", + " 443: '⌊√(5!-55)*55⌋',\n", + " 444: '⌊(55+5)*√55⌋',\n", + " 445: '⌈(55+5)*√55⌉',\n", + " 446: '⌊√(.55*5!)*55⌋',\n", + " 447: '⌊⌈√5⌉^5.555⌋',\n", + " 448: '⌈⌈√5⌉^5.555⌉',\n", + " 449: '⌈(√(5+5)+5)*55⌉',\n", + " 450: '((55*⌈5.5⌉)+5!)',\n", + " 451: '⌊(⌈5.55⌉-√5)*5!⌋',\n", + " 452: '⌊(⌈5.5⌉+√5)*55⌋',\n", + " 453: '⌈(⌈5.5⌉+√5)*55⌉',\n", + " 454: '⌊(⌈5!/√55⌉/5)^5⌋',\n", + " 455: '((5!-55)*⌊√55⌋)',\n", + " 456: '⌊⌊√5^5.5⌋*5.5⌋',\n", + " 457: '⌊(55+(5^√5))*5⌋',\n", + " 458: '⌈(55+(5^√5))*5⌉',\n", + " 459: '⌊555/(√.5+.5)⌋',\n", + " 460: '(⌊5!-(55*.5)⌋*5)',\n", + " 461: '⌈√⌊√5.5^5⌋*55⌉',\n", + " 462: '⌊(5!-(55*.5))*5⌋',\n", + " 463: '⌈(5!-(55*.5))*5⌉',\n", + " 464: '(⌈55+√5⌉*⌈√55⌉)',\n", + " 465: '(⌈5!-(55*.5)⌉*5)',\n", + " 466: '⌊5.55*⌊5!*√.5⌋⌋',\n", + " 467: '⌊(⌈√55⌉+.5)*55⌋',\n", + " 468: '((5-(5.5/5))*5!)',\n", + " 469: '⌊((√.5*5)+5)*55⌋',\n", + " 470: '⌊555-(5!*√.5)⌋',\n", + " 471: '⌈555-(5!*√.5)⌉',\n", + " 472: '⌈5.55*⌈5!*√.5⌉⌉',\n", + " 473: '⌈(5!*5)-(√55+5!)⌉',\n", + " 474: '⌊(5!*5)-(5.5+5!)⌋',\n", + " 475: '((⌊5-.55⌋*5!)-5)',\n", + " 476: '⌊5!/((.55^5)*5)⌋',\n", + " 477: '⌊(555+5!)*√.5⌋',\n", + " 478: '⌈(555+5!)*√.5⌉',\n", + " 479: '⌊(5!*5)-(.55+5!)⌋',\n", + " 480: '(⌊555/5!⌋*5!)',\n", + " 481: '⌈(.55-5!)+(5!*5)⌉',\n", + " 482: '⌊(5!-55)*√55⌋',\n", + " 483: '⌈(5!-55)*√55⌉',\n", + " 484: '⌈(5!*√5)/.555⌉',\n", + " 485: '((⌊5-.55⌋*5!)+5)',\n", + " 486: '⌈⌈5!/.555⌉*√5⌉',\n", + " 487: '⌊((5!*5)-5!)+√55⌋',\n", + " 488: '⌊⌊√55*5!⌋*.55⌋',\n", + " 489: '⌊(√55*.55)*5!⌋',\n", + " 490: '⌈(√55*.55)*5!⌉',\n", + " 491: '⌈5!*(5-(5/5.5))⌉',\n", + " 492: '⌊((55/5)+5)^√5⌋',\n", + " 493: '⌈((55/5)+5)^√5⌉',\n", + " 494: '⌊((55*√5)*5)-5!⌋',\n", + " 495: '(⌊55/.55⌋*5)',\n", + " 496: '⌊555/(√5*.5)⌋',\n", + " 497: '⌈555/(√5*.5)⌉',\n", " 498: '(⌈555/√5⌉/.5)',\n", - " 499: '⌊5*(55/.55)⌋',\n", + " 499: '⌊(55/.55)*5⌋',\n", " 500: '(555-55)',\n", - " 501: '(555-⌈5!/√5⌉)',\n", - " 502: '(555-⌊5!/√5⌋)',\n", - " 503: '⌊⌊5.5**5⌋/(5+5)⌋',\n", - " 504: '⌈⌊5.5**5⌋/(5+5)⌉',\n", - " 505: '(5!+(⌊√55⌋*55))',\n", - " 506: '(((5+(5**5))/5)-5!)',\n", - " 507: '(⌊5*(5!+5.5)⌋-5!)',\n", - " 508: '(⌈5*(5!+5.5)⌉-5!)',\n", - " 509: '⌊√.5*⌈5.555⌉!⌋',\n", - " 510: '((5*⌈5!+5.5⌉)-5!)',\n", - " 511: '⌊(5!-5)*(5-.55)⌋',\n", - " 512: '(5!+⌊√.5*555⌋)',\n", - " 513: '(5!+⌈√.5*555⌉)',\n", - " 514: '⌊5!/(⌈.5*55⌉/5!)⌋',\n", - " 515: '(5!+(5!+(5*55)))',\n", - " 516: '(5!+⌊.55*⌈5.5⌉!⌋)',\n", - " 517: '(5!+⌊55*(√5+5)⌋)',\n", - " 518: '(555-⌈5**√5⌉)',\n", - " 519: '(555-⌊5**√5⌋)',\n", - " 520: '((5*(5!-5))-55)',\n", - " 521: '⌈(5**5)/⌈5.55⌉⌉',\n", - " 522: '⌊55*(5+(5-.5))⌋',\n", - " 523: '⌈55*(5+(5-.5))⌉',\n", - " 524: '⌈5!/(55/(5!+5!))⌉',\n", - " 525: '(5*((55/.5)-5))',\n", - " 526: '⌈(.5+⌈5!/55⌉)**5⌉',\n", - " 527: '(5!+⌊55*√55⌋)',\n", - " 528: '(5!+⌈55*√55⌉)',\n", - " 529: '((5!*(5-.55))-5)',\n", + " 501: '⌊555-(5!/√5)⌋',\n", + " 502: '⌈555-(5!/√5)⌉',\n", + " 503: '⌊⌈5.5^5⌉/(5+5)⌋',\n", + " 504: '⌈⌈5.5^5⌉/(5+5)⌉',\n", + " 505: '((55*⌊√55⌋)+5!)',\n", + " 506: '((((5^5)+5)/5)-5!)',\n", + " 507: '⌊((5.5+5!)*5)-5!⌋',\n", + " 508: '⌈((5.5+5!)*5)-5!⌉',\n", + " 509: '⌊(√55^5.5)/5!⌋',\n", + " 510: '⌈(√55^5.5)/5!⌉',\n", + " 511: '⌊(5-.55)*(5!-5)⌋',\n", + " 512: '⌊(555*√.5)+5!⌋',\n", + " 513: '⌈(555*√.5)+5!⌉',\n", + " 514: '⌈(5!/55)^⌈√55⌉⌉',\n", + " 515: '(((55*5)+5!)+5!)',\n", + " 516: '⌈⌊√5⌋^(5/.555)⌉',\n", + " 517: '⌊⌈(5/.55)^5⌉/5!⌋',\n", + " 518: '⌊555-(5^√5)⌋',\n", + " 519: '⌈555-(5^√5)⌉',\n", + " 520: '(((5!-5)*5)-55)',\n", + " 521: '⌈(5^5)/⌈5.55⌉⌉',\n", + " 522: '⌊((5+5)-.5)*55⌋',\n", + " 523: '⌈((5+5)-.5)*55⌉',\n", + " 524: '⌈((5!+5!)/55)*5!⌉',\n", + " 525: '(((55/.5)-5)*5)',\n", + " 526: '⌈(⌈5!/55⌉+.5)^5⌉',\n", + " 527: '⌊(√55*55)+5!⌋',\n", + " 528: '⌈(√55*55)+5!⌉',\n", + " 529: '(((5-.55)*5!)-5)',\n", " 530: '(555-(5*5))',\n", " 531: '(555-(5!/5))',\n", - " 532: '⌊5**(5-(5.5/5))⌋',\n", - " 533: '⌊5!*(5-.555)⌋',\n", - " 534: '⌈5!*(5-.555)⌉',\n", - " 535: '((5*5!)-(5!-55))',\n", - " 536: '⌊55*√(5!-(5*5))⌋',\n", - " 537: '⌊5*(5!-(5+√55))⌋',\n", - " 538: '⌈5*(5!-(5+√55))⌉',\n", - " 539: '(5+(5!*(5-.55)))',\n", - " 540: '((5*5!)-(5+55))',\n", - " 541: '(5!+⌊(5**5)/√55⌋)',\n", - " 542: '(⌊5*(5!-.5)⌋-55)',\n", - " 543: '(555-⌈√5*5⌉)',\n", - " 544: '(555-⌊√5*5⌋)',\n", + " 532: '⌊5^(5-(5.5/5))⌋',\n", + " 533: '⌊(5-.555)*5!⌋',\n", + " 534: '⌈(5-.555)*5!⌉',\n", + " 535: '((55+(5!*5))-5!)',\n", + " 536: '⌊√(5!-(5*5))*55⌋',\n", + " 537: '⌊(5-(√55/5))^5⌋',\n", + " 538: '⌈(5-(√55/5))^5⌉',\n", + " 539: '(((5-.55)*5!)+5)',\n", + " 540: '((5!*5)-(55+5))',\n", + " 541: '⌊((5^5)/√55)+5!⌋',\n", + " 542: '⌊((5!-.5)*5)-55⌋',\n", + " 543: '⌊555-(5*√5)⌋',\n", + " 544: '⌈555-(5*√5)⌉',\n", " 545: '(555-(5+5))',\n", - " 546: '((5!*5.55)-5!)',\n", + " 546: '((5.55*5!)-5!)',\n", " 547: '⌊555-√55⌋',\n", " 548: '⌈555-√55⌉',\n", " 549: '⌊555-5.5⌋',\n", - " 550: '⌈555-5.5⌉',\n", + " 550: '⌊555.5-5⌋',\n", " 551: '⌈555.5-5⌉',\n", - " 552: '(555-⌈.5*5⌉)',\n", - " 553: '(555-⌊.5*5⌋)',\n", + " 552: '⌊555-√5.5⌋',\n", + " 553: '⌈555-√5.5⌉',\n", " 554: '⌊555-.55⌋',\n", " 555: '⌊555.55⌋',\n", " 556: '⌈555.55⌉',\n", - " 557: '(⌊.5*5⌋+555)',\n", - " 558: '(⌈.5*5⌉+555)',\n", - " 559: '(5+⌊555-.5⌋)',\n", - " 560: '⌊5+555.5⌋',\n", - " 561: '⌈5+555.5⌉',\n", - " 562: '⌊√55+555⌋',\n", - " 563: '⌈√55+555⌉',\n", - " 564: '⌈(5**5)/5.55⌉',\n", - " 565: '(5+(5+555))',\n", - " 566: '(⌊√5*5⌋+555)',\n", - " 567: '(⌈√5*5⌉+555)',\n", - " 568: '(⌈5*(5!-5.5)⌉-5)',\n", - " 569: '⌊(5*(5!-5))-5.5⌋',\n", - " 570: '(5*⌊5!-5.55⌋)',\n", - " 571: '((5*5!)-(5+(5!/5)))',\n", - " 572: '⌊5*(5!-5.55)⌋',\n", - " 573: '⌈5*(5!-5.55)⌉',\n", - " 574: '(5+⌈(5**5)/5.5⌉)',\n", - " 575: '(5*⌈5!-5.55⌉)',\n", - " 576: '((5!/5)**⌊5!/55⌋)',\n", - " 577: '⌊55*(5+5.5)⌋',\n", - " 578: '⌈55*(5+5.5)⌉',\n", - " 579: '((5!/5)+555)',\n", - " 580: '((5*5)+555)',\n", - " 581: '⌈5.5+(5*(5!-5))⌉',\n", - " 582: '⌊√55+(5*(5!-5))⌋',\n", - " 583: '(⌊5!/√5⌋*(55/5))',\n", - " 584: '⌈5*(5!-√(55/5))⌉',\n", - " 585: '(5*(5!-⌈5!/55⌉))',\n", - " 586: '⌊5*(5!-(5*.55))⌋',\n", - " 587: '((⌊√5⌋**5)+555)',\n", - " 588: '((5*5!)-⌊5+√55⌋)',\n", - " 589: '((5*5!)-(55/5))',\n", + " 557: '⌊555+√5.5⌋',\n", + " 558: '⌈555+√5.5⌉',\n", + " 559: '⌊(555+5)-.5⌋',\n", + " 560: '⌊555.5+5⌋',\n", + " 561: '⌈555.5+5⌉',\n", + " 562: '⌊555+√55⌋',\n", + " 563: '⌈555+√55⌉',\n", + " 564: '⌈(5^5)/5.55⌉',\n", + " 565: '((555+5)+5)',\n", + " 566: '⌊555+(5*√5)⌋',\n", + " 567: '⌈555+(5*√5)⌉',\n", + " 568: '⌈((5^5)-5)/5.5⌉',\n", + " 569: '⌊((5^5)+5)/5.5⌋',\n", + " 570: '(⌊5!-5.55⌋*5)',\n", + " 571: '⌈(⌊5!-5.5⌋*5)+.5⌉',\n", + " 572: '⌊(5!-5.55)*5⌋',\n", + " 573: '⌈(5!-5.55)*5⌉',\n", + " 574: '⌈((5^5)/5.5)+5⌉',\n", + " 575: '(⌈5!-5.55⌉*5)',\n", + " 576: '((5!/5)^⌊5!/55⌋)',\n", + " 577: '⌊(5.5+5)*55⌋',\n", + " 578: '⌈(5.5+5)*55⌉',\n", + " 579: '(555+(5!/5))',\n", + " 580: '(555+(5*5))',\n", + " 581: '⌈((5!-5)*5)+5.5⌉',\n", + " 582: '⌊((5!-5)*5)+√55⌋',\n", + " 583: '⌈((5!-5)*5)+√55⌉',\n", + " 584: '⌈(5!-√(55/5))*5⌉',\n", + " 585: '(⌊5!-(5!/55)⌋*5)',\n", + " 586: '⌊(5!-(.55*5))*5⌋',\n", + " 587: '(555+(⌊√5⌋^5))',\n", + " 588: '⌈(5!*5)-(√55+5)⌉',\n", + " 589: '⌊5!*(5-(5/55))⌋',\n", " 590: '⌈5!*(5-(5/55))⌉',\n", - " 591: '(⌊5**√5⌋+555)',\n", - " 592: '(⌈5**√5⌉+555)',\n", - " 593: '(⌈5*(5!-.55)⌉-5)',\n", - " 594: '⌊(5*5!)-5.55⌋',\n", - " 595: '(5*⌊5!-.555⌋)',\n", - " 596: '((5*5!)-⌊5-.55⌋)',\n", - " 597: '⌊5*(5!-.555)⌋',\n", - " 598: '⌈5*(5!-.555)⌉',\n", - " 599: '⌊(5*5!)-.555⌋',\n", - " 600: '(5*⌈555/5!⌉!)',\n", - " 601: '⌈(5*5!)+.555⌉',\n", - " 602: '⌊5*(5!+.555)⌋',\n", - " 603: '⌈5*(5!+.555)⌉',\n", - " 604: '(⌊5.5*55⌋/.5)',\n", - " 605: '(55*(55/5))',\n", - " 606: '⌈(5*5!)+5.55⌉',\n", - " 607: '(5+⌊5*(5!+.55)⌋)',\n", - " 608: '(⌊5!/√5⌋+555)',\n", - " 609: '(⌈5!/√5⌉+555)',\n", - " 610: '(55+555)',\n", - " 611: '(⌈√5**5⌉+555)',\n", - " 612: '(5+⌊(5*5!)+√55⌋)',\n", - " 613: '⌊5*(5!+(5*.55))⌋',\n", - " 614: '(((5**5)-55)/5)',\n", - " 615: '((.5*5!)+555)',\n", - " 616: '(5.5*⌊5!-√55⌋)',\n", - " 617: '⌈5*(5!+√(55/5))⌉',\n", - " 618: '⌈(5*(5+5!))-√55⌉',\n", - " 619: '⌊√5*⌊.5*555⌋⌋',\n", - " 620: '(5*⌊√5*55.5⌋)',\n", - " 621: '(.5*⌈√5*555⌉)',\n", - " 622: '⌈√5*⌈.5*555⌉⌉',\n", - " 623: '(⌈5*(5!+5.5)⌉-5)',\n", - " 624: '(⌈(5**5)-5.5⌉/5)',\n", - " 625: '(5**⌊555/5!⌋)',\n", - " 626: '(⌊5.5+(5**5)⌋/5)',\n", - " 627: '⌊5*(5!+5.55)⌋',\n", - " 628: '⌈5*(5!+5.55)⌉',\n", - " 629: '⌊5.5*(5!-5.5)⌋',\n", - " 630: '(5*⌈5!+5.55⌉)',\n", - " 631: '⌈5.5+(5*(5+5!))⌉',\n", - " 632: '⌊5.5*⌈5!-5.5⌉⌋',\n", - " 633: '⌈5.5*⌈5!-5.5⌉⌉',\n", - " 634: '⌊5!*√⌈5*5.55⌉⌋',\n", - " 635: '(5+(5*⌈5!+5.5⌉))',\n", - " 636: '(((5**5)+55)/5)',\n", - " 637: '(5+⌊5.5*(5!-5)⌋)',\n", - " 638: '⌊(5!-5)*5.55⌋',\n", - " 639: '⌈(5!-5)*5.55⌉',\n", - " 640: '(5*⌊√5.5*55⌋)',\n", - " 641: '⌈5*(5!+√(5!-55))⌉',\n", - " 642: '(5+⌊5*(5!+√55)⌋)',\n", - " 643: '(5+⌈5*(5!+√55)⌉)',\n", - " 644: '⌊√5.5*(5*55)⌋',\n", - " 645: '(5*⌈√5.5*55⌉)',\n", - " 646: '⌈5*(5!+(5/.55))⌉',\n", - " 647: '⌈5.5*(5!-(.5*5))⌉',\n", - " 648: '(5!*(⌊.5*55⌋/5))',\n", - " 649: '⌊⌊5!-√5⌋*5.55⌋',\n", - " 650: '((5+5)*(5!-55))',\n", - " 651: '(⌈√5⌉*⌈5!/.555⌉)',\n", - " 652: '(55+⌊5*(5!-.5)⌋)',\n", - " 653: '(55+⌈5*(5!-.5)⌉)',\n", - " 654: '⌊5.5*⌊5!-.55⌋⌋',\n", - " 655: '⌊(5*5!)+55.5⌋',\n", - " 656: '⌈(5*5!)+55.5⌉',\n", - " 657: '⌈5.5*(5!-.55)⌉',\n", - " 658: '(55+⌈5*(.5+5!)⌉)',\n", - " 659: '⌊(5!*5.5)-.55⌋',\n", - " 660: '(55*⌊5+√55⌋)',\n", - " 661: '((5!*5.55)-5)',\n", - " 662: '⌊5*(5+(5!+√55))⌋',\n", - " 663: '⌊(5!-.5)*5.55⌋',\n", + " 591: '⌊555+(5^√5)⌋',\n", + " 592: '⌈555+(5^√5)⌉',\n", + " 593: '⌈(5!*5)-√55.5⌉',\n", + " 594: '⌊(5!*5)-5.55⌋',\n", + " 595: '⌈(5!*5)-5.55⌉',\n", + " 596: '⌈√(5+5)^5.55⌉',\n", + " 597: '⌊(5!-.555)*5⌋',\n", + " 598: '⌈(5!-.555)*5⌉',\n", + " 599: '⌊(5!*5)-.555⌋',\n", + " 600: '(⌊5.555⌋!*5)',\n", + " 601: '⌈.555+(5!*5)⌉',\n", + " 602: '⌊(.555+5!)*5⌋',\n", + " 603: '⌈(.555+5!)*5⌉',\n", + " 604: '(⌊55*5.5⌋/.5)',\n", + " 605: '((55*55)/5)',\n", + " 606: '⌈5.55+(5!*5)⌉',\n", + " 607: '⌊√55.5+(5!*5)⌋',\n", + " 608: '⌊555+(5!/√5)⌋',\n", + " 609: '⌈555+(5!/√5)⌉',\n", + " 610: '(555+55)',\n", + " 611: '⌈555+(√5^5)⌉',\n", + " 612: '⌊(√55+(5!*5))+5⌋',\n", + " 613: '⌊((.55*5)+5!)*5⌋',\n", + " 614: '(((5^5)-55)/5)',\n", + " 615: '(555+(5!*.5))',\n", + " 616: '(⌊5!-√55⌋*5.5)',\n", + " 617: '⌊((5^5)/5)-√55⌋',\n", + " 618: '⌈((5^5)/5)-√55⌉',\n", + " 619: '⌊⌊555*.5⌋*√5⌋',\n", + " 620: '⌊(55.5*√5)*5⌋',\n", + " 621: '⌈(55.5*√5)*5⌉',\n", + " 622: '⌈⌈555*.5⌉*√5⌉',\n", + " 623: '⌊((5^5)-5.5)/5⌋',\n", + " 624: '⌊((5^5)-.55)/5⌋',\n", + " 625: '(5^⌊555/5!⌋)',\n", + " 626: '⌈((5^5)/5)+.55⌉',\n", + " 627: '⌊(5.55+5!)*5⌋',\n", + " 628: '⌈(5.55+5!)*5⌉',\n", + " 629: '⌊(5!-5.5)*5.5⌋',\n", + " 630: '(⌈5.55+5!⌉*5)',\n", + " 631: '⌈((5^5)/5)+5.5⌉',\n", + " 632: '⌊⌈5!-5.5⌉*5.5⌋',\n", + " 633: '⌈⌈5!-5.5⌉*5.5⌉',\n", + " 634: '⌊√⌈5.55*5⌉*5!⌋',\n", + " 635: '⌈√⌈5.55*5⌉*5!⌉',\n", + " 636: '((55+(5^5))/5)',\n", + " 637: '⌊(√55.5+5!)*5⌋',\n", + " 638: '⌊5.55*(5!-5)⌋',\n", + " 639: '⌈5.55*(5!-5)⌉',\n", + " 640: '(⌊55*√5.5⌋*5)',\n", + " 641: '⌈(√(5!-55)+5!)*5⌉',\n", + " 642: '⌊((√55+5!)*5)+5⌋',\n", + " 643: '⌈((√55+5!)*5)+5⌉',\n", + " 644: '⌊(55*√5.5)*5⌋',\n", + " 645: '⌈(55*√5.5)*5⌉',\n", + " 646: '⌈((5/.55)+5!)*5⌉',\n", + " 647: '⌊(5!-√5.5)*5.5⌋',\n", + " 648: '((⌊55*.5⌋/5)*5!)',\n", + " 649: '⌊5.55*⌊5!-√5⌋⌋',\n", + " 650: '((55+(5!*5))-5)',\n", + " 651: '⌊(((5^5)*5)*5)/5!⌋',\n", + " 652: '⌊((5.5+5!)+5)*5⌋',\n", + " 653: '⌈((5.5+5!)+5)*5⌉',\n", + " 654: '⌊⌊5!-.55⌋*5.5⌋',\n", + " 655: '⌊55.5+(5!*5)⌋',\n", + " 656: '⌈55.5+(5!*5)⌉',\n", + " 657: '⌈(5!-.55)*5.5⌉',\n", + " 658: '⌈√⌊55*.55⌋*5!⌉',\n", + " 659: '⌊(5.5*5!)-.55⌋',\n", + " 660: '(⌊√55+5⌋*55)',\n", + " 661: '((5.55*5!)-5)',\n", + " 662: '⌊((√55+5)+5!)*5⌋',\n", + " 663: '⌊(.55+5!)*5.5⌋',\n", " 664: '⌊⌈5.5⌉!-55.5⌋',\n", " 665: '(⌈5.55⌉!-55)',\n", - " 666: '⌊5!*5.555⌋',\n", - " 667: '⌈5!*5.555⌉',\n", - " 668: '⌊(.5+5!)*5.55⌋',\n", - " 669: '⌈(.5+5!)*5.55⌉',\n", - " 670: '(5!+(555-5))',\n", - " 671: '(5+(5!*5.55))',\n", - " 672: '(5!+⌊555-√5⌋)',\n", - " 673: '(5!+⌈555-√5⌉)',\n", - " 674: '(5!+⌊555-.5⌋)',\n", - " 675: '⌊5!+555.5⌋',\n", - " 676: '⌈5!+555.5⌉',\n", - " 677: '(5!+⌊√5+555⌋)',\n", - " 678: '(5!+⌈√5+555⌉)',\n", - " 679: '⌈(5.5**5)/√55⌉',\n", - " 680: '(5+(5!+555))',\n", - " 681: '⌈5!*(5+(5/√55))⌉',\n", - " 682: '⌊55*(5+√55)⌋',\n", - " 683: '⌈55*(5+√55)⌉',\n", - " 684: '((5!/5)+(5!*5.5))',\n", - " 685: '(5*⌊.5*(5*55)⌋)',\n", - " 686: '⌊(√5-⌈.5⌉)*555⌋',\n", - " 687: '⌊.5*(5*(5*55))⌋',\n", - " 688: '⌈.5*(5*(5*55))⌉',\n", - " 689: '(5!+⌈(5**5)/5.5⌉)',\n", - " 690: '(5*⌈.5*(5*55)⌉)',\n", - " 691: '⌈5.5*(5!+5.5)⌉',\n", - " 692: '(5+⌊5.5*(5+5!)⌋)',\n", - " 693: '⌊(5+5!)*5.55⌋',\n", - " 694: '⌈(5+5!)*5.55⌉',\n", + " 666: '⌊5.555*5!⌋',\n", + " 667: '⌈5.555*5!⌉',\n", + " 668: '⌊5.55*(5!+.5)⌋',\n", + " 669: '⌈5.55*(5!+.5)⌉',\n", + " 670: '((555+5!)-5)',\n", + " 671: '((5.55*5!)+5)',\n", + " 672: '⌊(555-√5)+5!⌋',\n", + " 673: '⌈(555-√5)+5!⌉',\n", + " 674: '⌊(555+5!)-.5⌋',\n", + " 675: '⌊555.5+5!⌋',\n", + " 676: '⌈555.5+5!⌉',\n", + " 677: '⌊(555+√5)+5!⌋',\n", + " 678: '⌈(555+√5)+5!⌉',\n", + " 679: '⌈⌊5.5^5⌋/√55⌉',\n", + " 680: '((555+5!)+5)',\n", + " 681: '⌈((5/√55)+5)*5!⌉',\n", + " 682: '⌊(√55+5)*55⌋',\n", + " 683: '⌈(√55+5)*55⌉',\n", + " 684: '(⌊5!-5.5⌋*⌈5.5⌉)',\n", + " 685: '(⌊(55*5)*.5⌋*5)',\n", + " 686: '⌊555*(√5-⌈.5⌉)⌋',\n", + " 687: '⌊((55*5)*5)*.5⌋',\n", + " 688: '⌈((55*5)*5)*.5⌉',\n", + " 689: '⌈((5^5)/5.5)+5!⌉',\n", + " 690: '⌊(5.5+5!)*5.5⌋',\n", + " 691: '⌈(5.5+5!)*5.5⌉',\n", + " 692: '⌊((5!+5)*5.5)+5⌋',\n", + " 693: '⌊5.55*(5!+5)⌋',\n", + " 694: '⌈5.55*(5!+5)⌉',\n", " 695: '(⌈5.55⌉!-(5*5))',\n", " 696: '(⌈5.55⌉!-(5!/5))',\n", - " 697: '(⌈5.5⌉!-((5!-5)/5))',\n", - " 698: '⌊5.5*⌊5!+√55⌋⌋',\n", - " 699: '⌈5.5*⌊5!+√55⌋⌉',\n", - " 700: '(5*(5*⌈.5*55⌉))',\n", - " 701: '⌈5.5*(5!+√55)⌉',\n", - " 702: '⌊(5**5)/(5-.55)⌋',\n", - " 703: '⌈(5**5)/(5-.55)⌉',\n", - " 704: '(5.5*⌈5!+√55⌉)',\n", - " 705: '(5*(5!+⌊5!/5.5⌋))',\n", - " 706: '⌊(5!-√5)*⌈5.55⌉⌋',\n", - " 707: '(⌈5.5⌉!-⌈5+√55⌉)',\n", - " 708: '(⌈5!-√5⌉*⌈5.55⌉)',\n", + " 697: '⌈((√55*.5)^5)-5⌉',\n", + " 698: '⌊⌈5^5.5⌉/(5+5)⌋',\n", + " 699: '⌈⌈5^5.5⌉/(5+5)⌉',\n", + " 700: '((⌈55*.5⌉*5)*5)',\n", + " 701: '⌈(√55+5!)*5.5⌉',\n", + " 702: '⌊(5^5)/(5-.55)⌋',\n", + " 703: '⌈(5^5)/(5-.55)⌉',\n", + " 704: '(⌈√55+5!⌉*5.5)',\n", + " 705: '⌈(5^(5.5/5))*5!⌉',\n", + " 706: '⌊⌈5.55⌉*(5!-√5)⌋',\n", + " 707: '⌈⌈5.55⌉*(5!-√5)⌉',\n", + " 708: '⌊⌈5.55⌉!-(5*√5)⌋',\n", " 709: '(⌈5.5⌉!-(55/5))',\n", " 710: '(⌈5.55⌉!-(5+5))',\n", - " 711: '(⌈5.5⌉!-⌊5/.55⌋)',\n", + " 711: '⌈⌈5.5⌉!-(5/.55)⌉',\n", " 712: '⌊⌈5.55⌉!-√55⌋',\n", " 713: '⌈⌈5.55⌉!-√55⌉',\n", - " 714: '⌊⌈5.55⌉!-5.5⌋',\n", + " 714: '⌊⌈5.5⌉!-5.55⌋',\n", " 715: '(⌈5.555⌉!-5)',\n", - " 716: '(⌈5.5⌉!-⌊5-.55⌋)',\n", + " 716: '⌊(5!-.55)*⌈5.5⌉⌋',\n", " 717: '⌊⌈5.555⌉!-√5⌋',\n", " 718: '⌈⌈5.555⌉!-√5⌉',\n", - " 719: '⌊⌈5.555⌉!-.5⌋',\n", + " 719: '⌊⌈5.5⌉!-.555⌋',\n", " 720: '⌈5.5555⌉!',\n", - " 721: '⌈.5+⌈5.555⌉!⌉',\n", - " 722: '⌊√5+⌈5.555⌉!⌋',\n", - " 723: '⌈√5+⌈5.555⌉!⌉',\n", - " 724: '(⌊5!/√.5⌋+555)',\n", - " 725: '(5+⌈5.555⌉!)',\n", - " 726: '⌈5.5+⌈5.55⌉!⌉',\n", - " 727: '⌊√55+⌈5.55⌉!⌋',\n", - " 728: '⌈√55+⌈5.55⌉!⌉',\n", - " 729: '(⌈5!/55⌉**⌈5.5⌉)',\n", - " 730: '(5+(5+⌈5.55⌉!))',\n", - " 731: '(⌈5.5⌉!+(55/5))',\n", - " 732: '(5!*(5+(5.5/5)))',\n", - " 733: '(5+⌈⌈5.5⌉!+√55⌉)',\n", - " 734: '(5!+⌊5*(√5*55)⌋)',\n", - " 735: '(5*(5!+⌊.5*55⌋))',\n", - " 736: '(⌈5.5⌉!+⌊5!/√55⌋)',\n", - " 737: '⌊5*(5!+(.5*55))⌋',\n", - " 738: '⌈5*(5!+(.5*55))⌉',\n", - " 739: '((5!/5)+(⌈5.5⌉!-5))',\n", - " 740: '(5*(5!+⌈.5*55⌉))',\n", - " 741: '(⌈5.5⌉!+⌊5!/5.5⌋)',\n", - " 742: '(⌈5.5⌉!+⌈5!/5.5⌉)',\n", - " 743: '⌊(5!**√5)/(5+55)⌋',\n", - " 744: '((5!/5)+⌈5.55⌉!)',\n", - " 745: '((5*5)+⌈5.55⌉!)',\n", - " 746: '(5!+((5+(5**5))/5))',\n", - " 747: '(5!+⌊5*(5!+5.5)⌋)',\n", - " 748: '(5!+⌈5*(5!+5.5)⌉)',\n", - " 749: '(5+((5!/5)+⌈5.5⌉!))',\n", - " 750: '((5+5!)*⌈5.55⌉)',\n", - " 751: '⌈5!*(√.5+5.55)⌉',\n", - " 752: '(5!+⌊5.5*(5!-5)⌋)',\n", - " 753: '(5!+⌈5.5*(5!-5)⌉)',\n", - " 754: '(5!+⌊5!*√⌈.5*55⌉⌋)',\n", - " 755: '((5*(5!+55))-5!)',\n", - " 756: '(⌈5.5⌉*⌈5!+5.5⌉)',\n", - " 757: '(5!+⌊5*(5!+√55)⌋)',\n", - " 758: '(5!+⌈5*(5!+√55)⌉)',\n", - " 759: '⌈5!*√(5!/⌈5!/55⌉)⌉',\n", - " 760: '(5*⌊55*(5-√5)⌋)',\n", - " 761: '⌈5*(55*(5-√5))⌉',\n", - " 762: '(⌈5.5⌉*⌊5!+√55⌋)',\n", - " 763: '⌈5*(5!**(.5+.55))⌉',\n", - " 764: '(⌊5!*√55⌋-(5+5!))',\n", - " 765: '(5*⌈55*(5-√5)⌉)',\n", - " 766: '⌊((5*5)-5.5)**√5⌋',\n", - " 767: '⌈((5*5)-5.5)**√5⌉',\n", - " 768: '(⌈5.5⌉*⌈5!+√55⌉)',\n", - " 769: '⌊55**√(5*.55)⌋',\n", - " 770: '(⌈5.5⌉!+(55-5))',\n", - " 771: '⌈(5*5.55)**⌊√5⌋⌉',\n", - " 772: '(⌈5.5⌉!+⌊55-√5⌋)',\n", - " 773: '(⌊5!*√55.5⌋-5!)',\n", - " 774: '(⌈5.5⌉!+⌊55-.5⌋)',\n", - " 775: '(55+⌈5.55⌉!)',\n", - " 776: '⌈⌈5.5⌉!+55.5⌉',\n", + " 721: '⌈⌈5.55⌉!+.55⌉',\n", + " 722: '⌊⌈5.555⌉!+√5⌋',\n", + " 723: '⌈⌈5.555⌉!+√5⌉',\n", + " 724: '⌈5^((5/.55)-5)⌉',\n", + " 725: '(⌈5.555⌉!+5)',\n", + " 726: '⌈5.55+⌈5.5⌉!⌉',\n", + " 727: '⌊⌈5.55⌉!+√55⌋',\n", + " 728: '⌈⌈5.55⌉!+√55⌉',\n", + " 729: '(⌈5!/55⌉^⌈5.5⌉)',\n", + " 730: '((⌈5.55⌉!+5)+5)',\n", + " 731: '((55/5)+⌈5.5⌉!)',\n", + " 732: '(((5.5/5)+5)*5!)',\n", + " 733: '⌈(√55+⌈5.5⌉!)+5⌉',\n", + " 734: '⌊((55*√5)*5)+5!⌋',\n", + " 735: '(⌊(55*.5)+5!⌋*5)',\n", + " 736: '⌊√5.5^√(55+5)⌋',\n", + " 737: '⌊((55*.5)+5!)*5⌋',\n", + " 738: '⌈((55*.5)+5!)*5⌉',\n", + " 739: '⌈⌈(5!*5)*√5⌉*.55⌉',\n", + " 740: '(⌈(55*.5)+5!⌉*5)',\n", + " 741: '⌊(5!/5.5)+⌈5.5⌉!⌋',\n", + " 742: '⌈(5!/5.5)+⌈5.5⌉!⌉',\n", + " 743: '⌊⌈5!^√5⌉/(55+5)⌋',\n", + " 744: '(⌈5.55⌉!+(5!/5))',\n", + " 745: '(⌈5.55⌉!+(5*5))',\n", + " 746: '((((5^5)+5)/5)+5!)',\n", + " 747: '⌊((5.5+5!)*5)+5!⌋',\n", + " 748: '⌈((5.5+5!)*5)+5!⌉',\n", + " 749: '⌈(√55^(5*.5))*5⌉',\n", + " 750: '(⌈5.55⌉*(5!+5))',\n", + " 751: '⌊(5/.55)^⌈5*.5⌉⌋',\n", + " 752: '⌊((5!-5)*5.5)+5!⌋',\n", + " 753: '((5.5+5!)*⌈5.5⌉)',\n", + " 754: '⌊(√⌈55*.5⌉*5!)+5!⌋',\n", + " 755: '(((55+5!)*5)-5!)',\n", + " 756: '⌈(55/5)^(5-√5)⌉',\n", + " 757: '⌈(55*.5)^⌊5*.5⌋⌉',\n", + " 758: '⌈(√55*5)+⌈5.5⌉!⌉',\n", + " 759: '⌈√⌊√55*5.5⌋*5!⌉',\n", + " 760: '⌊((5-√5)*55)*5⌋',\n", + " 761: '⌈((5-√5)*55)*5⌉',\n", + " 762: '(⌊√55+5!⌋*⌈5.5⌉)',\n", + " 763: '⌈(5!^(.55+.5))*5⌉',\n", + " 764: '⌊(√55+5!)*⌈5.5⌉⌋',\n", + " 765: '(⌈(5-√5)*55⌉*5)',\n", + " 766: '⌊((5*5)-5.5)^√5⌋',\n", + " 767: '⌈((5*5)-5.5)^√5⌉',\n", + " 768: '⌊√⌈5.55⌉^√55⌋',\n", + " 769: '⌊55^√(.55*5)⌋',\n", + " 770: '((55+⌈5.5⌉!)-5)',\n", + " 771: '⌈(5.55*5)^⌊√5⌋⌉',\n", + " 772: '⌊((5*.5)^5.5)*5⌋',\n", + " 773: '⌊(√55.5*5!)-5!⌋',\n", + " 774: '⌈(√55.5*5!)-5!⌉',\n", + " 775: '(⌈5.55⌉!+55)',\n", + " 776: '⌈55.5+⌈5.5⌉!⌉',\n", " 777: '⌊(555-5)/√.5⌋',\n", " 778: '⌈(555-5)/√.5⌉',\n", - " 779: '(⌊555/√.5⌋-5)',\n", - " 780: '(5+(⌈5.5⌉!+55))',\n", - " 781: '⌊(5**5)/⌊5-.55⌋⌋',\n", - " 782: '⌈(5**5)/⌊5-.55⌋⌉',\n", - " 783: '⌊⌊555/√.5⌋-.5⌋',\n", - " 784: '⌊√⌊.5*5⌋*555⌋',\n", + " 779: '⌊(555/√.5)-5⌋',\n", + " 780: '((55+⌈5.5⌉!)+5)',\n", + " 781: '⌊(5^5)/⌊5-.55⌋⌋',\n", + " 782: '⌈(5^5)/⌊5-.55⌋⌉',\n", + " 783: '⌊⌊555-.5⌋/√.5⌋',\n", + " 784: '⌊555*√⌊5*.5⌋⌋',\n", " 785: '⌊555.5/√.5⌋',\n", - " 786: '(5!+(5!*5.55))',\n", - " 787: '⌊(5-.5)*(5!+55)⌋',\n", - " 788: '⌈(5-.5)*(5!+55)⌉',\n", - " 789: '(5+⌊555/√.5⌋)',\n", - " 790: '(5+⌈555/√.5⌉)',\n", - " 791: '⌊(5+555)/√.5⌋',\n", - " 792: '⌈(5+555)/√.5⌉',\n", - " 793: '⌈⌈5.5⌉!*(5.5/5)⌉',\n", - " 794: '(⌊55*(√5+5)⌋/.5)',\n", - " 795: '(5!+(5!+555))',\n", - " 796: '⌈55**(5/⌈.5*5⌉)⌉',\n", - " 797: '⌊5.5*(5!+(5*5))⌋',\n", - " 798: '((⌈√5⌉**5)+555)',\n", - " 799: '⌈⌊5!**√⌈5!/55⌉⌋/5⌉',\n", - " 800: '(5*((⌈√5⌉*55)-5))',\n", - " 801: '⌊⌊√55⌋*(5!-5.5)⌋',\n", - " 802: '⌈⌊√55⌋*(5!-5.5)⌉',\n", - " 803: '⌊⌊5!**√5⌋/55.5⌋',\n", - " 804: '⌈⌊5!**√5⌋/55.5⌉',\n", - " 805: '⌈5!*√(55-(5+5))⌉',\n", - " 806: '(⌈⌊5!**√5⌋/55⌉-5)',\n", - " 807: '(5!+⌊5.5*(5+5!)⌋)',\n", - " 808: '(5!+⌈5.5*(5+5!)⌉)',\n", - " 809: '(⌊5!*√(5+55)⌋-5!)',\n", - " 810: '(⌈√5⌉*((5*55)-5))',\n", - " 811: '⌈(⌈5!**√5⌉-5)/55⌉',\n", - " 812: '⌈5!*(⌊5/.55⌋-√5)⌉',\n", - " 813: '(⌊5!*(√5+5)⌋-55)',\n", - " 814: '(⌊55*√55⌋/.5)',\n", - " 815: '⌊55/(.5/√55)⌋',\n", - " 816: '(⌈55*√55⌉/.5)',\n", - " 817: '⌊5**(5*(5/⌈5.5⌉))⌋',\n", - " 818: '((5*5!)+⌊5!/.55⌋)',\n", - " 819: '((5*5!)+⌈5!/.55⌉)',\n", - " 820: '((⌈√5⌉*(5*55))-5)',\n", - " 821: '⌊5!/(√.5**5.55)⌋',\n", - " 822: '⌊5!*√⌊55-√55⌋⌋',\n", - " 823: '(⌊√5*5!⌋+555)',\n", - " 824: '(⌈√5*5!⌉+555)',\n", - " 825: '(55*(5+(5+5)))',\n", - " 826: '⌊(5*5!)**(.5+.55)⌋',\n", - " 827: '⌊(5-.55)**(5-.5)⌋',\n", - " 828: '(⌊((5+5)**5)/5!⌋-5)',\n", - " 829: '(⌈((5+5)**5)/5!⌉-5)',\n", - " 830: '(5*⌊⌈√5⌉*55.5⌋)',\n", - " 831: '(⌈√5⌉*⌊.5*555⌋)',\n", - " 832: '⌊(.5+⌈.5⌉)*555⌋',\n", - " 833: '⌈(.5+⌈.5⌉)*555⌉',\n", - " 834: '(⌊5!*√55⌋-55)',\n", - " 835: '(⌈5!*√55⌉-55)',\n", - " 836: '⌊⌊√55⌋*(5!-.55)⌋',\n", - " 837: '⌈⌊√55⌋*(5!-.55)⌉',\n", - " 838: '⌊√55*⌈5!-√55⌉⌋',\n", - " 839: '⌈√55*⌈5!-√55⌉⌉',\n", - " 840: '(5!+⌈5.555⌉!)',\n", - " 841: '(5!+⌈.5+⌈5.55⌉!⌉)',\n", - " 842: '(⌈5.5⌉!+⌊√5*55⌋)',\n", - " 843: '(⌊5!*√(55-5)⌋-5)',\n", - " 844: '⌊5!*√(55-5.5)⌋',\n", - " 845: '(5+(5!+⌈5.55⌉!))',\n", - " 846: '⌈√55*⌊5!-5.5⌋⌉',\n", - " 847: '(⌊(5!-5)*√55⌋-5)',\n", - " 848: '⌊5!*√⌊55.5-5⌋⌋',\n", - " 849: '⌊√55*(5!-5.5)⌋',\n", - " 850: '(5*(5!+(55-5)))',\n", - " 851: '⌊⌊(5!-5)*√55⌋-.5⌋',\n", - " 852: '⌊5!*√(55.5-5)⌋',\n", - " 853: '⌈5!*√(55.5-5)⌉',\n", - " 854: '(5+⌈5!*√(55-5)⌉)',\n", - " 855: '(5*⌈5.55**⌈√5⌉⌉)',\n", - " 856: '⌊5!*√⌈55.5-5⌉⌋',\n", - " 857: '⌈5!*√⌈55.5-5⌉⌉',\n", - " 858: '(5+⌈(5!-5)*√55⌉)',\n", - " 859: '⌊55**(√5-.55)⌋',\n", - " 860: '⌈55**(√5-.55)⌉',\n", - " 861: '⌊5!*(5+(5!/55))⌋',\n", - " 862: '⌈5!*(5+(5!/55))⌉',\n", - " 863: '⌊5*(5!+(55-√5))⌋',\n", - " 864: '(⌊5!*√55⌋-(5*5))',\n", - " 865: '(5*⌊√(5+5)*55⌋)',\n", - " 866: '(⌈5!*√55⌉-(5!/5))',\n", - " 867: '(⌈5!**√⌊5!/55⌋⌉-5)',\n", - " 868: '⌊5!*(√5+⌊5.55⌋)⌋',\n", - " 869: '⌊5*(√(5+5)*55)⌋',\n", + " 786: '((5.55*5!)+5!)',\n", + " 787: '⌈((.55*5)^5)*5⌉',\n", + " 788: '⌈(55+5!)*(5-.5)⌉',\n", + " 789: '⌊(555/√.5)+5⌋',\n", + " 790: '⌈(555/√.5)+5⌉',\n", + " 791: '⌊(555+5)/√.5⌋',\n", + " 792: '⌈(555+5)/√.5⌉',\n", + " 793: '⌈(5.5/5)*⌈5.5⌉!⌉',\n", + " 794: '(⌊(5+√5)*55⌋/.5)',\n", + " 795: '((555+5!)+5!)',\n", + " 796: '⌈55^(5/⌈5*.5⌉)⌉',\n", + " 797: '⌊((5*5)+5!)*5.5⌋',\n", + " 798: '(555+(⌈√5⌉^5))',\n", + " 799: '⌈⌈5!^√⌈5!/55⌉⌉/5⌉',\n", + " 800: '(((5+5)^5)/(5!+5))',\n", + " 801: '⌊(5!-5.5)*⌊√55⌋⌋',\n", + " 802: '⌈(5!-5.5)*⌊√55⌋⌉',\n", + " 803: '⌊(5!^√5)/55.5⌋',\n", + " 804: '⌈(5!^√5)/55.5⌉',\n", + " 805: '⌈√(55-(5+5))*5!⌉',\n", + " 806: '⌊(5-.5)^(5-.55)⌋',\n", + " 807: '⌊((5!+5)*5.5)+5!⌋',\n", + " 808: '⌈((5!+5)*5.5)+5!⌉',\n", + " 809: '⌊(√(55+5)*5!)-5!⌋',\n", + " 810: '⌊⌊(5!^√5)+5⌋/55⌋',\n", + " 811: '⌈⌊(5!^√5)+5⌋/55⌉',\n", + " 812: '⌈(5^√⌊5.5+5⌋)*5⌉',\n", + " 813: '⌊((5+√5)*5!)-55⌋',\n", + " 814: '(⌊√55*55⌋/.5)',\n", + " 815: '⌊(√55*55)/.5⌋',\n", + " 816: '⌈(√55*55)/.5⌉',\n", + " 817: '⌊5^((5/⌈5.5⌉)*5)⌋',\n", + " 818: '⌊(5!/.55)+(5!*5)⌋',\n", + " 819: '⌈(5!/.55)+(5!*5)⌉',\n", + " 820: '(((55*5)*⌈√5⌉)-5)',\n", + " 821: '⌊5!/(√.5^5.55)⌋',\n", + " 822: '⌊√⌊55-√55⌋*5!⌋',\n", + " 823: '⌊555+(5!*√5)⌋',\n", + " 824: '⌈555+(5!*√5)⌉',\n", + " 825: '(((5+5)+5)*55)',\n", + " 826: '⌊(5!*5)^(.55+.5)⌋',\n", + " 827: '⌊(5-.55)^(5-.5)⌋',\n", + " 828: '⌈(5-.55)^(5-.5)⌉',\n", + " 829: '⌈(((5+5)^5)/5!)-5⌉',\n", + " 830: '(⌊55.5*⌈√5⌉⌋*5)',\n", + " 831: '(⌊555*.5⌋*⌈√5⌉)',\n", + " 832: '⌊555*(⌈.5⌉+.5)⌋',\n", + " 833: '⌈555*(⌈.5⌉+.5)⌉',\n", + " 834: '⌊(√55*5!)-55⌋',\n", + " 835: '⌈(√55*5!)-55⌉',\n", + " 836: '⌊(5!-.55)*⌊√55⌋⌋',\n", + " 837: '⌈(5!-.55)*⌊√55⌋⌉',\n", + " 838: '⌊⌊5.5^5⌋/⌈5.5⌉⌋',\n", + " 839: '⌈⌊5.5^5⌋/⌈5.5⌉⌉',\n", + " 840: '(⌈5.555⌉!+5!)',\n", + " 841: '⌈(⌈5.5⌉!+.55)+5!⌉',\n", + " 842: '⌊(55*√5)+⌈5.5⌉!⌋',\n", + " 843: '⌊(√(55-5)*5!)-5⌋',\n", + " 844: '⌊√(55-5.5)*5!⌋',\n", + " 845: '((⌈5.55⌉!+5!)+5)',\n", + " 846: '⌈⌊5!-5.5⌋*√55⌉',\n", + " 847: '⌊(√55*(5!-5))-5⌋',\n", + " 848: '⌊√⌊55.5-5⌋*5!⌋',\n", + " 849: '⌈√⌊55.5-5⌋*5!⌉',\n", + " 850: '(((55+5!)-5)*5)',\n", + " 851: '⌈5!^((5/5.5)+.5)⌉',\n", + " 852: '⌊⌈5!-5.5⌉*√55⌋',\n", + " 853: '⌈⌈5!-5.5⌉*√55⌉',\n", + " 854: '⌈(√(55-5)*5!)+5⌉',\n", + " 855: '⌈(5.55^⌈√5⌉)*5⌉',\n", + " 856: '⌊√55.5*(5!-5)⌋',\n", + " 857: '⌈√55.5*(5!-5)⌉',\n", + " 858: '⌈(√55*(5!-5))+5⌉',\n", + " 859: '⌊55^(√5-.55)⌋',\n", + " 860: '⌈55^(√5-.55)⌉',\n", + " 861: '⌊((5!/55)+5)*5!⌋',\n", + " 862: '⌈((5!/55)+5)*5!⌉',\n", + " 863: '⌈5^(⌊5!/5.5⌋/5)⌉',\n", + " 864: '⌊(√55*5!)-(5*5)⌋',\n", + " 865: '(⌊55*√(5+5)⌋*5)',\n", + " 866: '⌈(√55*5!)-(5!/5)⌉',\n", + " 867: '⌊((√5-.5)^5)*55⌋',\n", + " 868: '⌊(√⌊5.55⌋+5)*5!⌋',\n", + " 869: '⌊(55*√(5+5))*5⌋',\n", " 870: '((555-5!)/.5)',\n", - " 871: '⌊5!**√⌈5.55/5⌉⌋',\n", - " 872: '⌊5*(5!+(55-.5))⌋',\n", - " 873: '⌈5*(5!+(55-.5))⌉',\n", - " 874: '⌊(5*(5!+55))-.5⌋',\n", - " 875: '(5*⌊5!+55.5⌋)',\n", - " 876: '⌈.5+(5*(5!+55))⌉',\n", - " 877: '⌊5*(5!+55.5)⌋',\n", - " 878: '⌈5*(5!+55.5)⌉',\n", - " 879: '(⌊5!*√55⌋-(5+5))',\n", - " 880: '(5*⌈5!+55.5⌉)',\n", - " 881: '⌊5!*√⌊55-.55⌋⌋',\n", - " 882: '⌈5!*√⌊55-.55⌋⌉',\n", - " 883: '⌊⌊5!*√55⌋-5.5⌋',\n", - " 884: '⌊⌈5!*√55⌉-5.5⌋',\n", - " 885: '⌈⌈5!*√55⌉-5.5⌉',\n", - " 886: '⌈√55*(5!-.55)⌉',\n", - " 887: '(⌈(5.5**5)/5⌉-5!)',\n", - " 888: '(⌊5!*√55.5⌋-5)',\n", - " 889: '⌊5!*(55/√55)⌋',\n", - " 890: '⌈5!*(55/√55)⌉',\n", - " 891: '⌈.55+(5!*√55)⌉',\n", - " 892: '(⌊5!*√⌈55.5⌉⌋-5)',\n", - " 893: '⌊⌊5.5⌋!*√55.5⌋',\n", - " 894: '⌊5.5+⌊5!*√55⌋⌋',\n", - " 895: '(5!+(⌈5.5⌉!+55))',\n", - " 896: '⌈5.5+⌈5!*√55⌉⌉',\n", - " 897: '⌊5!*√⌈55.55⌉⌋',\n", - " 898: '⌈5!*√⌈55.55⌉⌉',\n", - " 899: '(5+⌈5!*√55.5⌉)',\n", - " 900: '(5*(5+(5!+55)))',\n", - " 901: '⌊⌈.5+5!⌉*√55.5⌋',\n", - " 902: '⌊(5-(5.5/5))**5⌋',\n", - " 903: '⌈(5-(5.5/5))**5⌉',\n", - " 904: '(5!+⌊555/√.5⌋)',\n", - " 905: '(5!+⌈555/√.5⌉)',\n", - " 906: '(⌈√5⌉*⌊5.5*55⌋)',\n", - " 907: '⌊⌈√5⌉*(5.5*55)⌋',\n", - " 908: '⌈⌈√5⌉*(5.5*55)⌉',\n", - " 909: '(⌈√5⌉*⌈5.5*55⌉)',\n", - " 910: '⌊√5*⌊55*√55⌋⌋',\n", - " 911: '⌈√5*⌊55*√55⌋⌉',\n", - " 912: '⌊√5*⌈55*√55⌉⌋',\n", - " 913: '⌈√5*⌈55*√55⌉⌉',\n", - " 914: '⌊⌊5.5**5⌋/5.5⌋',\n", - " 915: '⌊5.5**⌊5-.55⌋⌋',\n", - " 916: '⌈5.5**⌊5-.55⌋⌉',\n", - " 917: '⌈⌈√5+5!⌉*√55.5⌉',\n", - " 918: '⌊(5+5!)*√⌊55-.5⌋⌋',\n", - " 919: '⌈(5+5!)*√⌊55-.5⌋⌉',\n", - " 920: '(5+⌊5.5**⌊5-.5⌋⌋)',\n", - " 921: '(5+⌈5.5**⌊5-.5⌋⌉)',\n", - " 922: '(⌊(5+5!)*√55⌋-5)',\n", - " 923: '(55+⌊5!*(√5+5)⌋)',\n", - " 924: '(55+⌈5!*(√5+5)⌉)',\n", - " 925: '(5*(5!+(5!-55)))',\n", - " 926: '⌊⌊(5+5!)*√55⌋-.5⌋',\n", - " 927: '⌊5*(5*(5*√55))⌋',\n", - " 928: '⌈5*(5*(5*√55))⌉',\n", - " 929: '⌊5!*√⌊5+55.5⌋⌋',\n", - " 930: '(5*⌈5*(5*√55)⌉)',\n", - " 931: '⌊(5+5!)*√55.5⌋',\n", - " 932: '⌈(5+5!)*√55.5⌉',\n", - " 933: '⌊5!*√(5+55.5)⌋',\n", - " 934: '⌊5!*(√5+5.55)⌋',\n", - " 935: '(55*⌈5!/√55⌉)',\n", - " 936: '⌈(5+5!)*√⌈55.5⌉⌉',\n", - " 937: '⌊5!*√⌈5+55.5⌉⌋',\n", - " 938: '⌈5!*√⌈5+55.5⌉⌉',\n", - " 939: '(⌈5.5⌉!+⌈5!/.55⌉)',\n", - " 940: '⌈5.5/(.5**√55)⌉',\n", - " 941: '⌊√55*⌊5!+√55⌋⌋',\n", - " 942: '⌊⌊5**5.5⌋/√55⌋',\n", - " 943: '⌈⌊5**5.5⌋/√55⌉',\n", - " 944: '(55+⌊5!*√55⌋)',\n", - " 945: '(55+⌈5!*√55⌉)',\n", - " 946: '(5.5*⌊(5+5)**√5⌋)',\n", - " 947: '(⌈5**(5-√.5)⌉-55)',\n", - " 948: '⌊5.55**⌊5-.5⌋⌋',\n", - " 949: '⌈5.55**⌊5-.5⌋⌉',\n", - " 950: '(5*(5*⌈5*√55⌉))',\n", - " 951: '⌊5.5*⌈(5+5)**√5⌉⌋',\n", - " 952: '⌊5!*√⌈55+√55⌉⌋',\n", - " 953: '⌈5!*√⌈55+√55⌉⌉',\n", - " 954: '⌊(5!+555)/√.5⌋',\n", - " 955: '⌊5!*(.55+√55)⌋',\n", - " 956: '⌈5!*(.55+√55)⌉',\n", - " 957: '⌊(5**5)/(5.5-√5)⌋',\n", - " 958: '⌈(5**5)/(5.5-√5)⌉',\n", - " 959: '⌊(5!*⌈√55⌉)-.55⌋',\n", - " 960: '(5!*⌈55/√55⌉)',\n", - " 961: '⌊√⌈.5*5⌉*555⌋',\n", - " 962: '⌊5.5*(5!+55)⌋',\n", - " 963: '⌈5.5*(5!+55)⌉',\n", - " 964: '⌈(√5-.5)*555⌉',\n", - " 965: '(5*⌊5!**(5.5/5)⌋)',\n", - " 966: '⌈(5!/5.55)**√5⌉',\n", - " 967: '⌊5!*√(5+(5+55))⌋',\n", - " 968: '⌊(5+5!)*√(5+55)⌋',\n", - " 969: '((⌊5-.5⌋**5)-55)',\n", - " 970: '(5*⌈5!**(5.5/5)⌉)',\n", - " 971: '(⌈5*(5!/.55)⌉-5!)',\n", - " 972: '⌊√5*(555-5!)⌋',\n", - " 973: '⌈√5*(555-5!)⌉',\n", - " 974: '⌊5!*√⌊5!*.555⌋⌋',\n", - " 975: '((5*⌈5!/.55⌉)-5!)',\n", - " 976: '(⌈√55⌉*⌊√5*55⌋)',\n", - " 977: '⌈(5+5)*((.5*5)**5)⌉',\n", - " 978: '⌈√5*⌈(5!+5!)/.55⌉⌉',\n", - " 979: '⌊5!*(5+√⌊5+5.5⌋)⌋',\n", - " 980: '((5+5)*⌈(.5*5)**5⌉)',\n", - " 981: '((5-.5)*⌊5!/.55⌋)',\n", - " 982: '⌊5!*√⌈5!*.555⌉⌋',\n", - " 983: '⌈5!*√⌈5!*.555⌉⌉',\n", - " 984: '(⌈√55⌉*⌈√5*55⌉)',\n", - " 985: '⌊(5-.5)*⌈5!/.55⌉⌋',\n", - " 986: '⌈(5-.5)*⌈5!/.55⌉⌉',\n", - " 987: '(⌈(5**5)/⌈√5⌉⌉-55)',\n", - " 988: '⌊5!*(√5+⌈5.55⌉)⌋',\n", - " 989: '⌊5**(5!/⌈.5*55⌉)⌋',\n", + " 871: '⌊5!^√⌊.555*5⌋⌋',\n", + " 872: '⌊((55+5!)-.5)*5⌋',\n", + " 873: '⌈((55+5!)-.5)*5⌉',\n", + " 874: '⌊((55+5!)*5)-.5⌋',\n", + " 875: '(⌊55.5+5!⌋*5)',\n", + " 876: '⌈((55+5!)*5)+.5⌉',\n", + " 877: '⌊(55.5+5!)*5⌋',\n", + " 878: '⌈(55.5+5!)*5⌉',\n", + " 879: '⌊(√55*5!)-(5+5)⌋',\n", + " 880: '(⌈55.5+5!⌉*5)',\n", + " 881: '⌊√⌊55-.55⌋*5!⌋',\n", + " 882: '⌊⌊5!-.55⌋*√55⌋',\n", + " 883: '⌈⌊5!-.55⌋*√55⌉',\n", + " 884: '⌊(√55*5!)-5.5⌋',\n", + " 885: '⌊(5!-.55)*√55⌋',\n", + " 886: '⌈(5!-.55)*√55⌉',\n", + " 887: '⌈(⌈5.5^5⌉/5)-5!⌉',\n", + " 888: '⌊⌊√55*5!⌋-.55⌋',\n", + " 889: '⌊(55/√55)*5!⌋',\n", + " 890: '⌈(55/√55)*5!⌉',\n", + " 891: '⌈⌈√55*5!⌉+.55⌉',\n", + " 892: '⌈(5!^√5)/(55-5)⌉',\n", + " 893: '⌊√55.5*⌊5.5⌋!⌋',\n", + " 894: '⌊(.55+5!)*√55⌋',\n", + " 895: '⌊(√55*5!)+5.5⌋',\n", + " 896: '⌈(√55*5!)+5.5⌉',\n", + " 897: '⌊√⌈55.55⌉*5!⌋',\n", + " 898: '⌈√⌈55.55⌉*5!⌉',\n", + " 899: '⌈(√55.5*5!)+5⌉',\n", + " 900: '(((55+5)+5!)*5)',\n", + " 901: '⌊√55.5*⌈5!+.5⌉⌋',\n", + " 902: '⌊(5-(5.5/5))^5⌋',\n", + " 903: '⌈(5-(5.5/5))^5⌉',\n", + " 904: '⌊⌊55*√5⌋*√55⌋',\n", + " 905: '⌈⌊55*√5⌋*√55⌉',\n", + " 906: '(⌊55*5.5⌋*⌈√5⌉)',\n", + " 907: '⌊(55*5.5)*⌈√5⌉⌋',\n", + " 908: '⌈(55*5.5)*⌈√5⌉⌉',\n", + " 909: '(⌈55*5.5⌉*⌈√5⌉)',\n", + " 910: '⌊⌊√55*55⌋*√5⌋',\n", + " 911: '⌈⌊√55*55⌋*√5⌉',\n", + " 912: '⌊⌈55*√5⌉*√55⌋',\n", + " 913: '⌈⌈55*√5⌉*√55⌉',\n", + " 914: '⌊⌊5.5^5⌋/5.5⌋',\n", + " 915: '⌊5.5^⌊5-.55⌋⌋',\n", + " 916: '⌈5.5^⌊5-.55⌋⌉',\n", + " 917: '⌈√55.5*⌈5!+√5⌉⌉',\n", + " 918: '⌊(√5.5+5)*(5!+5)⌋',\n", + " 919: '⌊(55+5)^(5/⌈√5⌉)⌋',\n", + " 920: '⌊(5.5^⌊5-.5⌋)+5⌋',\n", + " 921: '⌊(5*.5)^√55.5⌋',\n", + " 922: '⌊(√55*(5!+5))-5⌋',\n", + " 923: '⌊((5+√5)*5!)+55⌋',\n", + " 924: '⌈((5+√5)*5!)+55⌉',\n", + " 925: '(((5!-55)+5!)*5)',\n", + " 926: '⌈⌊5^√(55*.5)⌋/5⌉',\n", + " 927: '⌊((√55*5)*5)*5⌋',\n", + " 928: '⌈((√55*5)*5)*5⌉',\n", + " 929: '⌊√⌊55.5+5⌋*5!⌋',\n", + " 930: '⌊(5.5+5!)*√55⌋',\n", + " 931: '⌈(5.5+5!)*√55⌉',\n", + " 932: '⌈√55.5*(5!+5)⌉',\n", + " 933: '⌊√(55.5+5)*5!⌋',\n", + " 934: '⌈√(55.5+5)*5!⌉',\n", + " 935: '(⌈5!/√55⌉*55)',\n", + " 936: '⌈√⌈55.5⌉*(5!+5)⌉',\n", + " 937: '⌊√⌈55.5+5⌉*5!⌋',\n", + " 938: '⌈√⌈55.5+5⌉*5!⌉',\n", + " 939: '⌊5.5/(.5^√55)⌋',\n", + " 940: '⌈5.5/(.5^√55)⌉',\n", + " 941: '⌊⌊√55+5!⌋*√55⌋',\n", + " 942: '⌊⌈5^5.5⌉/√55⌋',\n", + " 943: '⌈⌈5^5.5⌉/√55⌉',\n", + " 944: '⌊(√55*5!)+55⌋',\n", + " 945: '⌈(√55*5!)+55⌉',\n", + " 946: '⌈√((5.5+5)+5)^5⌉',\n", + " 947: '⌊((5+5)^√5)*5.5⌋',\n", + " 948: '⌊5.55^⌊5-.5⌋⌋',\n", + " 949: '⌈5.55^⌊5-.5⌋⌉',\n", + " 950: '((⌈√55*5⌉*5)*5)',\n", + " 951: '⌊⌈(5+5)^√5⌉*5.5⌋',\n", + " 952: '⌊√⌈√55+55⌉*5!⌋',\n", + " 953: '⌈√⌈√55+55⌉*5!⌉',\n", + " 954: '⌊(555+5!)/√.5⌋',\n", + " 955: '⌊(√55+.55)*5!⌋',\n", + " 956: '⌈(√55+.55)*5!⌉',\n", + " 957: '⌊(5^5)/(5.5-√5)⌋',\n", + " 958: '⌈(5^5)/(5.5-√5)⌉',\n", + " 959: '⌊(⌈√55⌉*5!)-.55⌋',\n", + " 960: '(⌈55/√55⌉*5!)',\n", + " 961: '⌊555*√⌈5*.5⌉⌋',\n", + " 962: '⌊(55+5!)*5.5⌋',\n", + " 963: '⌈(55+5!)*5.5⌉',\n", + " 964: '⌈555*(√5-.5)⌉',\n", + " 965: '⌊(5!/5.55)^√5⌋',\n", + " 966: '⌈(5!/5.55)^√5⌉',\n", + " 967: '⌊√((55+5)+5)*5!⌋',\n", + " 968: '⌊(5!^(5.5/5))*5⌋',\n", + " 969: '((⌊5-.5⌋^5)-55)',\n", + " 970: '(⌈5!^(5.5/5)⌉*5)',\n", + " 971: '⌈((5/.55)*5!)-5!⌉',\n", + " 972: '⌊(555-5!)*√5⌋',\n", + " 973: '⌈(555-5!)*√5⌉',\n", + " 974: '⌊√⌊.555*5!⌋*5!⌋',\n", + " 975: '⌈√⌊.555*5!⌋*5!⌉',\n", + " 976: '(⌊55*√5⌋*⌈√55⌉)',\n", + " 977: '⌈((5*.5)^5)*(5+5)⌉',\n", + " 978: '⌊⌈(5*√5)+5!⌉*√55⌋',\n", + " 979: '⌊(√⌊5.5+5⌋+5)*5!⌋',\n", + " 980: '(⌈(5*.5)^5⌉*(5+5))',\n", + " 981: '⌊((5-.5)/.55)*5!⌋',\n", + " 982: '⌊((5.5^5)-5!)/5⌋',\n", + " 983: '⌈((5.5^5)-5!)/5⌉',\n", + " 984: '⌈(55*⌈√55⌉)*√5⌉',\n", + " 985: '⌊⌈5!/.55⌉*(5-.5)⌋',\n", + " 986: '⌈⌈5!/.55⌉*(5-.5)⌉',\n", + " 987: '⌊√⌈5*√5⌉^5.55⌋',\n", + " 988: '⌊(⌈5.55⌉+√5)*5!⌋',\n", + " 989: '⌊5^(5!/⌈55*.5⌉)⌋',\n", " 990: '((555/.5)-5!)',\n", - " 991: '⌊5!*(5-(√5-5.5))⌋',\n", - " 992: '⌈5!*(5-(√5-5.5))⌉',\n", - " 993: '(5+⌊(5**5)/√(5+5)⌋)',\n", - " 994: '⌊5!*(5*√(5*.55))⌋',\n", - " 995: '(5!+(5*(5!+55)))',\n", - " 996: '⌊5!*√⌈.55*(5+5!)⌉⌋',\n", - " 997: '⌊5!*(5+√(55/5))⌋',\n", - " 998: '⌈5!*(5+√(55/5))⌉',\n", - " 999: '⌈⌊5**5.5⌋/⌊√55⌋⌉',\n", + " 991: '⌊((5.5-√5)+5)*5!⌋',\n", + " 992: '⌈((5.5-√5)+5)*5!⌉',\n", + " 993: '⌊((5^5)/√(5+5))+5⌋',\n", + " 994: '⌊(√(.55*5)*5!)*5⌋',\n", + " 995: '(((55+5!)*5)+5!)',\n", + " 996: '⌊√⌈(5!+5)*.55⌉*5!⌋',\n", + " 997: '⌊(√(55/5)+5)*5!⌋',\n", + " 998: '⌈(√(55/5)+5)*5!⌉',\n", + " 999: '⌈⌈5^5.5⌉/⌊√55⌋⌉',\n", " ...}" ] }, - "execution_count": 71, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2810,7 +2828,7 @@ "source": [ "clear()\n", "\n", - "%time makeable(ff)" + "%time makeable(five5s)" ] }, { @@ -2828,7 +2846,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 74, "metadata": { "button": false, "new_sheet": false, @@ -2843,13 +2861,13 @@ "23308" ] }, - "execution_count": 72, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "unmakeable(ff)" + "unmakeable(five5s)" ] }, { @@ -2876,16 +2894,16 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8), 2*(0/18)'" + "'(20*.1)+8, (2.0-1)+8, (2.0-1)*8, (-2.0+1)+8, √(20*1.8), (-2.0-1)+8, √(-2.0+18), 2.0+(1^8), 20-18, (2.0-1)^8, (2*0)*18'" ] }, - "execution_count": 80, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -2901,7 +2919,7 @@ "def littman(year, i):\n", " \"Return a string that makes i with the digits of year.\"\n", " digits = tuple(map(int, str(year)))\n", - " return unbracket(expressions(digits).get(i, '???').replace('**', '^'))\n", + " return unbracket(expressions(digits).get(i, '???'))\n", "\n", "littman_countdown(2018)" ] @@ -2917,37 +2935,28 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2011:\n", - "20/(1+1), 20-11, -2.0+(1/.1), (2.0+1)!+1, √(20-11)!, (2.0+1)!-1, 2.0*(1+1), √(20-11), 2+(0/11), 2.0/(1+1), 2*(0/11)\n", - "2012:\n", - "20/(1*2), (2.0+1)^2, 20-12, 2.0+(1/.2), 2.0*(1+2), 2.0+(1+2), 2.0*(1*2), 2.0-(1-2), 2+(0/12), -.20+1.2, 2*(0/12)\n", - "2013:\n", - "20/(-1+3), (2.0+1)*3, 2.0*(1+3), 20-13, 2.0+(1+3), 20/(1+3), 2.0-(1-3), (2.0-1)*3, 2+(0/13), (2.0+1)/3, 2*(0/13)\n", - "2014:\n", - "2.0*(1+4), (2.0+1)^√4, 2.0/(1/4), 2.0+(1+4), 20-14, 20*(1/4), 20/(1+4), -20-(1-4!), 2+(0/14), .20*(1+4), 2*(0/14)\n", - "2015:\n", - "2.0*(1*5), √(201-5!), 2.0+(1+5), 2.0+(1*5), (.20*15)!, 20-15, 20/(1*5), .20*15, 2+(0/15), 2*(0.1*5), 2*(0/15)\n", - "2016:\n", - "2*(0-(1-6)), 2.0+(1+6), 2.0*√16, 2.0-(1-6), √(20+16), 20/√16, 20-16, 2.0+(1^6), 2+(0/16), .20*(-1+6), 2*(0/16)\n", - "2017:\n", - "2.0+(1+7), 2.0+(1*7), 2.0-(1-7), (2.0-1)*7, (20-17)!, -2.0+(1*7), -2.0-(1-7), 20-17, 2+(0/17), 2.0-(1^7), 2*(0/17)\n", - "2018:\n", - "2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8), 2*(0/18)\n", - "2019:\n", - "20-(1+9), (2.0-1)*9, (2*0)-(1-9), -2.0+(1*9), -2.0-(1-9), 20/(1+√9), 2.0-(1-√9), 2.0+(1^9), 2+(0/19), 20-19, 2*(0/19)\n" + "20/(1+1), 20-11, (-.20+1)/.1, (2.0+1)!+1, √(20-11)!, (2.0+1)!-1, (2.0+1)+1, √(20-11), 2+(0*11), (2.0-1)*1, (2*0)*11 ... Happy New Year 2011!\n", + "-2.0+12, (2.0+1)^2, 20-12, 2.0+(1/.2), (2.0+1)*2, (2.0+1)+2, (20*1)*.2, (2.0-1)+2, 2+(0*12), (2.0+1)-2, (2*0)*12 ... Happy New Year 2012!\n", + "20/(-1+3), (2.0+1)*3, 2.0*(1+3), 20-13, (20*1)*.3, 20/(1+3), (2.0-1)+3, (2.0-1)*3, 2+(0*13), (2.0+1)/3, (2*0)*13 ... Happy New Year 2013!\n", + "2.0*(1+4), √((2.0+1)^4), (20*1)*.4, (2.0+1)+4, 20-14, (20*1)/4, 20/(1+4), (-20-1)+4!, 2+(0*14), .20*(1+4), (2*0)*14 ... Happy New Year 2014!\n", + "(20*1)*.5, √(201-5!), (2.0+1)+5, (20*.1)+5, (20*.15)!, 20-15, (20*1)/5, 20*.15, 2+(0*15), (.20*1)*5, (2*0)*15 ... Happy New Year 2015!\n", + "2.0*(-1+6), (2.0+1)+6, (20*.1)+6, (2.0-1)+6, √(20+16), 20/√16, 20-16, 2.0+(1^6), 2+(0*16), (2.0-1)^6, (2*0)*16 ... Happy New Year 2016!\n", + "(2.0+1)+7, (20*.1)+7, (2.0-1)+7, (2.0-1)*7, (20-17)!, (-2.0*1)+7, (-2.0-1)+7, 20-17, 2+(0*17), (2.0-1)^7, (2*0)*17 ... Happy New Year 2017!\n", + "(20*.1)+8, (2.0-1)+8, (2.0-1)*8, (-2.0+1)+8, √(20*1.8), (-2.0-1)+8, √(-2.0+18), 2.0+(1^8), 20-18, (2.0-1)^8, (2*0)*18 ... Happy New Year 2018!\n", + "20-(1+9), (2.0-1)*9, (-2.0+1)+9, (-2.0*1)+9, (-2.0-1)+9, 20/(1+√9), (2.0-1)+√9, 2.0+(1^9), 2+(0*19), 20-19, (2*0)*19 ... Happy New Year 2019!\n" ] } ], "source": [ "for y in range(2011, 2020):\n", - " print('{}:\\n{}'.format(y, littman_countdown(y)))" + " print('{} ... Happy New Year {}!'.format(littman_countdown(y), y))" ] } ],