diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..eb1b383 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,46 @@ +language: python +python: + - "3.5" + +# install jupyter +install: + - pip install jupyter +script: + - 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 diff --git a/README.md b/README.md index f55fa7c..8970458 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,12 @@ 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| |---| -|[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.*| +|[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.*| @@ -27,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.*| @@ -39,13 +40,13 @@ 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.*| |[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**| |:--------|:-------------------|----| @@ -69,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) diff --git a/data/advent2017/input1.txt b/data/advent2017/input1.txt index 8b13789..b7e8ce6 100644 --- a/data/advent2017/input1.txt +++ b/data/advent2017/input1.txt @@ -1 +1 @@ - +3294199471327195994824832197564859876682638188889768298894243832665654681412886862234525991553276578641265589959178414218389329361496673991614673626344552179413995562266818138372393213966143124914469397692587251112663217862879233226763533911128893354536353213847122251463857894159819828724827969576432191847787772732881266875469721189331882228146576832921314638221317393256471998598117289632684663355273845983933845721713497811766995367795857965222183668765517454263354111134841334631345111596131682726196574763165187889337599583345634413436165539744188866156771585647718555182529936669683581662398618765391487164715724849894563314426959348119286955144439452731762666568741612153254469131724137699832984728937865956711925592628456617133695259554548719328229938621332325125972547181236812263887375866231118312954369432937359357266467383318326239572877314765121844831126178173988799765218913178825966268816476559792947359956859989228917136267178571776316345292573489873792149646548747995389669692188457724414468727192819919448275922166321158141365237545222633688372891451842434458527698774342111482498999383831492577615154591278719656798277377363284379468757998373193231795767644654155432692988651312845433511879457921638934877557575241394363721667237778962455961493559848522582413748218971212486373232795878362964873855994697149692824917183375545192119453587398199912564474614219929345185468661129966379693813498542474732198176496694746111576925715493967296487258237854152382365579876894391815759815373319159213475555251488754279888245492373595471189191353244684697662848376529881512529221627313527441221459672786923145165989611223372241149929436247374818467481641931872972582295425936998535194423916544367799522276914445231582272368388831834437562752119325286474352863554693373718848649568451797751926315617575295381964426843625282819524747119726872193569785611959896776143539915299968276374712996485367853494734376257511273443736433464496287219615697341973131715166768916149828396454638596713572963686159214116763 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 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------|-------|---|---+ | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +-------|-----------|---------------------------|-|-|---|---|-----------|---|-----+ | | | | | | | | | | | | | +---|-----------|---------|---+ | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | +-|-|-------------------------------|-|-|-------|-|---|---------|---------------+ | +---------------|---|---------|---------------------|---+ | | | | +-+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | +---------------------------------|-|-|---|---|-|---|-|-------|-----------|-------|-----------|---|-------------|---|-----|---|---|-----|-|-------|---+ | +-+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----+ +-----+ | | | | | | | | | | | | | | | | | | +---|-+ | | | | | | +-----|-------|---------|-----------|-----+ | +---|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---------------------------|---+ | | | | | | | | | | +-------|-------|-----------|-------|---|-----------|-|---------------------|-----|-|---+ | +-------|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +---|-----------|---|-|-----|-------|---|-|-----+ | | +-|---------|---|---------|-|---|-+ | | +-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----------|-----|-------|---|---------------------------------|-------|---|-------|---------------|-----------|---+ | | | | | | | | | +-----|-+ | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---------------|-|-|---------|-----------------------------|-----|-|-------|-|---|-|---|---|-------|---------------|-------|---|-|-|---------|---+ | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | +-|---|-+ +-------------------------------+ | | | | | +-----|---|-------|---------------|-------|-------|---+ | | | +-----|-|---|-----------|-|---------------|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----------|-----|-|---|-|---|-|---+ | | | | | | | | | | | | | | +---|---|---|-|-|-+ | | | | | +---|---------|-|-----|-|---|---+ +-----|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | +---------------|---|-------|---|-|-----|---|-----------|---|-|---------|-------|-|-|---+ | | +---+ | | | | +-+ | +---|-------------+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | +-------+ +-------|-----------------------------|---+ +-|-----------|-------+ | | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---+ | | +-----|---------|---------|---------------|-------|-----|-+ | | | | | +---------|-----|-------|-------------|---------|-|-----------|-----|---+ | +-|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +---|-----+ | | | | | | | | | | | | | | | +-|---|-----|---|-----------|-------+ +-----|---|-----------------|-----|-------|-|---------------|-------|---+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | +---|---|-|-----|---+ | | | | | +---------|---|-------------------------------------|-|-------------------------|-|---+ | | | | +-------|-|-------+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | +---------|---------------|-----------|---|-------------|---------------|-----|-----------|---------+ | +-+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----|-----|---------+ | | | | +---+ | | | +-----------------------|-----------------+ | | | | | | | | | | | | | +---------|---+ +-----|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +---|-------|---|-+ | | +-------|---------------|-----------------------|---|---|-------------|-|-----------+ | | | | +-------|---|-|-+ | | +---|-----|-----------|---|---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | +-|-----------------------+ | +-----------|---------------+ | | | +-|-----|-|-------+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +-----|-----------|-------|-------|---------------|-------|-------------+ | +---+ +-|-----|-------------------|-------------|-|-----|---+ +-+ | | | | | | | +---+ +-+ | | +---+ | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | | +---+ | | | | | | | +---------------|-----|-----------------------------------------|---------+ | | | +-------|-----------+ | | | | + | | | | | | | | | | | | | | | | | | | | | | | | | | | | + | +-----------|-------|---------------|-|-----|-------------------------------------|-------------------|-----------+ | +-----+ +-----------------------+ | | | | | | + | | | | | | | | | | | | | | | | | | | | | | | | + | +---------------------------|-----|-------------------------------|-------|-----------------|-------------+ +-------------|-------------+ +-------|---+ | | | + | | | | | | | | | | | | | | | | | | | | | | + +-------------------|-----------------------|-|-----|---------------------------------------------+ +---------|---------------------------+ | | | +---|-+ | | | | | + | | | | | | | | | | | | | | | | | | | | | | + +-------+ +-+ +---------+ +-------------+ +---------|---------------------------|-----|---------------|-----------+ +---|-+ + | | | | | | | | | | + +-------------------------------------+ +-----------------+ +-----|-------------------------------+ | | + | | | | | | | | + +-------------------------------------------------------------------------------------------+ +-+ +---------------+ +-+ + 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> 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 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 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 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!>},},<>}}}}}}}} diff --git a/ipynb/Advent 2017.ipynb b/ipynb/Advent 2017.ipynb new file mode 100644 index 0000000..058f57a --- /dev/null +++ b/ipynb/Advent 2017.ipynb @@ -0,0 +1,4513 @@ +{ + "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). My terms of engagement are:\n", + "\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. (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", + "# 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", + "%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", + "import random\n", + "import time\n", + "\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", + "from numba import jit\n", + "\n", + "letters = 'abcdefghijklmnopqrstuvwxyz'\n", + "\n", + "cache = lru_cache(None)\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", + " 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 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", + " \"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.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", + " return int(token)\n", + " except ValueError:\n", + " try:\n", + " 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): \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", + " 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", + "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", + " 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 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", + " \"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 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", + " random.shuffle(new)\n", + " return new\n", + " \n", + "flatten = chain.from_iterable\n", + "\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", + "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 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, step=1):\n", + " \"The integers from start to end, inclusive: 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", + " 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", + "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): return point[0]\n", + "def Y(point): return point[1]\n", + "\n", + "origin = (0, 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", + " 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 sum(abs(p - q) for p, q in zip(P, Q))\n", + "\n", + "def distance(P, Q=origin): \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", + " \"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", + "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", + "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 (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", + " 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", + " \"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", + " 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 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})) == {\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", + " \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", + " \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", + " 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", + " 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", + "\n", + "This was easier than I remember last year's puzzles being:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2014, (3, 2, 9, 4, 1, 9, 9, 4, 7, 1))" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "digits = mapt(int, Inputstr(1))\n", + "N = len(digits)\n", + "\n", + "N, digits[:10]" + ] + }, + { + "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": [ + "# [Day 2](https://adventofcode.com/2017/day/2): Corruption Checksum\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "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", + "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 rows2)" + ] + }, + { + "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, rows2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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 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\n", + "\n", + "For today the data is just one number:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "M = 277678" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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 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", + "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):" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "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, -2)]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def spiral():\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", + " 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))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(263, -212)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nth(spiral(), M - 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": [ + "## 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!):" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def spiralsums():\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", + " 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 > M)" + ] + }, + { + "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 is_valid(line): return is_unique(line.split())\n", + "\n", + "def is_unique(items): return len(items) == len(set(items))\n", + "\n", + "quantify(Input(4), is_valid)" + ] + }, + { + "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 is_valid2(line): return is_unique(mapt(canon, line.split()))\n", + "\n", + "quantify(Input(4), is_valid2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That was easy, and I started on time, but the leaders were still three times faster than me!" + ] + }, + { + "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/program 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": [ + "program = mapt(int, Input(5))\n", + "\n", + "program[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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 no longer points to a location in memory:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "364539" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run(program):\n", + " memory = list(program)\n", + " pc = steps = 0\n", + " M = len(memory)\n", + " while 0 <= pc < M:\n", + " steps += 1\n", + " oldpc = pc\n", + " pc += memory[pc]\n", + " memory[oldpc] += 1\n", + " return steps\n", + " \n", + "run(program)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 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:" + ] + }, + { + "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": [ + "@jit\n", + "def run2(program, verbose=False):\n", + " memory = list(program)\n", + " pc = steps = 0\n", + " M = len(memory)\n", + " while 0 <= pc < M:\n", + " steps += 1\n", + " oldpc = pc\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)" + ] + }, + { + "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(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. And thanks to [Max Albert](https://github.com/maxalbert) for speeding up the loop by pulling the `len(memory)` out of the loop." + ] + }, + { + "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": { + "collapsed": true + }, + "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\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." + ] + }, + { + "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)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 7](https://adventofcode.com/2017/day/7): Recursive Circus" + ] + }, + { + "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 the two entries:\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] = set(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": {}, + "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": true + }, + "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": true + }, + "outputs": [], + "source": [ + "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", + " else:\n", + " return above[below[p]] - {p}\n", + "\n", + "below = {a: b for b in programs for a in above[b]}" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "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": {}, + "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 the sibling towers:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "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": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6828" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "program8 = 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(program8).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": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7234" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run8_2(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", + "run8_2(program8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 9](https://adventofcode.com/2017/day/9): Stream Processing\n", + "\n", + "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:" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'{{{{{{{},},{{},}},{{{{}},{{{{{}}},{}},},{{{{},{,{{{}}}}},},{{{}},{{}}}'" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text1 = re.sub(r'!.', '', Inputstr(9)) # 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 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": 38, + "metadata": {}, + "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", + " level = 0 # Level of nesting\n", + " for c in text:\n", + " if c == '{':\n", + " level += 1\n", + " total += level\n", + " elif c == '}':\n", + " level -= 1\n", + " return total\n", + "\n", + "total_score(text2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part Two\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": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5989" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(text1) - len(text2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4903" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text3 = re.sub(r'<.*?>', '<>', text1) # Delete garbage inside brackets, but not brackets\n", + "\n", + "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": true + }, + "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": true + }, + "outputs": [], + "source": [ + "# Reverse [0, 1, 2]:\n", + "assert rev(list(range(5)), 0, 3) == [2, 1, 0, 3, 4]" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Reverse [4, 0, 1], wrapping around:\n", + "assert rev(list(range(5)), 4, 3) == [0, 4, 2, 3, 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "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" + ] + } + ], + "source": [ + "# Duplicate the example output\n", + "assert knothash((3, 4, 1, 5), N=5, verbose=True) == 12" + ] + }, + { + "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": {}, + "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": {}, + "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", + "assert hexstr([255, 0, 17]) == 'ff0011'\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]`](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:" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "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. 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." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "705" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = Vector(Inputstr(11))\n", + "\n", + "def follow(path):\n", + " \"Follow each step of the path; return final distance to origin.\"\n", + " pos = origin\n", + " for dir in path:\n", + " pos = add(pos, headings6[dir])\n", + " return king_distance(pos)\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": {}, + "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 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)" + ] + }, + { + "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_programs}`:" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true + }, + "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", + "assert groups(Input(12))[0] == {0, 659, 737}" + ] + }, + { + "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": true + }, + "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": {}, + "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 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": {}, + "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": true + }, + "outputs": [], + "source": [ + "def trip_severity(scanners): \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", + "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": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((0, 3), (1, 2), (2, 4), (4, 6), (6, 4))" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scanners = mapt(Integers, Input(13))\n", + "scanners[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1504" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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`: " + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3823370" + ] + }, + "execution_count": 58, + "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": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "key = 'ljoxqyyw'" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8316" + ] + }, + "execution_count": 60, + "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": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def Grid(key, N=128+2):\n", + " \"Make a grid, with a border around it.\"\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]" + ] + }, + { + "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": 62, + "metadata": { + "collapsed": true + }, + "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": 63, + "metadata": { + "collapsed": true + }, + "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": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1074" + ] + }, + "execution_count": 64, + "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", + "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": 65, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 15 s, sys: 30.7 ms, total: 15 s\n", + "Wall time: 15.1 s\n" + ] + }, + { + "data": { + "text/plain": [ + "597" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "@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, 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(), 40*10**6)" + ] + }, + { + "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;" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 9.71 s, sys: 7.49 ms, total: 9.72 s\n", + "Wall time: 9.72 s\n" + ] + }, + { + "data": { + "text/plain": [ + "303" + ] + }, + "execution_count": 66, + "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", + "%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": {}, + "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": 68, + "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": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dance = Vector(Inputstr(16))\n", + "dance[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10000" + ] + }, + "execution_count": 69, + "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": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'lbdiomkhgcjanefp'" + ] + }, + "execution_count": 70, + "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": 71, + "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\n", + " seen[d] = i" + ] + }, + { + "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": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "48" + ] + }, + "execution_count": 72, + "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": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ejkflpgnamhdcboi'" + ] + }, + "execution_count": 73, + "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": {}, + "source": [ + "\n", + "# [Day 17](https://adventofcode.com/2017/day/17): Spinlock\n", + "\n", + "This one looks pretty easy:" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "355" + ] + }, + "execution_count": 74, + "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 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):" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": true + }, + "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": 76, + "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": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "355" + ] + }, + "execution_count": 77, + "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": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "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 0x10daae390>" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%time spinlock2(N=100000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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", + "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": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 5.53 s, sys: 4.42 ms, total: 5.53 s\n", + "Wall time: 5.53 s\n" + ] + }, + { + "data": { + "text/plain": [ + "6154117" + ] + }, + "execution_count": 79, + "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 \"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." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 18](https://adventofcode.com/2017/day/17): Duet\n", + "\n", + "First, read the input, and take a peak at it:" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(('set', 'i', 31),\n", + " ('set', 'a', 1),\n", + " ('mul', 'p', 17),\n", + " ('jgz', 'p', 'p'),\n", + " ('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": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "program18 = Array(Input(18))\n", + "program18[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now write an interpreter for the assembly language:" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7071" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def run18(program):\n", + " \"Interpret the assembly language program; return recovered `snd`.\"\n", + " regs = defaultdict(int)\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': 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: return snd\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: 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", + "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. " + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "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(id=id, pc=0, sends=0, regs=defaultdict(int, p=id), status='run')\n", + " for id in (0, 1)]\n", + " while any(p.status == 'run' for p in ps):\n", + " step18(program, Qs, random.choice(ps))\n", + " return ps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`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 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." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8001" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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': 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 Qs[p.id]:\n", + " p.status = 'wait'\n", + " return # don't update pc; try again next time\n", + " else:\n", + " p.regs[x] = Qs[p.id].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 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": 84, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "diagram = Inputstr(19)\n", + "\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 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", + " \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 grid[y+dy][x+dx] not in (' ', '.'):\n", + " return dx, dy" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'VEBTPXCHLI'" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cat(filter(str.isalpha, follow_tubes(diagram)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's the right answer.\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: " + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "18702" + ] + }, + "execution_count": 86, + "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`). 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." + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "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": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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", + "\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 updates.\" " + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "243" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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 r: sum(map(abs, r.p)))\n", + "\n", + "# Answer: the id of the particle closest to origin after 1000 updates\n", + "closest(repeat(1000, update, particles())).id" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 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:" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "648" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def remove_collisions(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: 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." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# [Day 21](https://adventofcode.com/2017/day/21): Fractal Art\n", + "\n", + "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": 90, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def Enhancements(lines):\n", + " \"Create a dict of {grid: enhanced_grid}; include all rotations/flips.\"\n", + " enhancements = {}\n", + " for line in lines:\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 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 text.split('/'))\n", + " \n", + "def rotate(subgrid): \n", + " \"Rotate a subgrid 90 degrees clockwise.\"\n", + " return tuple(zip(*reversed(subgrid)))\n", + "\n", + "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 some assertions, and then look at all the 2x2 enhancement rulesfrom my input file; with rotations and flips there should be 24 = 16 entries:" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "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": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "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", + "##/.. => #.#/.#./.#.\n", + ".#/#. => ##./##./...\n", + "##/#. => .##/###/#..\n", + "##/## => .##/#../##.\n", + "'''.strip().splitlines())" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "assert len(_) == 2 ** 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks good; let's create the complete `enhancements` for my data. There should be 24 + 29 = 528 entries:" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "collapsed": true + }, + "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 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": 94, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def enhance(grid): \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", + " \"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", + " for c in range(0, N, d)]\n", + " for r in range(0, N, d)]\n", + "\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(getpixel(pieces, r, c) \n", + " for c in range(N))\n", + " for r in range(N))\n", + "\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", + " piece = pieces[r // d][c // d]\n", + " return piece[r % d][c % d]" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 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" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((0, 1, 0), (0, 0, 1), (1, 1, 1))" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# An extended test \n", + "grid = Pixels('.#./..#/###')\n", + "grid" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[((0, 1, 0), (0, 0, 1), (1, 1, 1))]]" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "divide_grid(_)" + ] + }, + { + "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": [ + "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": { + "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": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stitch_grid(_)" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(flatten(_))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That looks right; Let's try to solve the whole puzzle:" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "147" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(flatten(repeat(5, enhance, grid)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's correct!\n", + "\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", + "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:" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 5.2 s, sys: 80.6 ms, total: 5.28 s\n", + "Wall time: 5.28 s\n" + ] + }, + { + "data": { + "text/plain": [ + "1936582" + ] + }, + "execution_count": 105, + "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": 106, + "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", + " 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", + " if node == '#'})" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Net(current=(1, 1), heading=(0, -1), caused=0, infected={(0, 1), (2, 0)})" + ] + }, + "execution_count": 107, + "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": 108, + "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": 109, + "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": 109, + "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": 110, + "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": 110, + "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 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": 111, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5460" + ] + }, + "execution_count": 111, + "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). 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": { + "collapsed": true + }, + "outputs": [], + "source": [ + "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": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 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'`. 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": { + "text/plain": [ + "9409" + ] + }, + "execution_count": 115, + "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": 116, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 939 ms, sys: 2.89 ms, total: 942 ms\n", + "Wall time: 940 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "913" + ] + }, + "execution_count": 116, + "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.\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: [components_with_that_port]}`. I also define two simple utility functions:" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": { + "collapsed": true + }, + "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": 118, + "metadata": { + "collapsed": true + }, + "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": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.32 s, sys: 2.56 ms, total: 2.32 s\n", + "Wall time: 2.32 s\n" + ] + }, + { + "data": { + "text/plain": [ + "1695" + ] + }, + "execution_count": 119, + "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": 120, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.39 s, sys: 1.44 ms, total: 2.39 s\n", + "Wall time: 2.39 s\n" + ] + }, + { + "data": { + "text/plain": [ + "1673" + ] + }, + "execution_count": 120, + "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": 121, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 638 ms, sys: 3.98 ms, total: 642 ms\n", + "Wall time: 642 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "1695" + ] + }, + "execution_count": 121, + "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 restore 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` by hand:" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "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 {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": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4769" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "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", + " 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(), 'A', 12667664).values())" + ] + }, + { + "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", + "Here are my answers:\n", + "\n", + "\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 (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 (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 (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", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Verification and Run Times\n", + "\n", + "A little test harness and a report on all the run times that are over 5 seconds per day:" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "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" + ] + } + ], + "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: 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", + " 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", + " 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", + " strength(max(chains(), key=length_and_strength)) == 1673,\n", + " 25: lambda: sum(turing(machine(), 'A', 12667664).values()) == 4769\n", + "})" + ] + }, + { + "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 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": 132, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAhARERExU/4fVvCSb2uTD9sAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_times(times):\n", + " 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", + " plt.legend(loc='upper left')\n", + "\n", + "plot_times([\n", + " ('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 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", + "- \"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.\"" + ] + } + ], + "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 +} diff --git a/ipynb/Advent of Code.ipynb b/ipynb/Advent of Code.ipynb index 7af2248..a7d67cf 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", @@ -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", 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": { 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", 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/Countdown.ipynb b/ipynb/Countdown.ipynb index bf97dd4..bfb69cf 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", @@ -346,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." ] }, { @@ -354,6 +359,7 @@ "execution_count": 7, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -375,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", @@ -426,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", @@ -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 29.5 s, sys: 698 ms, total: 30.2 s\n", + "Wall time: 30.2 s\n" ] }, { @@ -534,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:" ] }, { @@ -563,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": { @@ -581,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", @@ -592,14 +639,15 @@ "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, "new_sheet": false, "run_control": { "read_only": false @@ -620,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", @@ -637,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "button": false, "new_sheet": false, @@ -661,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", @@ -673,7 +721,7 @@ " 720: '((10*9)*8)'}" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -685,7 +733,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "button": false, "new_sheet": false, @@ -709,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", @@ -721,7 +769,7 @@ " 720: 2})" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -732,7 +780,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "button": false, "new_sheet": false, @@ -747,7 +795,7 @@ "2" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -771,7 +819,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "button": false, "new_sheet": false, @@ -784,8 +832,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 5s\n", + "Wall time: 1min 6s\n" ] }, { @@ -794,7 +842,7 @@ "'(((((((10+((9*8)*7))-6)-5)*4)+3)+2)-1)'" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -822,7 +870,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "button": false, "new_sheet": false, @@ -837,7 +885,7 @@ "30066" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -860,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:" ] }, { @@ -903,7 +929,7 @@ { "data": { "text/plain": [ - "False" + "2015.9999999999998" ] }, "execution_count": 19, @@ -911,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" ] @@ -925,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, @@ -949,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", @@ -957,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}" ] }, { @@ -979,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 == 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}" ] }, { @@ -1045,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 25s, sys: 1.44 s, total: 12min 26s\n", - "Wall time: 12min 27s\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())" ] }, { @@ -1091,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()" ] }, { @@ -1104,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 was expanded to use 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`." @@ -1120,9 +1148,10 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 62, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1142,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", @@ -1174,7 +1203,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 64, "metadata": { "button": false, "new_sheet": false, @@ -1186,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" } @@ -1215,9 +1244,10 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1250,7 +1280,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 65, "metadata": { "button": false, "new_sheet": false, @@ -1274,7 +1304,7 @@ " 9: '(((4/4)+4)+4)'}" ] }, - "execution_count": 26, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -1300,7 +1330,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 67, "metadata": { "button": false, "new_sheet": false, @@ -1317,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", @@ -1327,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)" ] }, { @@ -1352,25 +1384,25 @@ "\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!` 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", - "- `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": 68, "metadata": { "button": false, "new_sheet": false, @@ -1391,31 +1423,35 @@ " 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", - " 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", + " 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 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", - " 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", + " if 3 <= v <= 6 and v == int(v):\n", " expr(numbers, factorial(v), exp + '!')" ] }, @@ -1429,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 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 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": 29, + "execution_count": 69, "metadata": { "button": false, - "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1446,10 +1481,14 @@ "outputs": [], "source": [ "def expr(numbers, value, exp): \n", - " if value not in EXPS[numbers] or weight(exp) < weight(EXPS[numbers][value]):\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('√')" + "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)" ] }, { @@ -1467,7 +1506,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 70, "metadata": { "button": false, "new_sheet": false, @@ -1480,173 +1519,173 @@ "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 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", + "{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", - " 8: '(.5*(5+(55/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.5/(5.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.5+5.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+55.5))',\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+5.5)/(.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: '(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", + " 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+(55.5-5))',\n", - " 52: '(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", - " 61: '(5.5+55.5)',\n", + " 51: '((55+(5/5))-5)',\n", + " 52: '(((5.5+5)*5)-.5)',\n", + " 53: '(55-((5+5)/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+55.5))',\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", + " 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.5+5.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+(55/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: '(5!+(5.5+5.5))',\n", - " 132: '(5!*(.55+.55))',\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": 30, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -1654,7 +1693,7 @@ "source": [ "clear()\n", "\n", - "%time makeable(ff)" + "%time makeable(five5s)" ] }, { @@ -1667,7 +1706,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! (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) = √(9/4) = 3/2." ] }, { @@ -1682,7 +1723,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", @@ -1697,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": 31, + "execution_count": 72, "metadata": { "button": false, "collapsed": true, @@ -1716,15 +1756,20 @@ "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", + " 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 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", @@ -1747,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": 32, + "execution_count": 73, "metadata": { "button": false, "new_sheet": false, @@ -1765,1017 +1810,1017 @@ "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 24min 17s, sys: 3.22 s, total: 24min 21s\n", + "Wall time: 24min 23s\n" ] }, { "data": { "text/plain": [ - "{0: '⌊.55555⌋',\n", - " 1: '⌈.55555⌉',\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: '⌈√55+.555⌉',\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: '⌈√5*5.555⌉',\n", - " 14: '⌈√55/.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", + " 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: '(⌊555/5!⌋*5)',\n", " 21: '⌊5!/5.555⌋',\n", " 22: '⌈5!/5.555⌉',\n", " 23: '⌈555/(5*5)⌉',\n", " 24: '⌊5-.5555⌋!',\n", - " 25: '(5*⌊5.555⌋)',\n", - " 26: '(⌈.55*55⌉-5)',\n", - " 27: '⌊5*5.555⌋',\n", - " 28: '⌈5*5.555⌉',\n", - " 29: '(5+⌊5-.555⌋!)',\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", - " 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", - " 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.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", - " 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: '⌊5!*.5555⌋',\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.55/√.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+(55+(5*5)))',\n", - " 86: '⌊⌈5+55.5⌉/√.5⌋',\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: '⌊.55*(5!+55)⌋',\n", - " 97: '⌈.55*(5!+55)⌉',\n", - " 98: '(⌊55-5.5⌋/.5)',\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: '⌊⌊√5+55⌋/.55⌋',\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!-5.555⌉',\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*55.55⌋',\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*55.5⌋',\n", - " 131: '⌈√5.5*55.5⌉',\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", - " 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: '⌊55*(√5+.55)⌋',\n", - " 154: '(5.5*⌈.5*55⌉)',\n", - " 155: '(5*⌈.55*55⌉)',\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: '(⌊.5*555⌋-5!)',\n", - " 158: '(⌈.5*555⌉-5!)',\n", - " 159: '(5!+⌊√.5*55.5⌋)',\n", - " 160: '(5*(5+⌊.5*55⌋))',\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⌉*55.5⌋',\n", - " 167: '⌈⌈.5*5⌉*55.5⌉',\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: '⌈555.5/⌈√5⌉⌉',\n", - " 187: '(5!+⌈5!*.555⌉)',\n", - " 188: '((⌈.5*5⌉**5)-55)',\n", - " 189: '(⌊√55⌋*⌊.5*55⌋)',\n", - " 190: '(5*⌈5*√55.5⌉)',\n", - " 191: '⌈55*√⌊5+√55⌋⌉',\n", - " 192: '(⌈5.55⌉/(.5**5))',\n", - " 193: '⌊5!**(.55+.55)⌋',\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: '(.5*⌊√.5*555⌋)',\n", - " 197: '⌈.5*⌈√.5*555⌉⌉',\n", + " 196: '⌊555/√⌈5+√5⌉⌋',\n", + " 197: '⌊((55*5)+5!)*.5⌋',\n", " 198: '(⌊55/.55⌋/.5)',\n", - " 199: '⌊55/(.5*.55)⌋',\n", - " 200: '(⌈55/.55⌉/.5)',\n", + " 199: '⌊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", - " 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.5⌉/.55⌉',\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!/.555⌋-.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+5!)/.555⌋',\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!+√55)/.55⌉',\n", - " 233: '⌈⌈5!+√55⌉/.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!+.555⌉/.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", + " 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: '(⌊55*√5.5⌋/.5)',\n", - " 257: '⌊55/(.5/√5.5)⌋',\n", - " 258: '(⌈55*√5.5⌉/.5)',\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", - " 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+55.5⌋)',\n", - " 286: '(5.5*⌊55-√5⌋)',\n", - " 287: '(555-⌊√5*5!⌋)',\n", - " 288: '(⌈55*√55⌉-5!)',\n", - " 289: '⌈55*√(.5*55)⌉',\n", - " 290: '(5*⌈√5+55.5⌉)',\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*(55-.5)⌋',\n", - " 300: '(5*⌊5+55.5⌋)',\n", - " 301: '⌊⌊5.5*55⌋-.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", - " 315: '(5*⌈55+√55⌉)',\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!-55.5⌉)',\n", - " 326: '⌈(5!/55)**√55⌉',\n", - " 327: '(⌈5.5⌉*(55-.5))',\n", - " 328: '⌈.5*(55+(5*5!))⌉',\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: '⌊√⌊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: '⌈.5+(55*⌈5.5⌉)⌉',\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: '⌊55*√⌈5*√55⌉⌋',\n", - " 340: '⌈55*√⌈5*√55⌉⌉',\n", - " 341: '⌊55*(√.5+5.5)⌋',\n", - " 342: '⌈55*(√.5+5.5)⌉',\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", - " 349: '(⌊(5-.55)**5⌋/5)',\n", - " 350: '(⌊5!+55.5⌋/.5)',\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", - " 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+⌈5.55⌉!)⌋',\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", - " 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", - " 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: '⌊(55*⌊√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", - " 392: '⌊√.5*555.5⌋',\n", - " 393: '⌈√.5*555.5⌉',\n", - " 394: '⌈√.5*⌈555.5⌉⌉',\n", - " 395: '⌊√.5*(5+555)⌋',\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", - " 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*√⌊55.5⌋⌋',\n", - " 408: '⌈55*√⌊55.5⌋⌉',\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", - " 415: '⌊√55*⌈55.5⌉⌋',\n", - " 416: '⌈√55*⌈55.5⌉⌉',\n", - " 417: '⌊5*(5**(5*.55))⌋',\n", - " 418: '⌊55*√⌈√5+55⌉⌋',\n", - " 419: '⌊(5**5)/√55.5⌋',\n", - " 420: '⌊⌈5*.55⌉**5.5⌋',\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", - " 426: '⌊55*√(5+55)⌋',\n", - " 427: '⌈55*√(5+55)⌉',\n", - " 428: '⌊⌈5.5*55⌉/√.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", + " 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+(⌈√55⌉*55)⌉',\n", - " 442: '(5+⌈5!/(.5*.55)⌉)',\n", - " 443: '⌊55*√(5!-55)⌋',\n", - " 444: '(⌈√55⌉*55.5)',\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", - " 451: '⌊5!*(⌈5.55⌉-√5)⌋',\n", - " 452: '⌊55*(√5+⌈5.5⌉)⌋',\n", - " 453: '⌈55*(√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", - " 459: '⌊555/(.5+√.5)⌋',\n", - " 460: '⌈555/(.5+√.5)⌉',\n", - " 461: '⌈55*√⌊√5.5**5⌋⌉',\n", - " 462: '(5.5*⌈√5**5.5⌉)',\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**(5-√5)⌉)',\n", - " 474: '(5!*(5-(.5+.55)))',\n", - " 475: '((5!*⌊5-.55⌋)-5)',\n", - " 476: '(55+⌈⌈√5⌉**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", - " 482: '⌊√55*(5!-55)⌋',\n", - " 483: '⌈√55*(5!-55)⌉',\n", - " 484: '⌈(√5*5!)/.555⌉',\n", - " 485: '⌊√5*⌈5!/.555⌉⌋',\n", - " 486: '⌈√5*⌈5!/.555⌉⌉',\n", - " 487: '⌊5!/(.55**√5.5)⌋',\n", - " 488: '⌊.55*⌊5!*√55⌋⌋',\n", - " 489: '⌊.55*⌈5!*√55⌉⌋',\n", - " 490: '⌈.55*⌈5!*√55⌉⌉',\n", - " 491: '⌈5!*((5/.55)-5)⌉',\n", - " 492: '(⌊5-.5⌋*⌈√5*55⌉)',\n", - " 493: '⌈(⌊5/.55⌋**5)/5!⌉',\n", - " 494: '(⌊55*(5-.5)⌋/.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!-√55)⌋',\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", - " 512: '(5!+⌊√.5*555⌋)',\n", - " 513: '(5!+⌈√.5*555⌉)',\n", - " 514: '⌈√5.5*⌈5!/.55⌉⌉',\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!*(5!/55)⌉/.5)',\n", - " 525: '(5*((55/.5)-5))',\n", - " 526: '(⌊5*(55-√5)⌋/.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: '(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", - " 539: '(5+(5!*(5-.55)))',\n", - " 540: '((5+5)*⌊55-.5⌋)',\n", - " 541: '⌈.55+(5!*(5-.5))⌉',\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", + " 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", - " 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: '⌊√55*⌊55/√.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", - " 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", - " 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-.555⌋!⌉',\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*⌊5.555⌋!)',\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", - " 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+⌈√5*55⌉)⌋',\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", - " 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!+√55.5⌋)',\n", - " 636: '(((5**5)+55)/5)',\n", - " 637: '⌊5*(5!+√55.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", - " 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", - " 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: '⌊(5!*5.5)-√55⌋',\n", - " 653: '⌊(5!-√5)*5.55⌋',\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", - " 659: '⌊(5!*5.5)-.55⌋',\n", - " 660: '(5.5*⌊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!+5.5⌋⌋',\n", - " 688: '⌈5.5*⌊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+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*√55)**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⌉**⌈5.555⌉)',\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*√55.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*55⌋)',\n", - " 748: '(⌈5.5⌉!+⌈.5*55⌉)',\n", - " 749: '⌈5!*(√5+⌊5-.55⌋)⌉',\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.5⌉*(5!+√55)⌋',\n", - " 765: '(5*⌈55*(5-√5)⌉)',\n", - " 766: '⌈(⌈√5⌉**5.5)/.55⌉',\n", - " 767: '⌈((5*5)-5.5)**√5⌉',\n", - " 768: '⌊√⌈5.55⌉**√55⌋',\n", - " 769: '⌊55**√(5*.55)⌋',\n", - " 770: '(55*⌊√55/.5⌋)',\n", - " 771: '⌈(5*5.55)**⌊√5⌋⌉',\n", - " 772: '(55+⌊⌈5.5⌉!-√5⌋)',\n", - " 773: '(⌊5!*√55.5⌋-5!)',\n", - " 774: '(55+⌊⌈5.5⌉!-.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: '(⌈555/√.5⌉-5)',\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: '⌈555.5/√.5⌉',\n", - " 787: '⌈⌈555.5⌉/√.5⌉',\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+√(5*.55))⌉',\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", - " 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-.55)**(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: '⌊(5.5**5)/⌈5.5⌉⌋',\n", - " 839: '⌈(5.5**5)/⌈5.5⌉⌉',\n", - " 840: '(5!+⌈5.555⌉!)',\n", - " 841: '(5!+⌈.5+⌈5.55⌉!⌉)',\n", - " 842: '(⌈5.5⌉!+⌊√5*55⌋)',\n", - " 843: '(⌈5.5⌉!+⌈√5*55⌉)',\n", - " 844: '⌊5!*√(55-5.5)⌋',\n", - " 845: '⌊√55*⌊5!-5.5⌋⌋',\n", - " 846: '⌈√55*⌊5!-5.5⌋⌉',\n", - " 847: '(⌊√55⌋*⌈5!+.55⌉)',\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!-5)*√55.5⌋',\n", - " 857: '⌈(5!-5)*√55.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", + " 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*⌈√.5*555⌉⌉',\n", - " 880: '(5*⌈5!+55.5⌉)',\n", - " 881: '⌊5!*√⌊55-.55⌋⌋',\n", - " 882: '⌊√55*⌊5!-.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", - " 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*⌈5.5**⌈√5⌉⌉⌋',\n", - " 919: '⌈5.5*⌈5.5**⌈√5⌉⌉⌉',\n", - " 920: '(5+⌊5.5**⌊5-.5⌋⌋)',\n", - " 921: '⌊(.5*5)**√55.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", - " 926: '⌊⌊(5+5!)*√55⌋-.5⌋',\n", - " 927: '⌊√55*⌊5!+5.5⌋⌋',\n", - " 928: '⌈√55*⌊5!+5.5⌋⌉',\n", - " 929: '⌊5!*√⌊5+55.5⌋⌋',\n", - " 930: '⌈5!*√⌊5+55.5⌋⌉',\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", - " 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⌉)*555⌋',\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+√⌈55.5⌉)⌋',\n", - " 958: '⌈5!*(.5+√⌈55.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", - " 966: '⌈(5!/5.55)**√5⌉',\n", - " 967: '⌊5!*√⌈5!-55.5⌉⌋',\n", - " 968: '⌈5!*√⌈5!-55.5⌉⌉',\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", - " 976: '(⌈√55⌉*⌊√5*55⌋)',\n", - " 977: '⌈(5+5)*((.5*5)**5)⌉',\n", - " 978: '⌊5!*(√.5+√55.5)⌋',\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.55⌋⌉',\n", - " 994: '⌊5!*(5*√(5*.55))⌋',\n", - " 995: '(⌈5.5⌉!+(5*55))',\n", - " 996: '⌊⌈5**(5-√.5)⌉-5.5⌋',\n", - " 997: '⌊5!*(5+√(55/5))⌋',\n", - " 998: '⌊⌊5**5.5⌋/⌊√55⌋⌋',\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": 32, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2783,7 +2828,7 @@ "source": [ "clear()\n", "\n", - "%time makeable(ff)" + "%time makeable(five5s)" ] }, { @@ -2801,7 +2846,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 74, "metadata": { "button": false, "new_sheet": false, @@ -2816,13 +2861,13 @@ "23308" ] }, - "execution_count": 33, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "unmakeable(ff)" + "unmakeable(five5s)" ] }, { @@ -2835,11 +2880,83 @@ } }, "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": [ + "'(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": 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, -1, -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, '???'))\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": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "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('{} ... Happy New Year {}!'.format(littman_countdown(y), y))" ] } ], diff --git a/ipynb/Gesture Typing.ipynb b/ipynb/Gesture Typing.ipynb index 05f676e..9334a3b 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", @@ -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)." ] }, { @@ -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": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEKCAYAAAAW8vJGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFAhJREFUeJzt3Xm0ZWV95vHvA4hMMqNBEBIjxESMUitRA22IGDoBshQ0\nGDEGE7WjS03oYGI7tBN2HIJjG6TRGJflIiC2gnaiaTthMQTUGAu1gKSxDGEQ7KBVYlkIUvDrP/a+\nuN9jVXmLOvvcob6fte66Z7r7efe555zn7HefIVWFJElzdljoAUiSFheLQZLUsBgkSQ2LQZLUsBgk\nSQ2LQZLUsBikTUjyvCRXbMXlb0hy7Jhj2kzuoUnuS+J9WVPjjUkLpn9Ae+QiGMfmHlwX3Zt8NlNA\no48zyduS3JTkjn4Mr9zCZU9IckWSdUluTfL+JLuPPUZNj8WgmUuyY39wsTzwhm4sWeiBLGIfBH6u\nqvYCjgKem+SkzVx2T+BNwIHAzwIHA2fNZJSaCotBJDkyyZf6Z4MXJDk/yZn9eZcmObk/fHT/zPr4\n/vixSa4eLOf5Sa5L8u0kn0lyyOC8+5K8JMn1wPVJLqN7IP5qku8meVaS1UlOHPzNTkluT/K4eazD\nMUluTvKq/m/+NclzBuefkGRVv443Jnn94M8v639/px/LE3/4ZzkrydokX0/y6/O8PpPklUnW9GO5\nIMne/XlzWyen9eP49ySvHvztLkk+3Gdem+RPktzcn7cSOAT4X/04/3juz+geqH9kedNSVddX1ff6\nozsA9wGP2sxlL6iqz1bVXVV1B/AB4Ohpj0njsRi2c0keBFwEfBjYF/gY8MzBRS4DfqU//MvA1/vf\nAMcAl/bLeTrwSuAk4ADgCuD8ibinA0+ge+Z5TH/aY6tqz6q6sB/D7wwufyJwa1V9pc/4SpJnb2F1\nfqJfh4cDvwu8P8lh/XnfA36nf8Z7IvDiJE8brBfAnv1YvtAffyLwz8B+dM94P7iF7KE/BJ4GPLkf\nyzrgfROXORo4DPhV4HVJfqY//Q10D/4/CRwHPJd+y6qqTgNuAn6jH+fb57G8RpL/0k/xrO1/Dw+v\n3dJK9X+7HrgZ2A34qx9/VQDd7eTaeV5Wi0FV+bMd/9A9eN0ycdqVwJn94WOBL/eHPwM8H7iqP34p\ncFJ/+NPA7w2WsQOwAXhEf/w+4JiJnPuARw6OHwjcAezRH/8Y8MfzXI9jgB8AuwxO+yjwms1c/l3A\nO/rDhwL3AjsMzn8ecP3g+K79ZR66meXdABzbH74OeMrEev2gv07msg4cnP8F4Fn94a8Dvzo47wXA\nTZvKmRj7Jpc30m3mccDrgd3ncdnjgG8DP73Qt3V/5v/jFoMeDnxj4rQbB4c/Bxye5KF0DwgrgUck\n2Y/u2f/cNMyhwHv6Z59r6R4MCjhosKxbtjSQqrqNrpSemWQv4HjgvK1Yl3VVddfEejwcIMkTk1zS\nT7V8B3gRsP+PWd43B2P7Pt2UzR7zGMehwEWD6+I64B7gYYPL/L/B4TsHy3047fV08zzytrS8qatu\nC+4u4MwtXS7Jk+j+f8+sqq+PNR5Nn8Wg22gfvKGbygDuf0D8EnA6cE1VbaQrizOANVW1rr/oTcCL\nqmrf/mefqtqjqj4/WO58djavpJtOOoVuy+S2rViXfZLsOrEet/aHzwMuBg6qqr2Bc/nhzuZp7wS/\nCTh+4rrYfZ7rchvdzto5h0ycv01j7ffBrO/3UQx/1if57lYsaidgs68oS3Ik3fX9u1V16baMWbNn\nMehzwMYkf9Dv7H0G3ZbA0OXAy/jh1sGlE8ehe6B9dZKfA0iyV5Lf/DHZ3+RHH1wuBlbQzdOv3Mp1\nCfDGJA9K8mS6fQkX9uftQbdFcU+SJwDPGfzd7XTTWj+9lXmbcy7w5rmd70kOGOzPmBvn5lwIvCrJ\n3kkOAl46cf6mrrN5v5qqqt5SVQ+pbh/F8OchVbXnpv6m35n++4Md6E/ox/V3m7n8EXTTjn9QVZ+e\n79i0eFgM27mqugd4BvB7dNM/pwAfn7jYZXQPrJdPHL+/GKrqYuCtwAX9VM1XgeGreDb1TPcNwMp+\nyuU3++Xc1ef/FPCJ4YWTXJPk1C2szm10O3pvBT5CtwXztf68lwBvSnIH8F/p9j/Mjf37wJ8CV/Zj\nmSzGLa3Dps57D/BJ4LN93lW0ZTu5nOHxM+mm9m4APku3n+XuwflvBV7bj/OMeSxvWk4G1vRbFSuB\n91TV2XNn9lscc688OoNumu6D/enrk6weYUwaSaoWy0vJtVgk+RBwc1W9boHyXwscVt2rcOb7N8cA\nH6mqyamXJS3Ji4HfqqqnLPRYtP1wi0GLSpJ96V6Jc+5Cj2UhJPmJJEf10zc/A7yciS0naWwWgzZl\nQTYjk7yQbsft31TVlQsxhkVgZ7pS/C7dHP5FwDkLOiJtd5xKkiQ13GKQJDUsBklSw2KQJDUsBklS\nw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQ\nJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUs\nBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklS\nw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQ\nJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUsBklSw2KQJDUs\nBklSw2KQJDUsBklSw2KQJDUsBklSY6eFHsD2JslaYJ8ZxRUQsxZ9jllLK2uW67SuqvadUdb9UlWz\nztyuJamqmsmNyqylkWPW0spajus0yakkSVLDYpAkNSwGSVLDYpAkNSwGSVLDYpAkNSwGSVLDYljk\nkhyU5OIk1ydZk+S/J3nQlDPemeQPB8f/Nsn7B8ffnuQ/TzHv3iSrklzd/37FtJa9hazVST6ZZM8R\nMvYdrMttSW4ZHJ/6m0iTXJHk1wfHT0ny6Wnn9Ms+NMnqidNen+SMEbLWT3uZW8ga3q++luRdI/2v\nhre/jybZZdoZY7AYFr9PAJ+oqsOBw4DdgLOmnHElcBRAkgD7A48ZnH8UcNUU8zZU1YqqOrL//WdT\nXPbmsh4LrANeOu2Aqlo7ty7AOcA7B+u2cdp5wIuBdybZOckewJ8CLxkhZ86s3gU7y3fbDu9XhwMP\nAd48Qs7w9ncP3f9u0bMYFrEkxwLfr6qVANW9Tf2PgNOS7DbFqKvoi4GuEK4B1ifZK8nOwKOBVVPM\nm/k7OXufAw4aOWP0dauqa4FPAa8EXgt8uKr+bezc5WIL96vnj/yM/grgUSMuf2r8rKTF7THAl4Yn\nVNX6JDfQ3cC+Oo2QqrotyT1JDuaHWwcHAb8EfBdYPeVnvrsmWUX3IFrAW6rqY1Nc/lAAkuwIPBX4\ni5FyZu1MurK+G/iFBR7LUrO5+9WNdPera6aYNXf72wk4HvjMFJc9GothaRrjWelVwNF0xfAO4OD+\n+B10U03TdGc/7TILcyV0MHAd8H9mlDuqqrozyUeB9VV1z5hRW3n6UjbG/Wru9gfdFsMHR8iYOqeS\nFrfrmHg22O88fRjwf6ecNTeddATdM6bP020x/BLT3b8wa3MldAjdHf9lCzyeabqv/xnTt4HJT/fc\nF/jWyLlj2tz96hHAmiln3dnvY1hRVaePtM9p6iyGRayq/p7uGcdz4f7pkLcD762qu6ccdxXwG8Da\n6qwD9macYpjlPoYAVNVdwOnAy5N4u5+nqtoA3JrkKdC9Agv4NeAfRoibye1iC/erD/W3k2laqP1p\n28Q7yOJ3MnBKkuvpnqXdW1VvHSFnNbAf3Q7a4Wnfqaq1U87aZeLlqmO8GmTO/VMeVfVl4CvAqSPm\nLUenAa9NcjXwd8AbquqGEXJmOT11MvCs/n71L8D3gdeMkLMkp9z8PoYZ25bPV0/yJOB84OT+QW60\nrK21HLOW4zqZtXRyZp3V5FoMs7Vcb1TLMWs5rpNZSydn1llDTiVJkhoWgySpYTFIkhoWgySpYTFI\nkhoWgySpYTFIkhoWgySp4RvcZiyJV7ik+VpXVZMfYjg6i2GJ8F2dZi1k1nJcp+Wcta2cSpIkNSwG\nSVLDYpAkNSwGSVLDYpAkNSwGSVLDYpAkNSyGZSrJSUnuS3L4yDmvSXJNkq/039/8iyPl3Nsv/5r+\nu6LPSDLKa8IHWXPfSX3IGDl91kOTnJdkTZIvJrkyydNHylo/cfx5Sd47i6yxDHOSnJDkX5I8Yuys\n5W6nhR6ARvNs4Aq6L75/4xgB/XdQnwA8vqo2JtkX2HmMLGBDVa3oc/en++7rPYE3jJk1AxcDH6qq\n3wboH9SeNlLWpt7NOtY7XGf1ztkCSPJU4N3Af6yqm8fM2h64xbAMJdkdOBp4AV0xjOVA4FtVtRGg\nqtZW1TdHzKPP+Rbw+8DLRoqY1TthjwXurqoPzJ1WVTdX1dmzyF8mkuTJwLnAiVX1bws8nmXBYlie\nng78bVWtAb6V5MiRcj4LHNJvvp+d5JdHyvkRVXUDsEOSA0ZY/K6DqaSPj7D8OY8BVo24/Em79eu1\nKsnVjLQlOWMPBi4CTqqqry30YJYLi2F5OhW4oD/8UeA5Y4RU1QZgBd2z99uBC5KcNkbWZoz1zP7O\nqlpRVUdW1TNHyvgRSf48yZeTfGGkiLn1WlFVRwKvHylnlu4BrgJeuNADWU7cx7DMJNkHOBY4ov8k\n1x3p5kb/ZIy86j6F8XLg8iSrgdOAlWNkDSV5JLCxqm4fO2tE1wL3F09VvSzJfsAXF25IS869wLOA\nS5K8qqrestADWg7cYlh+TgFWVtVPVdUjq+pQ4IYk/2HaQUkOT/KowUmPB26cds5c3CD3AOAcYJRX\n1DCjfQxVdQnw4CQvGpy8+4iRS+KTPbdSquou4ETgOUmeP2bWiMteVNxiWH5+C3jbxGmfoJte+ocp\nZ+0BvDfJXsBGYA3dtNIYdkmyiu5VT/fQld+7Rsqa5atPTgLeneQVdNNxG4BXjJQ1k/VKsiNw9yyy\n6NepqtYlOR64LMm/V9Vfj5C1a5Kb6AqigHdW1btHyFlwfh/DEuHn7pu1kFlbk5PkccC5VfWksbO2\n1XLN2lZOJUmamn5a7DzgNQs9Fj1wbjEsEYvxmaFZ20/Wclyn5Zy1rdxikCQ1LAZJUsNikCQ1LAZJ\nUsNikCQ1LAZJUsNikCQ1fB/DEtF/IJ6kpWtdVe270IOYD4tBjeX6hh+zlkbOcs5aSpxKkiQ1LAZJ\nUsNikCQ1LAZJUsNikCQ1LAZJUsNikCQ1LAY9YElOSnJ1klX9z9VJ7k3yayNkHZzkX5Ps3R/fpz9+\nyLSz+uU/LMn5Sb6W5ItJ/jrJo6accUmS4yZOOz3J2dPMGSz73v7/9OUk/5TkAX315jxy7kty1uD4\ny5O8bsSslYPjOya5PcmnxsjbXlgMesCq6uKqOrKqVlTVCuB9wOVV9b9HyLqlX/7b+pPeCvyPqrpp\n2lm9i4BLquqwqvpF4FXAw6ac8VfAqROnPbs/fQwb+v/V44FX012HY7gbeEaSWbzLdwNwRJIH98eP\nA26eQe6yZjFoKpIcDrwOeO6IMe8GnpjkdOAo4B1jhCR5CvCDqvrA3GlVtbqqrpxy1MeBE5Ls1Oce\nChw4Qs6c4Tt89wLWjpSzEXg/cMZIy5/0aeDE/vCpwPkzyl22LAZts/6B7Tzgj6rqG2PlVNVG4BXA\nu4DTq+rekaKOAL400rLvV1XrgH8Eju9PejZw4YiRu/ZTSf9M98D9ppFyCjgb+O0kDxkpY5h1AXBq\nv9Xw88AXRs5c9iwGTcN/A66pqv85g6wTgFuBx84gaxYuoCsE+t9jPtu9s59K+lm6MvrIWEFV9T3g\nw8DpY2UMsq4BfpJua+FvaLeM9ABYDNomSX4FOBl46QyyHg88FXgScEaSac/5z7kW+IWRlj3pk8BT\nkxwJ7FpVV88itKo+D+yfZP8RY94DvADYbcSMOZ8CzsJppKmwGPSAJdkH+EvgtKq6cwaR76ObQroF\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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\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": {}, @@ -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": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEPCAYAAABRHfM8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XecFPX9+PHXe2av31Hv6B1RBEXELhZQY4kmlkSNJf7Q\nRBO70ajRxKBf9YspRo3la2xJNJZEjTUaWzw1qIgUQYqKSO9wXL+93Z3374+Zg+W4Mge3u8C9n4/H\nejuzn/3Me8Zl3/uZz8znI6qKMcYY0xon0wEYY4zZOVjCMMYYE4olDGOMMaFYwjDGGBOKJQxjjDGh\nWMIwxhgTSkoThojkiMgUEZkhIrNFZGILZQ8QkZiInJbKmIwxxmybSCorV9WoiIxX1RoRcYHJIvK6\nqn6SXE5EHOAO4I1UxmOMMWbbpfyUlKrWBE9z8BNUU3cKXg48B6xJdTzGGGO2TcoThog4IjIDWAW8\npapTG73eBzhFVf8PkFTHY4wxZtuko4Xhqeq+QD/gIBEZ0ajI3cD1ScuWNIwxZgck6RxLSkRuAqpV\n9Q9J6xY2PAWKgWrgIlV9udF7bdArY4zZBqraLj/EU32VVLGIdA6e5wHfAuYnl1HVIcFjMH4/xiWN\nk0VSWXuoMnHixIzHsKM87FjYsbBj0fKjPaX0KimgN/DX4CooB/i7qr4mIj8BVFUfalTeWhHGGLOD\nSvVltbOBMU2s/1Mz5S9IZTzGGGO2nd3pvRMaN25cpkPYYdix2MyOxWZ2LFIjrZ3e20NEdGeJ1Rhj\ndhQigu4Mnd7GGGN2HZYwjDHGhGIJwxhjTCiWMIwxxoRiCcMYY0woljCMMcaEYgnDGGNMKJYwjDHG\nhGIJwxhjTCiWMIwxxoRiCcMYY0woljCMMcaEYgnDGGNMKJYwjDHGhGIJwxhjTCiWMIwxxoRiCcMY\nY0woKU0YIpIjIlNEZIaIzBaRiU2UOVtEPgse/xWRvVMZkzHGmG0TSWXlqhoVkfGqWiMiLjBZRF5X\n1U+Sii0EjlDVchE5HngYODiVcRljjGm7lCYMAFWtCZ7mBNvTRq9/nLT4MdA31TEZY4xpu1AJQ0T6\nAgOTy6vq+yHf6wDTgKHA/ao6tYXiPwZeD1OvMcaY9Go1YYjIb4AzgblAIlitQKiEoaoesK+IdAJe\nFJERqjq3ie2MB84HDgsZuzHGmDQK08I4BdhDVaPbsyFVrRCRd4Hj8ZPPJiIyCngIOF5Vy5qr4+ab\nb970fNy4cYwbN257QjLGmF1OaWkppaWlKalbVLXlAiKvA6eralWbKxcpBmJBh3Ye8AZwh6q+llRm\nAPAO8MNG/RmN69LWYjXGGLMlEUFVpT3qaraFISL34p96qgFmisg7wKZWhqpeEaL+3sBfg34MB/i7\nqr4mIj/xq9CHgJuAbsADIiL4CebApiqrrq+mILsg5K4ZY4xpT822METk/7XwPlXVx1MTUtNERBdv\nXMyAzgPSuVljjNmppaWFoap/DTZ2pare0yiAK9tj420Vra6EzpnYsjHGmDB3ejfV0pjQznGEEv2/\nBzKxWWOMMbR8Suos4Gz8y1w/SHqpCPBU9ejUh7dFPDp9dG/2nbYMHBsCyxhjwkjLKSngQ2AlUAzc\nmbS+EpjVHhtvq8SalVBbCwXW8W2MMenWUh/GYmAxcEj6wmnZ1z1z2N8urTXGmIwIc6d3JY3GfwLK\ngU+Ba1R1YSoCa0p1toLnpWtzxhhjkoS50/tuYBnwFCDAD/DHhZoOPAaMS1VwjcULsIRhjDEZEqb3\n+Luq+idVrVTViuBmu+NU9e9A1xTHtwUVwE5JGWNMRoRJGDUicoaIOMHjDKAueC2t394lVXZKyhhj\nMiVMwjgH+CGwBlgdPD83GBvqshTGtpWCqFoLwxhjMqTVPoygU/s7zbz83/YNp2WxhLUwjDEmU8Jc\nJVUCXAgMYssJlC5IXVhNq+ufsIRhjDEZEuYqqZfw7/R+m80TKGVEVi14XizUeTRjjDHtK0zCyFfV\n61MeSQg51TBj8XfYr8/MTIdijDEdTpgf66+KyLdTHkkIx0yFWH2zE/IZY4xJoTAJ40r8pFEnIhUi\nUikiFakOrCkRBYnGM7FpY4zp8MJcJVWUjkDCqMoSiFvCMMaYTGi1hSG+c0XkpmC5v4g0OYVqqtW7\nCglLGMYYkwlhTkk9gD9i7dnBchVwf8oiakHcgfp6SxjGGJMJYRLGQap6KcFwIKpaBmSHqVxEckRk\niojMEJHZIjKxmXJ/FJGvRGSmiIxurr6EQLUlDGOMyYgwl9XGRMQlGDcquJEv1N1zqhoVkfGqWhPU\nMVlEXlfVTxrKiMgJwFBVHSYiBwEPAgc3VZ+fMDJ6K4gxxnRYYVoYfwReAHqIyO34w4H8b9gNqGpN\n8DQHP0E1HgzqZODxoOwUoLOI9GyqrgRCddQShjHGZEKYq6SeFJFpwNH482Gcoqrzwm5ARBxgGv4c\nGver6tRGRfoCS5OWlwfrVjeuK4Hw0II4J9VuoFtet7AhGGOMaQfNJgwRSf5GXgM8nfyaqm4IswFV\n9YB9RaQT8KKIjFDVudsS7N1VwqrJcPUvrmbCqRMYN27ctlRjjDG7rNLSUkpLS1NSt2gzw4WLyDf4\np48kWNVQ0J/GSHVImzfmX5pbrap/SFr3IPBuMCETIjIfOFJVVzd6r34p+Tx8RQ0jJjzGhNHnt3Xz\nxhjT4YgIqiqtl2xds30YqjpYVYcEfxueNyyHShYiUiwinYPnecC3gPmNir0MnBeUORjY2DhZNHjf\n6c7Pn4BYIhpm88YYY9pRmKuktkdv4K9BP4YD/F1VXxORn+C3Uh4Klr8tIguAaqDZpsPDzm4cH1mK\n59mltcYYk24pTRiqOhsY08T6PzVaDjVznxvLw/EgoZYwjDEm3XaqqSViAo76c2IYY4xJrzBjST0R\nZl06eDjWwjDGmAwJ08IYmbwQ3LG9X2rCaVkcwVGI1q/JxOaNMaZDazZhiMgNIlIJjArmwagIltfg\nT9uadnEcnASUbXwvE5s3xpgOraXLaicFc2H8TlU7BY8iVe2uqjekMcZNEoAbh3iiLhObN8aYDi3M\n0CA3iEhfYGByeVV9P5WBNSUBOB7EYhvTvWljjOnwWk0YInIH8ANgLv53Nvh3fac9YcRxEIW6+pXp\n3rQxxnR4Ye7DOBXYQ1Uzfnt1AsHxQFVQVUTa5W53Y4wxIYS5SmohkJXqQMLwgqukPJS6um8yHY4x\nxnQoYVoYNcBMEXkH2NTKUNUrUhZVMxI4CBCJlBCPV6R788YY06GFSRgvB4+MiwPZCVBxCTnpnzHG\nmHYS5iqpvwYjzQ5Q1S/SEFOzorgAFJV5bD1xnzHGmFQKMzTId4CZwL+D5dEikpEWRwJhTYFDrDKG\nPy+TMcaYdAnT6X0zcCCwEUBVZwJtnjypvcRcoaIqjrUwjDEmvcIkjJiqljdal5Gf9wrgZpETjVsL\nwxhj0ixMp/ccETkbcEVkGHAF8GFqw2qaKog49F2ZwFoYxhiTXmFaGJfjj1gbBZ4GKoCrUhlUcxRY\n1zmf7DrFrpIyxpj0CnOVVA3wy+CRYcLikm5k1Zejai0MY4xJpzBjSe0P3AgMYsvBB0elLqymKbCq\nqBMbKmMsKl/G6C7pjsAYYzquMH0YTwLXArNp43kgEekHPA70DN77sKr+sVGZTsDfgAGAC9ypqn9p\nqj5FWFcymH6rZ1AerWxLKMYYY7ZTmISxVlW39b6LOHC1qs4UkUJgmoi8qarzk8pcCsxR1e+KSDHw\nhYj8TbWpeViV1d1K6LcMYgmb19sYY9IpTMKYKCKPAI3Hkvpna29U1VXAquB5lYjMA/oCyQlDgaLg\neRGwvulk4Q8+WJ2XR0E9xDXRVBFjjDEpEiZhnA8Mxx+xtuGUlAKtJoxkIjIIGA1MafTSfcDLIrIC\nKATObK4OBUhEyItB3FoYxhiTVmESxgGqusf2bCQ4HfUccKWqVjV6+ThghqoeJSJDgbdEZFQT5Ugw\niy/fWMIz6zyGffIlJ+29PVEZY8yup7S0lNLS0pTUHSZhfCgiI1R17rZsQEQi+MniCVV9qYki5wOT\nAFT1axH5Br9F8+lWdbEPB47Zi9OmTmbFmAHbEo4xxuzSxo0bx7hx4zYt33LLLe1Wd5gb9w7Gnw/j\nCxGZJSKzRWRWG7bxGDBXVe9p5vXFwDEAItIT2B1/0qatKNBv2XIO+dJj4fJVbQjBGGPM9grTwjh+\nWysXkbHAOcBsEZmB/51/IzAQUFV9CLgN+EtSErpOVTc0V+fwuV+zoUAY/O5cOGlbIzPGGNNW0tod\n0yLSrYnVlaqa1l5nEVE4l9dLKtk47F8M2VBE9+nLGZqXl84wjDFmpyIiqKq0R11hTklNB9YCXwJf\nBc8Xich0EdmvPYIIbyQJURbtm0XMhUV1dendvDHGdGBhEsZbwLdVtVhVuwMnAK8ClwAPpDK4xoQe\nRGI9yHfASSSI23hSxhiTNqE6vVX1jYYFVX0TOERVPwZyUhZZE5QLUCJkOYok6klYwjDGmLQJ0+m9\nUkSuB54Jls8EVouIS9rHGN/Iaq8G6nKIxcotYRhjTBqFaWGcDfQDXgReAPoH61zgjNSFtjUhjx+V\n/w1vTS6uYgnDGGPSKMx8GOuAy0WkQFWrG728IDVhNSebvvQkVhdHPVi4fi6UHJneEIwxpoNqtYUh\nIoeKyFxgXrC8j4iktbO7gSIIxaxeEyPfcdhYsy4TYRhjTIcU5pTUXfjjPa0HUNXPgCNSGVRzOhcp\nPWUMK9fX4yrE1aZpNcaYdAmTMFDVpY1WZWRs8UH9lT3c3aiqS+AoxD0b4twYY9IlTMJYKiKHAioi\nWSLyc4LTU+kWcZVeTl++WRXFSSgJa2EYY0zahEkYP8WfFa8vsBx/TotLUxlUcyIRGOoOo7g7xKNq\np6SMMSaNwl4ldU4aYmlVVhYkcDm8D8gycKJNDmprjDEmBcJcJfVbEekUnI56R0TWisi56QiusYgL\nCcdln8puOArd19xCPL7VPEvGGGNSIMwpqWNVtQJ/MPFFwG7AtakMqjmRCMQj2RRoFqIQdwrwvMa3\nhhhjjEmFMAmj4bTVicCzqlqewnhaJrDOy6V4YyWOgkc2nmcj1hpjTDqEGUvqVRGZD9QCF4tICZCR\nb+m8PCiXHLqU1zAAKP5GSSRqMxGKMcZ0OK22MFT1F8ChwP7BpEk1wMmpDqwpw3dTYupQH3F4vr/w\no1s2MnPmkdTX2x3fxhiTamFv3NugqongebWqZmRC7ZwcqFeHDYNKuHyMS1at4LoFxONlmQjHGGM6\nlFAJY0eRm+snDC8rQo0L9ZEIjpNDmmeLNcaYDimlCUNE+onIf0RkjojMFpErmik3TkRmiMjnIvJu\nc/Xl5ytPVfel2u1EQsH1FJEIqvHU7YQxxhgg3H0YIiLnisivg+UBInJgyPrjwNWqOhI4BLhURIY3\nqr8zcD9wkqruBZzeXGXn/UARlHKvBMVDPA+RLGthGGNMGoRpYTyA/2V/VrBcif8F3ypVXaWqM4Pn\nVfhjUPVtVOxs4HlVXR6Ua7YHu6gI+ru1TD3taNTzcNUjEVdrYRhjTBqESRgHqeqlBJfSqmoZkN3W\nDYnIIPxxqKY0eml3oJuIvCsiU0Xkh81XAlkoG3v0JOYIrufh1dbjedbCMMaYVAtzH0YsmL9bAYL7\nMNo06p+IFALPAVcGLY3GMYwBjgIKgI9E5CNV3Wo2v1t/dyvlXpypr84jVqE4Con1FWidDQ9ijDEA\npaWllJaWpqRu0VbmxRaRc4Az8b/U/wp8H/iVqj4bagMiEeBV4HVVvaeJ168HclX1lmD5kaDs843K\naf36eg7oWcMp903nliePIjZZmPxgF/YuuZRup9waJhxjjOlQRARVlfaoK8xotU+KyDTgaECAU1S1\nLfNhPAbMbSpZBF4C7g1aMTnAQcAfmiwpkIXH3sX7IQmHhECiqCtaYfdhGGNMqrWaMESkG7AGeDpp\nXZaGuDRJRMbiD40+W0Rm4J/WuhEYCKiqPqSq80XkDWAW/kx+D6nq3KYrhGw8otEsiEPCgfXlWbz+\nTh3HHAu9erW+w8YYY7ZNmD6M6UB/oAy/hdEFWCUiq4ELVXVac29U1cmA29oGVPX3wO9bKyciZKHE\nYgIJJT+mFHhCeXU9S5dawjDGmFQKc5XUW8C3VbVYVbsDJ+D3SVyCf8lt+jj+Kak33siCBKzqnE1O\nLeTn1ZGw6b2NMSalwiSMg1X1jYYFVX0TOERVP8bvc0gfgaPdNTz9dDbEc1nRNYuEF6Grt8YShjHG\npFiYU1IrgyuZngmWzwRWB53UaZ1UW0Q41NlAt25KWTybejfBGieb2MAsCixhGGNMSoVpYZwN9ANe\nDB4DgnUucEbqQmuCAOrP7a3xLNRVSuIxKkZFrYVhjDEpFuay2nXA5c28vNXNdSnlgKqSkwPEsqjN\nqWB9eTb1vV1LGMYYk2JhLqstAa4DRgK5DetV9agUxtV0LK6g9YqujYLkkzssyjMLp7GypBejeqQ7\nGmOM6VjCnJJ6EpgPDAZuARYBU1MYU7OcLIf9Z+5PfRSkZhjlC2r5cY+DmVO1juKPXslESMYY02GE\nSRjdVfVRIKaq76nqBfjjPmVE4ahCBg4RztrjQhKug9Tl4Kmy9+/Pg3ebnUrDGGPMdgqTMBru6F4p\nIieKyL5AtxTG1KoeXZRCtzOSl41Xp3jA6v1PgmOPhQ0bMhmaMcbsssJcVntbMMnRNcC9QCfgZymN\nqhVuBBIxqCNBdtzBIcGsa/ei/5wuELe5MYwxJhVabGEE91oMU9VyVf1cVcer6n6q+nKa4muSG4F8\np4iE65AtvYipy4YNj1JR43LrzQk++iiT0RljzK6pxYShqgk2z7S3w4hEwKnPIu4KbiyBh9KnTz1O\nxGXJNwmefDLTERpjzK4nTB/GZBG5T0QOF5ExDY+UR9aCrEKHnG/ySHgug+bOA/XIy4tT2Mnh+GM9\nFqT37hBjjOkQwvRhjA7+/k/SOiWDV0rl9MimdmA9M7O7cOaXXwIQ9+Lg5lLSLcG8tszWYYwxJpQw\nd3qPT0cgbeG64EWEGUWdya6vB4SEFwfXZWC/BJEwadAYY0ybtHpKSkR6isijIvJ6sDxCRH6U+tCa\n15Aw+g8ZAcDgDUJC/YSRm+1RU5PJ6IwxZtcUpg/jL8AbQJ9g+UvgqlQFFIbrgucK3auK+Sonh8K4\nQ8JLgOOQl52whGGMMSkQJmEUq+o/CIYyV9U4/lSqGeO6kFOUT76XT30kQn5scwsjy0kQa3XyWGOM\nMW0VJmFUi0h3/I5uRORgoDylUbXCdYHOLm7MRVQ54csYK2v9hBFxPLt3zxhjUiBMwrgGeBkYKiKT\ngcdpfrjzLYhIPxH5j4jMEZHZInJFC2UPEJGYiJzWWr2u6//HiTks239/BpblsKAyTnWfelTLLWEY\nY0wKtJowVHUacCRwKPATYKSqzgpZfxy4WlVHAocAl4rI8MaFRMQB7sDvK2mVnzAcJCbkjRvHhFlR\nPl3TlemXLOSbuX4u89I6F6Axxuz6wlwlNQt/Poy6YHiQ0D0EqrpKVWcGz6uAeUDfJopeDjwHrAlT\nr+uCOi77zNmH+v2OYHmWMH9RGU9tOBJv6QIiERtSyhhj2luYU1LfwW8p/ENEporIz0VkQFs3JCKD\n8G8CnNJofR/gFFX9P/xJWFvlupDVP4fsaDaxL2NEE8Keegj/XPcZlyRqkQEfWcIwxph2FubGvcXA\nb4Hfisgw4CbgN/hzeociIoX4LYgrg5ZGsruB65OLN1fPzTffDMD778OAAUey4vAVvD7lde4pLOTe\nF5cx6Y8nsuqzx/EOuYNY7MWWqjLGmF1SaWkppaWlKalbVLX1QiIDgTODRwL4u6reGWoDIhHgVeB1\nVb2nidcXNjwFioFq4KLGI+KKiDbEeuutEI3Caaumc2/ZvQypWMYZCxfy/DNX0vvda7igNs7731nD\n4WNKwoRojDG7LBFBVdvl13OYPowpwAv4LYrTVfXAsMki8Bgwt6lkAaCqQ4LHYPxWyCWtDZ/uupBI\ngJvncnzp8UQrIBKLEZMsxmRDdn1PLr/SzkkZY0x7CjPq0nmq+sW2VC4iY4FzgNkiMgP/Xo4bgYGA\nqupDjd7SenOHzQmj9y968/Zbb7Pxk1qyC+tJSAR1lS6dXJYuS6AKYmeljDGmXYTpw/hCRE4ERgK5\nSev/p/l3bSozmTb0dQTzhbeqIWHkFecx8byJXPryUWRPiZG93MVzlewslzVlCRYsgGHDwm7dGGNM\nS8KcknoQv+/icvx+htPxWwgZ05Awst1s6hP1xIcWUEwZN5z2Ewb+1SPiuuyxZ4Lq6kxGaYwxu5Yw\nl9UeqqrnAWWqegv+DXi7pzasljUkjCw3i95Fvfnjwuc4bvQJvPL9G+k8G1xxyc7xiEYzGaUxxuxa\nwiSM2uBvTXDPRAzonbqQWteQMBxxWHzVYi7c/0LWelEqsrvh5YLruESyE9TXZzJKY4zZtYRJGK+K\nSBfgd8B0YBHwVCqDak1DwmiQm5VLxBFW1kHCcfi6rp5Vhy+iLhqqD90YY0wIYTq9bw2ePi8irwK5\nqprx0WqTx4rKy8tj8dczmF1Vj+t59HNh8b7L+bq+hm9RkLlAjTFmFxKmhbGJqkYznSwAHGfLFsb1\n11/PWWPPoryyDolBbmI159c+xdLE6swFaYwxu5idcvbrxqekOnXqxF4D92LZrJl4Ucj2ChjmzKVP\n4XiOn3wNGyPDqJTunFJczO1DhmQucGOM2Ym1qYWxo2icMAC6FHWhJl6HeJCVKOQfH32P7rW78Uv3\nfu4ueoGf9evHlIqKzARsjDG7gGZbGCIypqU3qur09g8nnKYSRtdOXSmrrwCFq/LGc37hw3y1aA1n\n7/c669Y9z/D8fOpskgxjjNlmLZ2SahgvKhfYH/gM/8a9UcCn+PdjZERzCWNF9SoE+P58h4t65XH1\n/yyic24xY8asI9dxLGEYY8x2aPaUlKqOV9XxwEpgjKrur6r7AfsCy9MVYFOaShglXUsoi1UQV0h4\ncYb06MM5lyxh7dpiYrF1FLgu82tq+NOKFZkJ2hhjdnJh+jD2UNXZDQuq+jmwZ+pCal1TCaN4TDG/\nGnQTjgpaW8vQrkMRN0FNjZ8w9sjP5+ZBg7h10SKqbHYlY4xpszAJY5aIPCIi44LHw0DYOb1ToqmE\nUbhXIf3OHYAAMz58no+WfojjJqip6U4stg4BzunZk43xOPctz2gDyRhjdkphEsb5wBzgyuAxN1iX\nMa4LlZVbr8/Oy8UBjliYoMuqjThugmg0F9UY9fWr6J2TwxX9+vF1XV3aYzbGmJ1dqwlDVetU9S5V\nPTV43KWqGf3Gzc+HGTO2Xp+XX4Cg1E38Ffl1HuImiMUgL293ysreJpGoZkR+PjWNmyfGGGNa1eqN\ne8E83pOAEWw5H0bG7oAbOhQ6ddp6/UGjD8EF6os6k7VCWZSYjERcirqdwtdfX8O6dS9Q0PNPVFvC\nMMaYNgtzSurPwP8BcWA88Djwt1QG1ZrcXGjqrFJefj4Aumgxw9fBkvjH/Ed+yf0f92bPPf9GIlFF\nvutSbZfXGmNMm4VJGHmq+g4gqrpYVW8GTkxtWC3LzaXpuS4c+JXkkn/fffSshhuO+jF7eKcx7bM6\nRLJQjVHgONbCMMaYbRAmYURFxAG+EpHLRORUoDDFcbUoN9fv9P744y3Xiyv8yS0kPmAAp84XEol6\nhu+WS128DpEIqnEKXJcyu6zWGGPaLEzCuBLIB64A9gN+CPy/MJWLSD8R+Y+IzBGR2SJyRRNlzhaR\nz4LHf0Vk79bqzc6G730PXnutUV2OENUozx12GAcvVQY9/CxHTP2QjTWLmPNlAs+L0Ts7m/k1NSTU\n5sowxpi2CDMfxlQAEQG4XFWr2lB/HLhaVWeKSCEwTUTeVNX5SWUWAkeoarmIHA88DBzcWsUnnggX\nXOAnjn32CVY6cHGPi7n0+XtYN9ihcMkcfvRhGd+MV06+p467jo/RqVMOfbKzOWrmTN7aZx+ynZ1y\n/EVjjEm7Vr8tRWRvEZmBfy/GHBGZJiJ7halcVVep6szgeRUwD+jbqMzHSXNsfNz49eacfz5MmAD7\n7gvPPgvV1f4pqe91+R6/e+ABbvpG+c3S7jxd0I0uXzvsf+Qa8vPj7L47vLXnvsyoqqLK+jKMMSa0\nMD+v/4TfShioqgOBa4CH2rohERkEjAamtFDsx8DrYev885/hjjvgssvg2msBB9RTzjvvPD7s3p1/\nPvIIp/3whxTVQTReRUnJAiZN+h7dohXkOw71drWUMcaEFmYCpQJVfbdhQVVLRaRN854Gp6OeA65s\n7pSWiIzHv4P8sObqufnmmzc9HzduHOPGjeO666B3b3jjDb8PAw8ikQh75uTAkCEweDBFnjD1m7n0\nOuZJhg//KWVl75Ht9Kfe+jGMMbuY0tJSSktLU1J3mISxUERuAp4Ils/F73cIRUQi+MniCVV9qZky\no/BbLcerallzdSUnjGR5eVBbi9/CSARJwHUhHofCQvoWd6E6fz0zZ9bz1VfHMWRILdki1sIwxuxy\nGn5MN7jlllvare4wp6QuAEqAfwaPkmBdWI8Bc1X1nqZeFJEBwPPAD1X16zbUu0leHsyb5/dhRJdG\n8eIeRCL+CIUFBRxZkcOQtTBn1iyWL6/iD3+YD7Vxa2EYY0wbhLlKqgz/kto2E5GxwDnA7KDjXIEb\ngYF+1foQcBPQDXhA/EuxYqp6YFu2M3KknzDi+VloTNn4n410y8mBH/wAJk2ioLgvMx5dwf0lf+Gd\nAo81a/5J567Lmdjjep4dOXJbds0YYzoc0WZ+ZYvIK/hf8E1S1e+mKqimiIg2Fyv440u5Lrhravnf\nn0U59dz1cNppcO+91B16IJO+lcdlYy6m5M4HOO+8kTzxxFzyhw+net68NO6FMcakl4igqtIedbXU\nwvh9e2wgXSZPhg0b4OJj4rz2UTanThwK3bpBLEaWk8XGXKhYvZgS4LrrRrAkegkfvH4DFRUV5OXl\nkZWVleldMMaYHVpLU7S+p6rvAVUNz5PWFaUvxHB69YIRI2D8wGrqaoOWSFYWxOM44rAxF5yKymB1\nFy498zabWnp4AAAcj0lEQVS65tfQo2cXDho/OoORG2PMziFMp/fDyTfqichZ+P0OO6TCEpe171dS\n9XmVnzBiMUSE9Xkw+JUP+HjZx1QUnMddd77Fbf9+h/998VxmTJ7LU5OP5fPPv8eKFQ9neheMMWaH\nFOay2u8Dz4nI2cDhwHnAsSmNajv0P6eE5aXVPP43KFr1LcavdOkHrBy7Nzw9m6v+fRUzVs2gb80C\nxuftxeDxezOxyz95c+UYxvbrwqJFv6a8/IOkGh0GDZpIdnZvRCI4TphDZowxu55mO723KCSyO/Ai\nsAQ4VVVrUx1YEzG02Ond4Ouv4eojN5C3Rz418z7nlZX78+ijMLXkp/zfd/8Ensce9w9Hn36JvXsN\nZ+RIePzlk1i24D2i5etYt+55VDePZrtixZ+oqPgQkWxycvpz8MELUrmbxhjTrtLS6S0is9nyKqlu\ngAtMCQIY1R4BtLehQ+H2A1cQ6RKhf/5fuH3KF7zxy924bNBXJBzBTSTIi+Rx2Q11JJbDokWQM+xv\nsHw4Bx00lk8//XSL+nr1Og+A+vp1fPLJHhnYI2OM2TG0dH7lpLRF0c56/6g3X1/7NXPqf0CxV8ik\ntaM5cs1NjPU+4P2cd9DrlaxVnzHh53sRKYywapLLV+c+wlfnndNsnQ3zaRhjTEfV0lVSi4FlwBvB\nTHtbPNIXYtt1P7E7B849kAMXHMbV60Zz9tlw18DDqSXCjV5nln2zHxNkAj+7/y+sXAn96wrRonwq\nKiq4+OKLm6xTxEXVRrc1xnRcLV4lpf435BfB8B07rXvugSefcUlkx7jbuYLXj76KfWZdxuPvLWHA\nANhnlJBTmccDTz7JkiVLmqzDWhjGmI4uzCU/XfHnwfgEqG5Yme47vbdHcbH/KIt47HkAFEy+i2MH\nlbC07Cs+6AmdO0N0hcPfXiikIBZrsg5/DEVrYRhjOq4wCWOHveeirRKusPH071Jwz2P0P3IED/X5\ngJI86NMH9nGz+fjgRYx8uZqpFRWb3iPA3oWFZItrLQxjTIcWZvDB90SkJ3BAsOoTVV2T2rBSI5rl\n0OnF1+HGGzn92RlcMehfuCMv4uhfChcM/pLYkhF8vX4dl5SWgj8lLZ8XFHB2XR2PfvvbgKDqIWLT\nuhpjOp5W78MQkTOA3wGl+D+4DweuVdXnUh7dlnGEug+jJd/5nz15adIinNpaKt9byf033Uf5kV/w\n29L9Yd8/o7nr0NwNRDw/j7oIl3gXsjS/D5eM/SWOk8Xhh1fjONntsEfGGJN67XkfRpiE8RnwrYZW\nhYiUAG+r6j7tEUBY7ZEw9vvTGD695DNk0iSia+KsfmIN/a8fQF29S8IT/ud2iOsfOPVHp7DbwUcz\ndvKjaM63GNVtIx/f90uefDKPSOQe9tjDTxjdu59IdnZJe+yeMcakRLpGq23gNDoFtZ5wY1DtcFwn\nwuJfXsagtWtxq2I461ew/Lrl9LmoN46r7F+gFBX2pP/779L7n8/yy+8P5a1jvqHqs6689M8EH33y\nM4qKPqRnT6io+AjVKH36/CTTu2WMMWkRJmH8W0TeAJ4Ols8EXktdSKkTcSIs//EZDBowlgjQ70H4\nsPeHlNy0Hzm9c7h3Jgwd+hgvvng1dyYS1Lz4CdPqPyCv77ns9t1Cah9dyVGnduGQQ+Ckk65k48Y6\neveG7t0hJwdOOAGKijZ1fxhjzC6l1ZaCql6LP9/2qODxkKpen+rAUqFLbhdO/fup1MRqNq1zch28\nWn9u75ISeP7588nLW8e+l/yOnxTtxqyHYf9p/+Dio+uouakX8U7d+GfJTziu51L2HbqRGTPg7bfh\nttv86TeysmCvveDZZzO1l8YYkxotzbh3FfAhMF13gOtJ26MPI5aIsef9e7Jbt904tP+hnDr8VKqO\nrGKvp/Yif0Q+CRWq6xzOOgt++lM45RR44dhjkbfeonjPHoxYvB4RF5csspx6cuo8nP9+6DcrunaF\nXr2oqoJf/Qqys+G3v22nnTfGmG2Ulk5vEfk9cCgwHJgNTMZPIB+q6oaQgfYDHgd6Ah7wsKr+sYly\nfwROwL8xcIKqzmyizHYnDIBpK6bx/uL3eWj6QwjCeXefx5hFY3DEIScnh5HPj+SC/y3k9LMdzrko\nQtTzOOS441iyci6JQXHK91/HvuxHPynkllffpd8ScDyHrITLrFeOoLAwwtKlsGyZf7NgskWLrqes\nbHyj/YKLLoIBO/W99MaYHVW6r5LKBvbHTx6HBI+NqjoiRKC9gF6qOlNECoFpwMmqOj+pzAnAZap6\noogcBNyjqgc3UVe7JIzG6uJ1zF49mwkvTeCFuS9QM7eGG6b144iRUW74sC8A69atY/ny5cyfP5+7\nnr6LT/eaiuLhiYOD4nrK2jshN2iHfTTQ4aT/V7jFdvrl5pAluQxL/IhDss5CvRyi9QN46y1YsQJ6\n9gQUbrlZOOaYdt9NY0wHle6rpPKATkDn4LECv8XRKlVdBawKnleJyDygLzA/qdjJ+K0QVHWKiHQW\nkZ6qujr0XmyH3Egu3fK6URevY/f7dgegx8n1LH55KVVVSmGhUFxcTHFxMfvssw9nnnkmrFsH99/P\nsAMOYEluLgAlPacjb7zGkNL3eLW6mLpDHtp8HBJR3JrXGVbxPIur7uC0vR6mH8tZQW/csYP5Fbfz\nNTBsTXeOPXZvXBccZ8uHyNbramvhjDP8znaAI47whzlJJRH/dJsxpuNpaT6Mh4CRQCUwBf901B9U\ntWxbNiQig4DRQV3J+gJLk5aXB+vSkjDATxp18bpNy3sfns1trwxgWv8q3nwhTtdxXbd8Q3ExTJzI\nV8nrjjoKrvg5+/TsSd/Va3iTfIbuvjsDBw4MCpzB2wvP4fYPbud7Y1/D0VqidQuZPv1gEkceycyq\nKs6fP5/6elAFz9vy0dS6qVPhz3+GZ56B5cvh9NNT/2Uej8N778Fhh6V2O8aYHU9LfRj/BoqBz/GT\nxUfA59tyXig4HVUK3KqqLzV67RVgkqp+GCy/DVynqtMblUvJKSmA9TXr6XdXPy4ccyEAjjj0m38k\nv772OxzQZw26dwLXBddVIhGC55Cd5XDHr3qz21B3U13XXnYZt95/P4ggIuQkfYN7KNF4tGF/UNdl\neUkc3GwUYSM54LiogCeCJ0LEceick83Kgd2oz8tGRBjQeSCdsovwb7z3f/Wr61AzZhSJTkXgCP07\nDyAvO39z02T0aP8Sru104YXw8stQWNh62WSRCLzxBgwatN0hGGPaIG19GCIi+K2MQ4PHXsAG4CNV\nnRhqA/4wr68Cr6vqPU28/iDwrqr+PVieDxzZ+JSUiOjEiZs3OW7cOMaNGxcmhFapKo/NeIzqmD8Y\n78rKlSws+4b4kycw8qUDePv8Umpz6vESgudBIu7gecLCqcNwFh9Nbs6W/y8m1DzIGQc8ztGTP+HS\nPfZAGr60gyQyuGcJX+yTS3asnvzq1Sj11DlLydKhOHTBFcF1HaIKn6pysbqUbKxBgfWxChZ565FN\nc4v7///6rY0yeJXfSoolYvTM70H/or5+02TNGli82L9ZJJnnwbnn+t/mW+zABDj00CaPVU0NrFzZ\n9mN84YX+KbTGFwJcdBF85zttr88Y07TS0lJKS0s3Ld9yyy3p6/SGTVc7jcVPGicB3VW1S6gNiDwO\nrFPVq5t5/dvApUGn98HA3ens9G7NJyM/YY+H9yB/RP5Wr9367v/y9OevEY9svuq49suxOP85hTMP\n+wEzvtzA2D7jKMkr3nQeqba+nq9mzyZRV0cCSKiSUGVD341oAiTqEo0ricoIEsviw4ICWLaMTn37\nIo5D/0iEYeXl0KOHfylvQxIQYfTuu/PrCy/kiWWvcfHsSXTN6uS/pkpO8oXRwUdnn6+rmVh0Et1z\nNv+vLPpoOnVDB7LmwrP9BIewZ6chOI6b9H7Z8m9r63r0YMHazsybt+Xxe+UVeOwxePPNzYlk990h\n6BYyxrSDdF1WewWbWxYxgktqg8dsVfVCBDoWeB+/k1yDx43AQEBV9aGg3H3A8fiX1Z7f+HRUUCYj\nCWPOD+aw4d/NX0Ws9Up2z2z/S9iBabWd+XNZH+7vP5/lVcuJuBFys3I3vQ6AgDq66YsbDxLHTid+\n9AwAsrO/xqUXB3V/mk+Lo8xbvYBYNMraykrumDHDbzUArufx67feot/GjXjV1Vy9fDmXFxeDQGV+\nAsH/sIiq/xeg4bkqn46oZc7gKMjm43rpNI9utXDbYX6wZUUeBXGhZ/WWrZBRa3I4c27RplgI6t5K\nfb2f3H76UxwRhg8ejOu6FEXy6ZlbzG23wfTg//b69XDMMX53EEB1393RrK07ZcLcSd9ame19fc89\n/WHxjdnRpSth/IHg3gtV3YaTEO0rUwmjNbH1MeLlcVD/1NbHnzrc+Jss3nm6jje/epP3vnmv4awR\n4vm/2BtSp6j/vGBdAaOeG+UnESDn0HfRoTPI/s2vKRtcxglTT/BPawFx1U3fy7csXcFz68qo8Txq\nEx7y/PM4tTUUOg4ndu20KSZVBVVygSLX2bQu+dFQ9sgZMykur+Afh4+lurqa2XNmU1NYs8U+JyIJ\nlo1atineFilIMClVTJUix6Gr67I+N8HjU3pvOjYA0ShUBlORdKlfT3WkkLv3+gNoZ7pWHOFX18om\nw3xEtreOsjK/zPHHt76t5px5Jgwbtu3vb0xol+8DswvqktclvaekdgQ7asJobNo0+P734fbbN69z\nHDj5ZMjLC1fHmjX/4IuFtxGt/A7e7z3u+d49xFSYWhZBm/hiUACJBA+X2iGX4OX02LKMRMDJoeiz\nS1rc9vlTouy9wuPqU0MG2wbxhXFq/1WL09nBO8yDnJZKK4M2KDEXlg6C3IW5ODhstfvSzPNteE22\nOJ0G5IDbx6UxVb/htK0SnqC6ddfRtlC2799EVsT/fJpGZNcYE05Vqbyx0hLGjqqsDK66CpJnen31\nVf+qosGD/WXH8c/dN/cLs6ZmAd988ys0kWDdi+v88a4O/A+Ud0PKipGNjYZUT7jIikEQzSF3UA5u\nUcT/wpPgu1D8lsmUykoO7twJV8T/x9DwEfLPXQHQ9b9z6PPCh8RG9SaS1Z3srO6bt3PVVTBkSPiD\nkZ8f3JG42cyZM/nXv/4V7v01NfDUU/z29BUcvGQc+VG/H6nhc7CpddRoXXu9NmPGDDZu3IgT4hs1\n7GdTVXnwwZcoL8/8DMfz5vmfTesz2tqyZbDffv6oPzu70tI03um9o9hZEkZTVq+GBQs2L//yl3DB\nBf7VQfn5W1+8lKx+TT2JmgSxxHriibXEvQ3EvS1vhamPr6A+sYJEeYLoiujm0zwNvUb4X1RTKyqJ\necqghg0ml/MLkVUepfc7S6FzBbrnPLy6HiAevf4Tp8v8SrzI5ktznaSfYE19GiO11YjXqKtLt/7F\nnkxc2bKyRIKo1uM1+vG/vJNQFjSCGv4pKP6ly11zuuGKuzlbJv3RpGVByI3k44qDNiTMnG7kuDmN\ndqhRh35rf4Py2qMXmr3l/9xPP5vK/AXzyW6ibyaVPPXIysrmwNEHtF7YEI36V/W1Tiju0hvXbYfm\nYor0+88jljB2Zr/+Ndx7L1RX+xdPXXbZ5tdGjvQvQU2V2xcvZmU02nIhT0ETDJk5k5zyGK5bRXH3\nV3Bkc7Op1vOo8RKb+vFjCj2zs3AQch2H4qwsSHhIbPP/s9rs6fQu/w0F0XFNbrbsrTLqVzc61xNP\nEK/cQJw41Mfgm2/goAPJrVqCo3H8zhcAJVGVYJm7lKVFDfeBbpURt/hbmV3BhtwNm/r8VxaspDar\nhuKaza0qafS3oYMj28uiuKZkq+GeJXjdUaVbbc1WidRTj3r197F/WX96VvbEpeUk2h48Vd6rfo+4\nxqy/ox2tja9lXOE49szdM9OhNGvI2t9ZwtgVeB488oh/5gX8q4SeeQa++qrl9+2Inlm9mgW1tWyM\nx3l+3Tq+OXirK6OZO/cssrJK6NSp6Xs8WrWxDH5xAzz44HZG27TyaDWfrg538NfWlLO2tjx03VlZ\n3cjN6b9p+cv1X/LErCe4/MDLufO4O9scq9kxXHHFFUyePJmhQ4f6Vx+K4DjOpudNPVp7vakyeXl5\n/OxnP6NHjx6tB9VIWgcf3FHsigmjsbVr/S6C227zl3v29G+12BZjx7b9buz2UBaL0fejj/h5//5b\nvVZS/Ro9av697ZUn4vDVAhg+fIvVO/rvZVdrKKz/nE/6fQSyuU0yf8lbPPfBVRTkdm/h3a3LiuTR\npbAfsOMfizAE4dgxP6d3N/9Xu2xj7/O2vKut7ylbvpwl06dD0tWIW/WRJb/meZv7u1ooq8F4QA2v\nvf/II4ydMIGjfvrTNu/TNQMGWMLYFXmef7qqstI/87Fw4Zad52F9/jlMmgTnndf+MbZGVfnj8uWU\nx9s2hUqo/7PRKNx5J9x44xbba6tt/RRty/sUcLwajlg6Bs/Jo97dfMGCp8qauvhWFbd1Oxvr41TE\nWr0tagcQbs/+u7qKD1ZXEXF2hfTXPuIx/3q4SKTtxyT6a7WEYZp36aUwYoT/d5dSW+s3uerqWi+7\ng1H1qKmZ33pBg6ceNbFQPc4dxksvvc3110/apvduXGOX1ZoWXHed/2N8wgT/Et6GwRIbnjuOf5fy\nTnc5ZTzuD8f73HPhyvfrBwcemNqYjNnBWR+GadGzz8Idd0Ai4Z/mSv6bSPiX+ebmwre+lelIWzdw\nIPTqFSyowj/+DtU1Lb4H8JPLiuVbnL5qXch/U6H/6YWtr51PvaTijrOwde7ox6adFRXBqFHb9t6+\nfaGgoH3jaUqXLpYwzHaor4cXX/STx46suhrmzvWTXZslEv5kIa1dQgzhxhNps5B1ht70jl5fW2T6\n33H7JCFF+IxRVBP2W3/zdj0cFjIYb6sLs9tfBTY0iDHG+MJ+L7Tl+6O968xgOcnLS+sUrcYYs+MK\nfbpsxz69tTOwYceMMcaEYgnDGGNMKJYwjDHGhGIJwxhjTCiWMIwxxoRiCcMYY0woKU0YIvKoiKwW\nkVnNvN5JRF4WkZkiMltEJqQyHmOMMdsu1S2MPwPHtfD6pcAcVR0NjAfuFBG7N6QVpaWlmQ5hh2HH\nYjM7FpvZsUiNlCYMVf0vUNZSEaBh1twiYL2qtm1c7A7I/jFsZsdiMzsWm9mxSI1M/5q/D3hZRFYA\nhcCZGY7HGGNMMzLd6X0cMENV+wD7AveLSAbmiTPGGNOalA8+KCIDgVdUdatBgEXkVWCSqk4Olt8B\nrlfVT5soayMPGmPMNtiZBh8Umh9PeDFwDDBZRHoCuwMLmyrYXjtsjDFm26S0hSEiTwHjgO7AamAi\nkA2oqj4kIr2BvwC9g7dMUtWnUxaQMcaYbbbTzIdhjDEmszLd6R2KiBwvIvNF5EsRuT7T8aSaiCwS\nkc9EZIaIfBKs6yoib4rIFyLyhoh0Tip/g4h8JSLzROTYzEW+/Zq62XNb9l1ExojIrOAzc3e696M9\nNHMsJorIMhGZHjyOT3ptVz4W/UTkPyIyJ7jJ94pgfYf7bDRxLC4P1qf+s6GqO/QDP6ktAAYCWcBM\nYHim40rxPi8EujZa9xvguuD59cAdwfMRwAz8/qhBwbGSTO/Dduz7YcBoYNb27DswBTggeP4acFym\n962djsVE4Oomyu65ix+LXsDo4Hkh8AUwvCN+Nlo4Fin/bOwMLYwDga9UdbGqxoBngJMzHFOqCVu3\n/k4G/ho8/ytwSvD8u8AzqhpX1UXAV/jHbKekTd/s2aZ9F5FeQJGqTg3KPZ70np1GM8cCmr6I5GR2\n7WOxSlVnBs+rgHlAPzrgZ6OZY9E3eDmln42dIWH0BZYmLS9j88HZVSnwlohMFZEfB+t6qupq8D8w\nQI9gfePjs5xd7/j0aOO+98X/nDTY1T4zlwXjrz2SdAqmwxwLERmE3/L6mLb/u9iljkfSsZgSrErp\nZ2NnSBgd0VhVHQN8G7hURA7HTyLJOvLVCh153x8Ahqg//toq4M4Mx5NWwY29zwFXBr+uO+y/iyaO\nRco/GztDwlgODEha7hes22Wp6srg71rgRfxTTKuDe1UImpJrguLLgf5Jb98Vj09b932XPSaqulaD\nE87Aw2w+/bjLH4tgYNLngCdU9aVgdYf8bDR1LNLx2dgZEsZUYDcRGSgi2cAPgJczHFPKiEh+w/Ao\nIlIAHAvMxt/nCUGx/wc0/IN5GfiBiGSLyGBgN+CTtAbd/hrf7NmmfQ9OTZSLyIEiIsB5Se/Z2Wxx\nLIIvxQanAZ8HzzvCsXgMmKuq9ySt66ifja2ORVo+G5nu8Q95VcDx+FcCfAX8ItPxpHhfB+NfCTYD\nP1H8IljfDXg7OA5vAl2S3nMD/pUP84BjM70P27n/TwErgCiwBDgf6NrWfQf2C47fV8A9md6vdjwW\njwOzgs/Ii/jn8DvCsRgLJJL+bUwPvhfa/O9iZz8eLRyLlH827MY9Y4wxoewMp6SMMcbsACxhGGOM\nCcUShjHGmFAsYRhjjAnFEoYxxphQLGEYY4wJxRKG2WGJiCciv0tavkZEft1Odf9ZRE5rj7pa2c73\nRWSu+NMPG7NTs4RhdmRR4DQR6ZbpQJKJiNuG4j8CfqyqR6cqHmPSxRKG2ZHFgYeAqxu/0LiFICKV\nwd8jRaRURF4UkQUiMklEzhaRKeJPSjU4qZpvBSMCzxeRE4P3OyLy26D8TBG5MKne90XkJWBOE/Gc\nFUxEM0tEJgXrbsKf0+JREflNo/K9ROS9YKKbWSIyNmiN3Bm8fqWIfB08Hywi/22oM4htlog8mFTf\nuyJyt/iTbs0Skf2T4p4RbGdaMNyMMdvEEobZkSlwP3COiBSFKNtgFHAR/iQ6PwSGqepBwKPA5Unl\nBqrqAcBJwIPBWGU/AjYG5Q8ELhKRgUH5fYHLVXV48obFn5v+Dvz560fjzzXwXVW9FfgUOFtVG88U\neTbwb/VHJd4HfziHD/ATDMHfdUHdhwPvBevvVdWDVHUUkN+Q6AJ5qrovcCnw52DdNcAlwXYOB2qb\nP4TGtMwShtmhqT9s81+BK9vwtqmqukZV64Gv8ccYAn/MnEFJ5f4RbGNBUG44/mCP54nIDPw5BroB\nw4Lyn6jqkia2dwDwrqpuUFUPeBI4Iun1pia1mQqcH/TJjFLVavXndSgMBp/sjz+W1JH4X/QfBO87\nWkQ+Fn/a1vHAyKQ6nw725wOgSEQ6AZOBu8SfxrNrEJ8x28QShtkZ3IP/yz/5dEqc4PMbjLSZnfRa\nNOm5l7Ts4U9T2SC5VSLBsuC3IvYNHkNV9e2gTHULMTaVFJoVfKkfgT+c9F9E5NzgpQ/xBxmcj58k\nDgcOBiaLSA5+i+u0oIXxCJDb0v6o6m/wj11eUMfubYnTmGSWMMyOTABUtQy/NfCjpNcWAfsHz0/G\nn++9rU4X31D8UYK/AN4ALgnmG0BEholIfiv1fAIcISLdgg7xs4DSlt4gIgOANar6KP4X/5jgpf8C\nP8c/BTUTvxURVdVK/OSgwPqgFfL9RtWeGdR9GP5ptUoRGaKqc1T1t/itmuEYs40irRcxJmOSfzHf\niX9uPnmCmJeCU0dv0Pyv/5aGY16C/2VfBPxEVetF5BH801bTg5bLGlqZ51hVV4nIL9icJF5V1Vdb\n2f444FoRiQGV+HMRgN+q6Ae8r6qeiCzBH5IaVS0XkYfxO91XsvW8J3UiMh3/3/X5wbqrRGQ8/nDY\nc4DXW9oXY1piw5sbswsQkXeBa1R1eqZjMbsuOyVlzK7BfvmZlLMWhjHGmFCshWGMMSYUSxjGGGNC\nsYRhjDEmFEsYxhhjQrGEYYwxJhRLGMYYY0L5/5k48fcCO5+6AAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEPCAYAAABRHfM8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8HNXV8PHf2aLebMuWezc2YGxjUwwYECQQAyHUhFBC\nKAkh9EASSh4ezBNCII0SktAJTuGB8ITmlw4WxcTg3nsvkpskW13a3fP+MSN5La+kka3dta3z/XwW\ndmfu3jkzXu3ZO3fmXlFVjDHGmLb4kh2AMcaYg4MlDGOMMZ5YwjDGGOOJJQxjjDGeWMIwxhjjiSUM\nY4wxnsQ1YYhIqoh8KSJzRGSBiNzXStljRaRBRC6MZ0zGGGP2TSCelatqnYicpqrVIuIHponIO6r6\nVXQ5EfEBDwHvxTMeY4wx+y7up6RUtdp9moqToGLdKXgz8CqwNd7xGGOM2TdxTxgi4hOROUAJ8IGq\nzmi2vjdwvqr+BZB4x2OMMWbfJKKFEVHVo4G+wPEickSzIo8Cd0a9tqRhjDEHIEnkWFIici9Qpap/\niFq2uvEpkA9UAdep6pvN3muDXhljzD5Q1Q75IR7vq6TyRSTXfZ4OnAEsjS6jqoPdxyCcfowbmieL\nqLL2UOW+++5LegwHysOOhR0LOxatPzpSXK+SAnoBL7pXQfmAl1X1bRH5EaCq+nSz8taKMMaYA1S8\nL6tdAIyNsfypFspfE894jDHG7Du70/sgVFhYmOwQDhh2LHazY7GbHYv4SGin9/4QET1YYjXGmAOF\niKAHQ6e3McaYQ4clDGOMMZ5YwjDGGOOJJQxjjDGeWMIwxhjjiSUMY4wxnljCMMYY44klDGOMMZ5Y\nwjDGGOOJJQxjjDGeWMIwxhjjiSUMY4wxnljCMMYY44klDGOMMZ5YwjDGGOOJJQxjjDGeWMIwxhjj\nSVwThoikisiXIjJHRBaIyH0xylwmIvPcx+ciclQ8YzLGGLNvAvGsXFXrROQ0Va0WET8wTUTeUdWv\nooqtBk5R1Z0iMhF4Bhgfs8KGBggG4xmyMcaYFsT9lJSqVrtPU3ESlDZbP11Vd7ovpwN9WqysurrF\nVcYYY+LLU8IQkT4icqKInNL48LoBEfGJyBygBPhAVWe0UvwHwDstrdSvvmpplTHGmDhr85SUiDwM\nXAIsBsLuYgU+9bIBVY0AR4tIDvC6iByhqotjbOc04GpgQot1vfYWcsYZXjZrjDGmg3npwzgfGK6q\ndfuzIVXdJSJTgYk4yaeJiIwCngYmqmpZS3VM+ugjfJMmAVBYWEhhYeH+hGSMMYecoqIiioqK4lK3\nqGrrBUTeAb6tqpXtrlwkH2hwO7TTgfeAh1T17agy/YGPgO+p6vRW6tLar59H6gevtzcMY4zptEQE\nVZWOqKvFFoaI/BHn1FM1MFdEPgKaWhmqeouH+nsBL4qID6e/5GVVfVtEfuRUoU8D9wJdgT+LiOAk\nmONiVVYWqaWnxx0zxhjTsVpsYYjI91t5n6rq5PiEFJuI6LpTzqD/J+8ncrPGGHNQS0gLQ1VfdDd2\nq6o+1iyAWzti4+1VvSuut40YY4xphZfLamO1NK7q4Dg8qa3rkCRpjDFmH7TWh3EpcBkwSETejFqV\nDZTGO7BYdgWqkrFZY4wxtH5Z7RdAMZAP/D5qeQUwP55BtaQ0uCsZmzXGGEPrfRjrgHXACYkLp3XV\nvoZkh2CMMZ2Wlzu9K2g2/hOwE5gJ3KGqq+MRWCxhaf2eEWOMMfHj5bKjR4GNwD8BAb4LDAFmA88D\nhfEKrrkIkURtyhhjTDNerpL6lqo+paoVqrrLvdnuG6r6MtAlzvHtIRyxFoYxxiSLl4RRLSLfcUed\n9YnId4Bad11Cv8HVWhjGGJM0XhLG5cD3gK3AFvf5Fe7YUDfFMba9qITbLmSMMSYu2uzDcDu1z21h\n9ecdG04bsfhDidycMcaYKF6ukuoO/BAYGF1eVa+JX1ixRbCEYYwxyeLlKqk3gM+AD9k9gVJS1Gt9\nMjdvjDGdmpeEkaGqd8Y9Eg825Gxj6pqpnDbotGSHYowxnY6XTu8pInJ23CPxIK80g5LKkmSHYYwx\nnZKXhHErTtKoFZFdIlIhIkkZ1CkQFqobqpOxaWOM6fS8XCWVnYhAvPCjVDXYiLXGGJMMbbYwxHGF\niNzrvu4nIjGnUI03QQlF7EopY4xJBi+npP6MM2LtZe7rSuBPcYuoFQK0NKWsMcaY+PKSMI5X1Rtx\nhwNR1TIgxUvlIpIqIl+KyBwRWSAi97VQ7nERWSEic0VkTIv1KWhiRyMxxhjj8nJZbYOI+HHHjXJv\n5PM0qJOq1onIaapa7dYxTUTeUdWvGsuIyFnAEFUdJiLHA08C42NWGAkSjth4UsYYkwxeWhiPA68B\nPUTkVzjDgTzodQOq2nhZUypOgmreRDgPmOyW/RLIFZGCWHV1rY2wZau1MIwxJhm8XCX1DxGZBXwN\npxvhfFVd4nUDIuIDZuHMofEnVZ3RrEgfYEPU603usi3N6+peF6a21hKGMcYkQ4sJQ0S6Rr3cCrwU\nvU5VS71sQFUjwNEikgO8LiJHqOrifQn2bzsbWPLKB0xaXkthYSGFhYX7Uo0xxhyyioqKKCoqikvd\n0tJVRyKyBuf0kbiLGgu6Fyvp4HZvzLk0t0pV/xC17ElgqjshEyKyFDhVVbc0e6++3T+Vx6+/l3fu\n/kV7N22MMZ2SiKCq0nbJtrXYwlDVQftbuYjkAw2qutOdP+MM4KFmxd4EbgReFpHxQHnzZNHIr3ZZ\nrTHGJIuXq6T2Ry/gRbcfwwe8rKpvi8iPcFopT7uvzxaRlUAVcHVLlfkjELGEYYwxSRHXhKGqC4Cx\nMZY/1ey1p5n7/BHsslpjjEkSL5fVHjACCpGItTCMMSYZvIwl9TcvyxLBTkkZY0zyeGlhHBn9wr1j\ne1x8wmndkF0hyiPrk7FpY4zp9FpMGCJyt4hUAKPceTB2ua+34kzbmnBd68LUR3YmY9PGGNPptZgw\nVPXX7lwYv1XVHPeRrardVPXuBMbYpCrgg3BSpxU3xphOy8vQIHeLSB9gQHR5Vf00noHF4lclgiUM\nY4xJhjYThog8BHwXWAxN39YKJDxhBCNQH+87R4wxxsTk5ev3AmC4qtbFO5i2+FXZpn5qaiA9PdnR\nGGNM5+LlKqnVQDDegXgRUIgQYcOGtssaY4zpWF5aGNXAXBH5CGhqZajqLXGLqgUhgQx/hF27Er1l\nY4wxXhLGm+4j6QIKZy8voaIi2ZEYY0zn4+UqqRfdkWb7q+qyBMTUon/3z2VgaRV1Se9NMcaYzsfL\n0CDnAnOBd93XY0QkKS2OLakBAqrU1iZj68YY07l56fSeBBwHlAOo6lyg3ZMndYSwD1I0ZAnDGGOS\nwEvCaFDV5uNxJGWM8bD6qA+vY/bsZGzdGGM6Ny8JY5GIXAb4RWSYiPwR+CLOccUU2FGARsL4/cnY\nujHGdG5eEsbNOCPW1gEvAbuA2+IZVEsiVdkEItAQsiHOjTEm0bxcJVUN/MJ9JFU4lOomjDDxn13W\nGGNMNC9jSR0D3AMMZM/BB0fFL6zYwuonqFDXEMIShjHGJJaXb91/AD8DFtDOzm4R6QtMBgrc9z6j\nqo83K5MD/B3oD/iB36vqX2PVtzNSS3eFhnCoPWEYY4zpAF4SxjZV3df7LkLA7ao6V0SygFki8r6q\nLo0qcyOwSFW/JSL5wDIR+buq7pUVwv4AAYUBmz7AGRPRGGNMonhJGPeJyLNA87Gk/t3WG1W1BChx\nn1eKyBKgDxCdMBTIdp9nAztiJQuAUGZXghEoKJtJOHyBXS1ljDEJ5CVhXA2MwBmxtvGUlAJtJoxo\nIjIQGAN82WzVE8CbIrIZyAIuaamOuoaeBCKwvaqGJ56AW29tTwTGGGP2h5eEcayqDt+fjbino14F\nblXVymarvwHMUdXTRWQI8IGIjIpRji/qZ7F+I0RyPyN7ZhFQuD9hGWPMIaeoqIiioqK41C2qrd/T\nICIv4MzrvXifNiASAKYA76jqYzHWTwF+rarT3NcfAXeq6sxm5fT69Ns4dcRjNIw/hxmBt3j88ea1\nGWOMiSYiqKp0RF1eWhjjcebDWIPThyGAtuOy2ueBxbGShWsd8HVgmogUAIfhTNq0lzABAmEfW/Kg\ndrvHrRtjjOkQXhLGxH2tXEROAi4HFojIHJy+j3uAAThJ52ngAeCvIjLffdvPVbU0Vn1h/PgjEOq2\ng7pN+xqVMcaYfeElYcSarsjTFEbuaaZWr2VS1WKcfow2hTRAICz4M8uor/fyDmOMMR3Fy1hSs4Ft\nwHJghft8rYjMFpFx8QyuuRB+AmEfWX2XEgrZLErGGJNIXhLGB8DZqpqvqt2As3A6sW8A/hzP4JoL\naQB/2E8o5Gfp0i2J3LQxxnR6XhLGeFV9r/GFqr4PnKCq04HUuEUWQ1h9HLexjrrqTPLzp1NVlcit\nG2NM5+YlYRSLyJ0iMsB9/BzYIiJ+EjyR0mLfYKqDQuWOPnTvHmHr1kRu3RhjOjcvCeMyoC/wOvAa\n0M9d5ge+E7/Q9lZDKsGIsrquloyMempqErl1Y4zp3LzMh7EduFlEMlW1+UmglfEJK7ZqTSOjQQhF\nhMyMOksYxhiTQG22METkRBFZDCxxX48WkYR2djeq0TRSwhGqQhECgXrefz8ZURhjTOfk5ZTUIzj3\nSewAUNV5wCnxDKoldZqKP6JEGuCMM/7F736XjCiMMaZz8pIwUNUNzRaF4xBLm+obQtQH/ETW9iE7\n+xMiEZvb2xhjEsVLwtggIicCKiJBEfkp7umpxPOBKv6qFERSELGb94wxJlG8JIzrcWbF6wNswpnT\n4sZ4BtWSzMxsQj7h/KVr8fnS8fut19sYYxLF61VSlycgFg98vDhmMPlVtVEJo0uygzLGmE7By1VS\nvxGRHPd01Ecisk1ErkhEcHvzO30YVLCj3gfU08Z0HsYYYzqIl1NSZ6rqLuCbwFpgKPCzeAbVEhEf\nWf5eBLSBZ1eW4/crkYTea26MMZ2Xl4TReNrqHOBfqrozjvG0wU92sBdDt/VnW00DgYASCiUvGmOM\n6Uy8JIwpIrIUGAd8JCLdgdr4htUSP+HcLPyRAFWhCMFgxBKGMcYkSJsJQ1XvAk4EjlHVBqAaOC/e\ngcXmQwUyq9KoCkFtrbJ2bXIiMcaYzsbLjHtET5nqjieVlIHFVaGUUsLBCHVhGDkyYuNJGWNMgni6\n0/tAEQikEPYp1dn1KGqd3sYYk0BxTRgi0ldEPhaRRSKyQERuaaFcoYjMEZGFIjK1pfp8viAKIICC\nz6eEkzJIiTHGdD5tnpISEcG5cW+wqv6PiPQHeqrqVx7qDwG3q+pcEckCZonI+6q6NKr+XOBPOJfv\nbhKR/FaiQd3/KkIgELGEYYwxCeKlhfFn4ATgUvd1Bc4XfJtUtURV57rPK3HGoOrTrNhlwP+p6ia3\n3PaW6/OhqqhARO2UlDHGJJKXhHG8qt6IeymtqpYBKe3dkIgMxBmH6stmqw4DuorIVBGZISLfa6kO\n1cYWBqCC3xe2FoYxxiSIl6ukGtz5u53uA+c+jHb9rndPR70K3Oq2NJrHMBY4HcgE/iMi/1HVvWbz\nq6l5mPcXL2Zp/Q7q1ig9QpsIh0e3JxRjjDmkFRUVUVRUFJe6vSSMx3Hm8u4hIr8CLgb+y+sGRCSA\nkyz+pqpvxCiyEdiuqrVArYh8CowmxvSvqan38PXDV3Dsug28ObCUzPLN1sIwxpgohYWFFBYWNr2+\n//77O6xuL6PV/kNEZgFfwzkbdL6qtmc+jOeBxar6WAvr3wD+6LZiUoHjgT/ELirkB4PUqaJAqq/E\n+jCMMSZBvFwl1RXYCrwUtSzo3vXd1ntPwrnCaoGIzME5rXUPMABQVX1aVZeKyHvAfJyZ/J5W1cWx\n6quoyGHH5v4MklVO/daHYYwxCePllNRsoB9QhtPCyANKRGQL8ENVndXSG1V1GuBvawOq+jugzRm6\nR42aT0VlFj3TUogAfl+9JQxjjEkQL1dJfQCcrar5qtoNOAuYAtyAc8ltwmRlVRGOCL1Sgu7VUiFe\ney2RERhjTOflJWGMV9X3Gl+o6vvACao6HafPIWH8fqfvwicCwNChDbwRqxvdGGNMh/NySqpYRO4E\n/td9fQmwxe2kTmiXs88H4YjgQ4ko9OsbIicnkREYY0zn5aWFcRnQF3jdffR3l/mB78QvtL35fBDG\nh4h7Uwgh68MwxpgE8XJZ7Xbg5hZW73WvRDyJQCQi+N15vGs/7Mo1pUvZ+kpXenynRyJDMcaYTsfL\nZbXdgZ8DRwJpjctV9fQ4xhWTzwcRFUQgLEpx5hJq1U/JiyWWMIwxJs68nJL6B7AUGATcD6wFZsQx\nphY1JgyfKhGBbQPm8XmwB6Vvl9Kwo83bQowxxuwHLwmjm6o+BzSo6ieqeg3OuE8J5/e7LQz3dfdh\nq1iSWUmwe5Ctr2xNRkjGGNNpeBp80P1/sYicA2wGusYvpJb5fLC5eCtSAPUaoG/fempz1pJ/aj4V\nMyuSEZIxxnQaXloYD7iTHN0B/BR4FvhJXKNqwfDhQynbVYGgRBBUIRIsJ2d8ToIv8DXGmM6n1RaG\ne6/FMFWdAuwETktIVC3o3j0fxQcRdeODY459A/GPQ8OazNCMMeaQ12oLQ1XD7J5pL+n8fnEShipo\nhKrNg7ng5A9YUfUGGrKEYYwx8eTllNQ0EXlCRE4WkbGNj7hHFoOTMPxuC0Op2TSa7b566of83FoY\nxhgTZ146vce4//+fqGVKEq6U8vsBclD3lNRQ/9F8f+NrnNbbz7aKbYkOxxhjOhUvd3ontd8i2sCB\nEOZkNm38GDREycyprHhiAwtnDqK2ti7Z4RljzCGtzVNSIlIgIs+JyDvu6yNE5Nr4h7a3884Dv/8Z\nckuW4688kXk1KRTkdsPnU8L1dkrKGGPiyUsfxl+B94De7uvlwG3xCqgta1JmkRcuRSsyWLA2Gwkr\nIurM1WeMMSZuvCSMfFV9BfdOB1UNkcSv54pAKRoMkpmi1Pn9yK5KxBchsNFLd4wxxph95SVhVIlI\nN9wRxUVkPM49GUnhDwTQLl3oWq/UZGZAXQM+gdSNfqb1nEb5J+XJCs0YYw5pXhLGHcCbwBARmQZM\npuXhzvcgIn1F5GMRWSQiC0TkllbKHisiDSJyYasB+3xE8vLoUh9xWhh1dYQjwsIp68k9IZe6zdb5\nbYwx8eDlKqlZInIqMBwQYJmqeh0aNgTcrqpzRSQLmCUi76vq0uhCIuIDHsLpK2mV3+8nkpdHt9oI\na+r7sr0kRESFhvQGfBk+GyLEGGPixMtVUvNx5sOoVdWF7UgWqGqJqs51n1cCS4A+MYreDLwKtDnk\nbFlZGXWhELfPX8q23E289dhqZ0ypSATxSdM9GsYYYzqWl1NS5+K0FF4RkRki8lMR6d/eDYnIQJyb\nAL9strw3cL6q/gWaRi5v0ZgxY3ilf3+6NwgFPer5y2cjiaiPSCQEPuyOb2OMiRMvp6TWAb8BfiMi\nw4B7gYdx5vT2xD0d9Spwq9vSiPYocGd08ZbqmTRpEgUFBfzmvff4aV4qvfpWoMWrSQuGSKnbivjE\nTkkZYzq1oqIiioqK4lK3qLb9i1xEBgCXuI8w8LKq/t7TBkQCwBTgHVV9LMb61Y1PgXygCrhOVd9s\nVk5VlfXr13PXxIncs3UtP/6fy6m78Tp+/I+zyOoxmKP+dzI543Po/YPezTdjjDGdkoigqm2evfHC\nSx/Gl8BrOC2Kb6vqcV6Thet5YHGsZAGgqoPdxyCcVsgNzZNFtP79+3PGt7/NiNIaHn90CnUp2bw3\nbSRBKbcWhjHGxJGXu92uVNVl+1K5iJwEXA4sEJE5OPdy3AMMAFRVn272Fk8dEIedeSZjvniaLz/f\nQS2p7CzPIM+/gqrhk8mK3LAvoRpjjGmDlz6MZe7UrEcCaVHL/6fldzWVmUY7+jrc+cLblJ6ezmaf\nEgiFqZVUqnZmsrr2bI7K2mxDhBhjTJx4OSX1JE7fxc04/QzfxmkhJE1WVhblxVsIhiPURYIEgbpw\nOvjCdlmtMcbEiZfLak9U1SuBMlW9HzgBOCy+YbVu2LBhdBl0JGGBui6roV5ZudoH/rD1YRhjTJx4\nSRg17v+r3XsmGoBe8QupbSJCr6zRBCOQHtzK0AFZrFnrIyIha2EYY0yceEkYU0QkD/gtMBtYC/wz\nnkF5MSw7m+JMH4N9q1m96lwUob7BWhjGGBMvXjq9f+k+/T8RmQKkqWrSRqttlJ+ezpq8AMOGLKB6\nQxf8E3xU1YRZvlSpXAKHH57sCI0x5tDipYXRRFXrDoRkAdA9PR0CPnYWrKM2UEXvPkJlTYj334NL\nLkl2dMYYc+hpV8I4kASDQXxkUhNYwOLBi+mbWkP30UVc8OP/YteuZEdnjDGHnoN2mrqsrCwqSirp\nFp7Af3LTeSz3Yh5/J48uR3xA+fYQf/lLABHw+eDUU2H48GRHbIwxB7cWx5ISkbGtvVFVZ8clohY0\njiXVaO3atSwZMYLAUUO5clQhPS49mtvXZDMw/WaOvamC6kgBi/pNZFVFAQUFcM75QbjiChiQ1FtI\njDEmoTpyLKnWEsZU92kacAwwD+fGvVHATFU9oSMC8Kp5wgiHw5yZkcFH9fXcdPpE/nrdKM4N9+ZH\nPExO5ijG+m+CmTOZMwfWroULQv+CPn3g/fcTGbYxxiRVQgYfVNXTVPU0oBgYq6rHqOo44GhgU0ds\nfH/4/X7mZ2fz0biRHFExj+P7HMO6fOiyfBL1tbXwzW/CpEmsuHwSv8uaxPQrnkDr6pMdtjHGHLS8\ndHoPV9UFjS9UdSFwQFy0GkxJoaLfBMKhClJ9AeojETIG5hKR2qYyY8ZA9+5w74PprF1S00ptxhhj\nWuMlYcwXkWdFpNB9PAPMj3dgXgSDQYYMyiVALQFge00ptZEIyu6WxGGHweuvwz0PZJC2fQM88QTU\n1rZcqTHGmJi8JIyrgUXAre5jsbss6YLBIPlds0gJC7XraqkO1TFz2zzCGcVs3vwM0X0eI88bwr9S\nvwf33w/L9mm0dmOM6dTaTBiqWquqj6jqBe7jEVU9IH6iB4NBIn4/WaGufHRfASM4hY9XrSDy/05j\n5crbWb1698yvOb0yubX2Yban94OwjYFujDHt5WV482Ei8qqILBaR1Y2PRATXlrq6OqbPmcMli7dw\nbN4iZlQV8Pqpp6MvXkd//kJJyV+byqamwj33QE2DH0Kh5AVtjDEHKS+npF4A/gKEgNOAycDf4xmU\nVzfddBM/nTqVVXl+xlUv4O9DRtLQaxCLhm4go+Y4IpEaiotfoL5+OwDdukEYv7UwjDFmH3hJGOmq\n+hHOPRvrVHUScE58w/Lm5ptv5m+vvcasPhkEwqX09KVzSl4XaoNhQsUZ9Oz5A9as+QXr1jmTA6ak\nWMIwxph95SVh1ImID1ghIjeJyAVAVpzj8iQYDDJhwgR8mRmk+XZx9bUNlE3NY32fclZcv4pua+9l\nyJDfs3PnNDZseJT09B2WMIwxZh95SRi3AhnALcA44HvA971ULiJ9ReRjEVkkIgtE5JYYZS4TkXnu\n43MROao9OwDgT8vm2pIPKPtWOjMrjuSP435C4d2FXDXnKnIyTyIv71Q2b/4TOTlF1IUDljCMMWYf\neLlKaoaqVgLlwM2qeqGqTvdYfwi4XVWPxJna9UYRGdGszGrgFFUdDTwAPOM9fEfleT8mryGbze+P\n4YasYpgU4fK1rzBr0yy+zF5N3tJ7yM4+nh49qqmsthaGMcbsCy9XSR0lInNw7sVYJCKzRGSkl8pV\ntURV57rPK4ElQJ9mZaZHzbExvfl6L3wFBTxQWEiwdCv/9aMI/j7LWJdzFCU969h4XQ5zb1mG+NLp\n2XMHFTV+zv5GmNxcqKxs75aMMabz8nJK6imcVsIAVR0A3AE83d4NichAYAzwZSvFfgC80966MzIy\n2BqJwIYNpM2cS9q4yXz1fF9o2MnPDr+WHbuqmV7bleLin3DGN/y89XqYnj3hsstg/fr2bs0YYzon\nL/NhZKpq48i1qGqRiGS2ZyMikgW8CtzqtjRilTkN5w7yCS3VM2nSpKbnhYWFFBYWApCTk8M7n33G\nxz170vWKa7m0ey3/Tr2fmTcv59x/nsuV13+Tsx+8gFtvEAj48H86ldfu6cGlfziWJUugf//27I0x\nxhy4ioqKKCoqikvdLQ5v3lRA5DVgNvA3d9EVwDhVvcDTBkQCwBTgHVV9rIUyo4D/Ayaq6qoWymhL\nsYbDYebNm8e2Tz4h68UXGTt/PkPSVrC5egihSIgb3vwLMz78F49eOIMJGx7D/9K/YetWzu0zm+uu\ng3PP9bInxhhz8OnI4c29tDCuAe4H/u2+/sxd5tXzwOJWkkV/nGTxvZaSRVv8fj9jx46FsWOZMWEC\n5ccdD3XKDXfewLgTxtGnby6v5KwhUuWj/pzzSR9/Kpx7LikpUG8jnhtjjCdttjD2q3KRk4BPgQWA\nuo97gAGAqurT7ui3FwLrcCZoalDV42LU1WILI1ooFKKmRw+OKJtB9fjjKJ1eyrEPHss8XUZ9wy4C\n4iMrEOTcZXWsKfgh1467mAsm5pCRMYJgMK/jdt4YYw4AiZpx7y2cL/iYVPVbHRGAV14TBoAOHMjg\ndVNZ0dCfY04ax/La5eQdcw63rMnlnAeG8mX1v/ly7gzeqg9yff/BfGNINT16XMaQIQ/FeS+MMSax\nEpUwTm3tjar6SUcE4FV7EgZDh3LE+nd5/tOhlFd+wgPP/5JFy7cxcsUQvvXXB/nZBSNgwgSOOUWY\n9drtbPhgPTU1qxg27PH47oQxxiRYQvowGhOCiIxT1VnNAvhmR2w8bvx+Lv12iAsvhG3bTsXvP5Vw\nOMTnITjiwnVsfXkrPdLSOKxPhLlpNbz+egojRtQzbFiyAzfGmAOXl/swnom+UU9ELgXujV9IHSAQ\n4N57wmzeDA0NzgR7Tz03Gfr+imlHBvngv5fyYOBWPvFlE7nwWv6W/h7/qdya7KiNMeaA5iVhXAxM\nFpERIvJD4AbgzPiGtZ/8e895kZeVR0ppKWv98wlc4ePEogwm/2k7Vwy7kozQLupyKpIUrDHGHBy8\njCW1GvgApWh3AAAcYElEQVQuzmW1FwFnRg3lcWAK7D3A4Pjx4ynoFqZq/ln8bXU2/oIUjg5mcvYb\nX1BUMhU/dSzcupiq+qokBW2MMQe2FhOGO7rsfBGZj3OXdldgEPClu+zAVV8P27fvsah379489tjX\n6Hvk1fy/F0bz/rYUfrXzQlLnl+MXgXANJ7z7Wy769Hn+WlzMFrtBwxhj9tDajXsHdsd2a3JyoKRk\nr8Xp6ekc0WcLl54N06aMYtXakQR65ZMVuJbUHQHGDTmPtVXbeXTjRqbt2sV/DxhAv7S0JOyAMcYc\neFq7SmqdiPiBRarafEjyA9vhh8e8hTs9PZ0FCxbw3ntQfHg5z/y2jLk7ehGIZPCvtavw7fgdJRWL\nGNHv67yROZY1m/P5Wb+WB5o6utfR9MjsEc89McaYA0arQ4OoalhElolIf1U9eMZ1TU2Furq9Fo8Y\nMYLi4mKuv/56wmvCbNzRjaW7rqb6n/9gee4Sgjlhgke9RknaDMo2fMLCvGH8YVPsyQXXlq/l/OHn\n8/AZD8d7b4wx5oDgZSypLjjzYHwFNPUIJ/pO73ZpIWEUFBQwZcoUVqxYQUV1BXUp86lIOY6vPvmU\nHj1u5NNPZzBx4i2sKonQ4+9fRwdewYCG6Tx97t6juT8580nmlsxNxN4YY8wBwUvCOLDvuYglNRXe\neAO2bNlz+Te/yTnnnAPA1n9tZfrSd/nZ9ink5x9FINBAQcEy0tOP5dsX+zjquF+ytGctz65/ljWP\nfcptl48g4AtwVGYmvVNTyUnN4dXFr3LFqCvond2bwV0GJ2FHjTEmcTwNPigiBcCx7suvVDXhd7m1\na2iQRYtgypQ9l82ZA6rw6KMA7HhnB8v+PIvLZl3F2Nxc3qmZR219P/YePssPJy2ly0hQfzoDMlP4\nbu/uhNjJC1XnUa9ViPh45WuzGD0a0tP3e1eNMabDJGQsqaiNfQf4LVCEM5rsycDPVPXVjgjAq3Yl\njFi++gouuAAiEQAidRHC1RE0WIs0NPD8mSF8abnkrcgiWBHEFxE+HzSI/12Rz46Ui8hNG0V11QAq\nRu7A51dSI36Oqywge/ASPs6/kNRnl5CSAn/8I1x0UQfttDHG7KdEJ4x5wBmNrQoR6Q58qKqjOyIA\nr/Y7YTRT+kEpiy9ZTOaoTEZ9diLLfn0bFeNfIqQ7yfOPo+uyXHYuX82vS3KZtWoB9//hIgYFHuXP\nf86gMqOWt74xm8F3ncjCTWvIuvF0dt6/hh/8AObPh5kzOyxMY4zZLx2ZMLwMDeJrdgpqh8f3HdDy\nCvMY+fpIBk4aiAT96OQxjPDPY9ToIvz5A9jZbxf03cGJJ6YgdbXk1vyLQYP+w7PPwuO/85GRp8ya\nBS/9LY3qulp8Pvjxj0E65J/FGGMOPF5aGL8FRgEvuYsuAear6p1xjq15HB3awogWOWIUa/3Xsnnj\nOI54+Qi6ntkVPv4Yvvc9Zh57LOPffIOsbEECGaSkZZLbrQsr62F4qhDyhVl57gpSw2nk5HSlrAx6\n9IDDuh3G1O9PbXvjxhgTRwmdolVVfyYiFwEnuYueVtXXOmLjBwrfmJEM7reZqmWnE65yx6AaPx5+\n+UuOCYf5LKWS7SM+ZcOR8PK63uys9KO9rqG0ch6qim/nGOqefI0d0oecjOeZviCXEX8aweDHBvPO\n5e8wPH94cnfQGGM6QGsTKN0GfAHMVtVQzEIJFM8WBi++CFddRU2XIwl0CRAclA8jRsCgQXDHHfDJ\nJ9T+/ufM/68Khg9/jpyc8Ty1eTNl7oi4szYs5uM186l4LUDotVsIBreS0iVEyhXf558/vouJQyfG\nJ25jjGlDombc+x1wIjACZ07uaTgJ5AtVLfUYaF9gMlAARIBnVHWvae1E5HHgLJwbA69S1b3uiItr\nwgBYsYI1t80m++gs8geVQHk53H8/7NoF06fDrbcy96lsgsGuHHnkK3u8ddHWRUz8f3exsdt3OOzZ\nOcjyVEKhUawa+xoXXhxmRLeWR1Y5quAovjvyu/HbL2NMp5boq6RSgGNwkscJ7qNcVY/wEGhPoKeq\nzhWRLGAWcJ6qLo0qcxZwk6qeIyLHA4+p6vgYdcU3YQCrf7Ga9Q+uJ21QGogybt05BMNlTetDvbqz\n7IfbCKR0IT3rcHyBDNLGnkV4cG92hkNcv3w56Vs/ZPlHIda/2UB9yiMw6GP8qcUABLMXkpK1uKk+\n9SkV/Svo9UUvuo7oynM/f46xvcYS9Afjup/GmM4j0QkjFydJnOT+Pw9YoKpXt3tjIq8Df1TVj6KW\nPQlMVdWX3ddLgEJV3dLsvXFPGKpK3cY6tEHRsELY+b9u3c6y09/myAkfkloA9bXFEG4gVFFC5rRN\nlF4yhEh6gM8v6sOu7M1k7VjKtZ9eSfnHXfjO+N7U1WWwcc1hbC/pwwlf+397bPPd7r+jQkoJh8ME\nUgOM6TmGGT+cEdf9NMZ0Hok6JfU0cCRQAXwJTAemq2pZzDe0tSGRgTg3/41U1cqo5W8Bv1bVL9zX\nHwI/V9XZzd4f94TRmnkDX6bvhkfp5mt2k0Uk4txBnp0NP/kJ3HUX85adx8qKtby89lweOa2QvLwh\nrFgxjGuvDTTeNwhARQWsWgWnnLKVRSv+TfnRywgf80d81T0hlI6EU/Flb0WCdYgvBL4wEY0wtOtQ\nMlMy8blXN4sIgvN5GJE/ghH5e54C8/v8/GDsD8hLy4vrMTLGHHgSdZVUfyAVWAFsAjYC5fuyEfd0\n1KvArdHJ4mDiO+oI9PG34Fv5e6+cOxdOPRUefBA++YQjr/ku5UfOYVDGKtavf4fVqzcxbNjjzJp1\n5R5vU4W334bPP69kwYIgF+XehlRcSoNUURUoZvOOetbNFSIRpaZW+d7VNZSHN7OhbAOKEkIBRd3h\nTKp0G3/f9BLpdGnaxrj8U9isc1lXvo6RPUbSnN/nZ1TBKHpn96ZvTt8OPWbGmENLa/NhTBQRwWll\nnAjcAYwUkVLgP6p6n5cNiEgAJ1n8TVXfiFFkE9Av6nVfd9leJk2a1PS8sLCQwsJCLyF0CEkRIvWR\n2CvHjIF334W774b58wncNp/eV17Jh7nnc9LTlYz6zqvo0jegvgL69YMjnO4fAc4ZDuPzd7B1+t/5\n99t38PQzz7iVBoEgxx57LAMHDuSBB+BT9+h1bSHGbij5aStBnEuD13d7gaL/NBCc+k/+orFjV5RI\nQwrkrWHAfYNIDaTgEx+CNLVcfOKL+VxE9igLcPrA0xnba+we20gNpHLOsHOayhhj4qeoqIiioqK4\n1O118MG+OH0YJ+LMxNdNVT2d3xCRycB2Vb29hfVnAze6nd7jgUeT1endmkXfXUT+efkUXFrQcqEN\nG+D222HRIuo2bWJTZibp1fVkpFUT8NURUb8ztmEwAO4pJB+C+HPx1zSQunUbNX4/F59xOtUpKVQV\nl5CRkcmrr/6fU9bno2vXltLF3p6a+RT/XvIaPzr6pqZlJ/U7mdzU3D3KNTRAXp5y2OF1dMkPIyji\nU4JB5f5HNpLXLUREI6g6rZno56rua5SVpSt5c9mbTS2eRh+v+ZgfjfsRPTJ7NCWdxsTT9DxqeW5a\nLhcdfpElGGM6QKL6MG7BSRAnAg24l9S6jwWqLfxk3bOOk4BPcS7LVfdxDzAAUFV92i33BDAR57La\nq5v3X7hlkpowlly1hIoZFaT2S0UC0vRIH5JO7oRcEOcfBh8gEFLlrW2l/OGvQv/v1HLcYfPIS68i\n/Z1/QUDQC8+jNlJPZsUUhjdMpU7TQeGkq2pZ8pMUKnpDWbHwqwdqaQhl4ZMAZeXlDD/sMLp3786Z\n11zDVddc02rMc0vmcu/Ue2k8bst2LGNwl8GMLhjNyB4juXL07lNky5fD+vXOabJIxHncfju88IJz\nD+P+eHnhy3y16aumZNOYcBoTTfNlLy96mQe/9iCZwcymOhqTxykDTmFo16H7F5AxnUiiEsYfcO+9\nUNXijtjY/kh2wqjbXEfV4io0pE2PUHmIHVN2EKmNOKkw4lxp1ZQaFUo/LuOV75/MK2/4aWhw7gO8\n71cpUFkJKSl7b+iqq+Djjymuryfd5yMlUo5KChFfJhqJEGpoIKesjK3AvIICXu7vTCGrwKLcXCQQ\noF9qasx9qEitoDinmJA/xOpuqxlYOpDBgwczelTscSRf+ZcztUhubszVBDWDE0K/wNfCmc1u3eDn\nP2/tqMb2yH8eYeHWhQB7tFaKK4t5d+W7pPj3PG6/OPkX/Pep/93+DRnTCST0stoDRbITxr76vOvn\nHL/ieILdgjz+uPNL/okXs2HTJsjJafF9zxcXM7OighEVT3F45ZOEJKNpXUOlUv5yNacW7Z63vNuO\nCEuHByjp5iPdv3tsyMarp/z+TPLyCgHnS3h59SrKK3eyeVMx/Qf0ayqdnZ1JwO8HYNeuIBUVQZyp\n3aO4H72NgS8YW3cdaeTusULEaal8+lkWAb+ifj/LZTh1kuaW2f3ZVYT6eqdb57e/dRJUUyUxNERC\neySR2cWzufPDu2KWjf4TSQukcfeEu517XFo61RW1PDslm9E9R8cum5ICBQU20uTBJDUVundPdhRJ\nYQnjIPJF7y8YN3Mcqb1TeeEFePxx+Hx5d/58wyKqMnvg98NNN+2dO9zvbFTD1Ndvc5dG7/+ez+WT\nL/C9+xH/KNlCn9RUgj5pKpIb8NOj+j00UkW0+nplwcIQGnEK1tQqVZXqbnd33YHA7ivDNGpl2cBy\n/PU+fGGf8yXe7J8npSwNf00q3cIN9Aw1EGpoQIFUNyuIQkpqCkcecRTTv3SuTB40EPJyW/h3jvXv\nr817TGKXXb9zPZX1lUhLLepmr8tqyjm+z3FNCXePslWVULpPV5cfMDpdqtu6FebNc0YG7WQkP98S\nxsFi+uDpjP5wNOmD09m4EZ57Dm59ZCAV2b0I+1PZuhWqa/Z+X3mfkdRkdmNOj4ks63pC04/Z6P/H\nWlY8YAdVuU6FAjSkhtgwZBs7u1UhMXqd1AcnbupL/4AzVeCY0XDxgK4McacOnDnzGKqq5tO3720M\nGfKbPd77ydpPWL5jecz9fm/Ve6zbuY5jeh3TtKxXdi92le5q6lNB4bHHHmPiWROprMxi1cq+VFWn\n0a1rBX22nUW65pKa2sD3v7+TlBTvI+r36dOHMWPGeC4fy9FPHd10WuxQE4qEGNZ1GF3TvV9AcbB7\n4MkVHLt0V7LD6EBKRjADL6k/pXyXJYyDxRd9v2DA3QPocan7y0aAZcth27amf+vGf0l/pvOlX7Jw\nO+VfLCJ31Wx6ffUmtbn7+Kso6nCFfRLzl/gbxx/H1JHO/RkRhfmDB3LCvMX81zMvNZUpn1hD9egG\nej+cg58wi30j2Sl5TtxR++DzwYQJTkthY7CGt3JLdm8fZX1KzV4xzCwvY5c7iGNdOJvyhkGU91sN\nKgTDvdlVmU+XLovwB2Jk1Rgi4Qjbt28nN885TXbkkUeSnx/j3pkEUFUm9J+w12XGzcVqxexVpo3T\nX+2poz5cz8rSlW2W359t7E8dbRXxFEcbZbxcgdfmdjztSsf9u0WbPG8yxZXFBKTNAcdZeONCSxgH\niw2PbGDdL9c5L6LCj/6VDRDeFSa1XyopPZt1hDc0kHt8BkPvb+Vy3g70ZGkZT5SVcXJ6unv6Cfo1\nvEffho8Z2eMZjqipRZYsbjrj03jnuio89BBcdDEcvX8/7tlYv51Z//gdlJXx08w/MerwED3yw62/\nye+HNKdVVFZWSijUwMIFi9i5cyf53fMpKFhHWmpU0onx5xPrD7P5H3TML5oW6tolu1gVWNV63B10\nbkhEyMzKJOCP/QXS/MRddnY2wWCwxfV7vd/D357VceDVoShzr59rCeNQE2mIUDm3cq9+gIbSBhae\nt5D0IekJiSOkSkV4zy9n3+jPkG89TeXU82js/pYI1OYIq48LNHVj7yiFlCCkpkpU17aQkQpp/j1P\nKW2vLKQ+1ErLKRSC//yHRcuGEFmRRlZdbeuB19VBXh5EfQlWhOvZWF/BhrojODrzPU7I/r+Yf35t\n/VE6exFB2PucXtM7/X7o2xd8vpj17fHR7dULMjM8fWE479VWXwOUlJawpniNp/q2lG5h4ZqFdM/r\nnJ3Anc228m2WMDqTmtU1zqW7SVIf3sz6yt+wM+RclaXgDM44p3qPL8LqGqht9r0eCoEvAIGAU1AE\nMgYvonbZeKq+OrfFbYZ29AX1Ueavo8ofIjMcIKgt92P4ImEk3LDX8tSwUrSjD5OLD/O+wzGkS5jX\n+xXha+HPLrWqFH+oPvbKKIG6SlT81GW11n+weyMZGRAIxFy1X8rCu4g03krVpYvzgL1+sByyOsl+\nqipfK/qaJQxzcFi1Cr74wnmuCrNmQbdurzBmzC9afE9m5jpqavqwc+fhqAoNwTD1wTAg7P7cN/bJ\niFv37jaNuu0bBRoCEWrSGsioTiN3V4Z7rW1UHSqsXHktW7ac1up+TJ4Ml166RwNmn3SrWMuJKye3\nuD66p2nLFsjMguGNua6Vz3/sHqq235e3ZRlDZr1CdU5iTnmaxMvctcUShjl0hcPVlJcX0fgz0Pl3\nV3b/LNSo0zJtL/+wbAcvFBc3DdUoKD6cm/IPZwkTmUIde57yy/b7CUT1V5x/3iIeevhyuuRt79B9\nbU047JxpE1Hy8zfj88Xn8y8afQzNoeYbZ5VZwjBmX0VUnQcQjkSoC+1whiUBwqo8V1zM05s37/Ge\nLXcdQ/2qnLh+rQZF8MU451RTkkbu4RXkDN23gZ7jcs/FQXDTYs6galK7tn2acF/F4wh4uoqsnWbc\nN8IShjGJpqrUROLTl7QzFGJ+VVXMdZvX+Fj4RduXT8YSj7+Yg+GvsLJcWLvE39rZuP1yMH0Vffxy\nuiUMY4wxbevIoUG83z5rjDGmU7OEYYwxxhNLGMYYYzyxhGGMMcYTSxjGGGM8sYRhjDHGE0sYxhhj\nPIlrwhCR50Rki4jMb2F9joi8KSJzRWSBiFwVz3iMMcbsu3i3MF4AvtHK+huBRao6BjgN+L2IhxlB\nOrmioqJkh3DAsGOxmx2L3exYxEdcE4aqfg60NvmxAtnu82xgh6qG4hnTocD+GHazY7GbHYvd7FjE\nR7J/zT8BvCkim4Es4JIkx2OMMaYFye70/gYwR1V7A0cDfxKRrCTHZIwxJoa4Dz4oIgOAt1R1VIx1\nU4Bfq+o09/VHwJ2qOjNGWRt50Bhj9kFHDT6YiFNS0VOcNbcO+DowTUQKgMOA1bEKdtQOG2OM2Tdx\nbWGIyD+BQqAbsAW4D0gBVFWfFpFewF+BXu5bfq2qL8UtIGOMMfvsoJkPwxhjTHIlu9PbExGZKCJL\nRWS5iNyZ7HjiTUTWisg8EZkjIl+5y7qIyPsiskxE3hOR3Kjyd4vIChFZIiJnJi/y/RfrZs992XcR\nGSsi893PzKOJ3o+O0MKxuE9ENorIbPcxMWrdoXws+orIxyKyyL3J9xZ3eaf7bMQ4Fje7y+P/2VDV\nA/qBk9RWAgOAIDAXGJHsuOK8z6uBLs2WPQz83H1+J/CQ+/wIYA5Of9RA91hJsvdhP/Z9AjAGmL8/\n+w58CRzrPn8b+Eay962DjsV9wO0xyh5+iB+LnsAY93kWsAwY0Rk/G60ci7h/Ng6GFsZxwApVXaeq\nDcD/AuclOaZ4E/Zu/Z0HvOg+fxE4333+LeB/VTWkqmuBFTjH7KCksW/2bNe+i0hPIFtVZ7jlJke9\n56DRwrGA2BeRnMehfSxKVHWu+7wSWAL0pRN+Nlo4Fn3c1XH9bBwMCaMPsCHq9UZ2H5xDlQIfiMgM\nEfmBu6xAVbeA84EBerjLmx+fTRx6x6dHO/e9D87npNGh9pm5yR1/7dmoUzCd5liIyECcltd02v93\ncUgdj6hj8aW7KK6fjYMhYXRGJ6nqWOBs4EYRORkniUTrzFcrdOZ9/zMwWJ3x10qA3yc5noRyb+x9\nFbjV/XXdaf8uYhyLuH82DoaEsQnoH/W6r7vskKWqxe7/twGv45xi2uLeq4LblNzqFt8E9It6+6F4\nfNq774fsMVHVbeqecAaeYffpx0P+WLgDk74K/E1V33AXd8rPRqxjkYjPxsGQMGYAQ0VkgIikAN8F\n3kxyTHEjIhmNw6OISCZwJrAAZ5+vcot9H2j8g3kT+K6IpIjIIGAo8FVCg+54zW/2bNe+u6cmdorI\ncSIiwJVR7znY7HEs3C/FRhcCC93nneFYPA8sVtXHopZ11s/GXsciIZ+NZPf4e7wqYCLOlQArgLuS\nHU+c93UQzpVgc3ASxV3u8q7Ah+5xeB/Ii3rP3ThXPiwBzkz2Puzn/v8T2AzUAeuBq4Eu7d13YJx7\n/FYAjyV7vzrwWEwG5rufkddxzuF3hmNxEhCO+tuY7X4vtPvv4mA/Hq0ci7h/NuzGPWOMMZ4cDKek\njDHGHAAsYRhjjPHEEoYxxhhPLGEYY4zxxBKGMcYYTyxhGGOM8cQShjlgiUhERH4b9foOEfnvDqr7\nBRG5sCPqamM7F4vIYnGmHzbmoGYJwxzI6oALRaRrsgOJJiL+dhS/FviBqn4tXvEYkyiWMMyBLAQ8\nDdzefEXzFoKIVLj/P1VEikTkdRFZKSK/FpHLRORLcSalGhRVzRnuiMBLReQc9/0+EfmNW36uiPww\nqt5PReQNYFGMeC51J6KZLyK/dpfdizOnxXMi8nCz8j1F5BN3opv5InKS2xr5vbv+VhFZ5T4fJCKf\nN9bpxjZfRJ6Mqm+qiDwqzqRb80XkmKi457jbmeUON2PMPrGEYQ5kCvwJuFxEsj2UbTQKuA5nEp3v\nAcNU9XjgOeDmqHIDVPVY4JvAk+5YZdcC5W7544DrRGSAW/5o4GZVHRG9YXHmpn8IZ/76MThzDXxL\nVX8JzAQuU9XmM0VeBryrzqjEo3GGc/gMJ8Hg/n+7W/fJwCfu8j+q6vGqOgrIaEx0rnRVPRq4EXjB\nXXYHcIO7nZOBmpYPoTGts4RhDmjqDNv8InBrO942Q1W3qmo9sApnjCFwxswZGFXuFXcbK91yI3AG\ne7xSRObgzDHQFRjmlv9KVdfH2N6xwFRVLVXVCPAP4JSo9bEmtZkBXO32yYxS1Sp15nXIcgef7Icz\nltSpOF/0n7nv+5qITBdn2tbTgCOj6nzJ3Z/PgGwRyQGmAY+IM41nFzc+Y/aJJQxzMHgM55d/9OmU\nEO7n1x1pMyVqXV3U80jU6wjONJWNolsl4r4WnFbE0e5jiKp+6JapaiXGWEmhRe6X+ik4w0n/VUSu\ncFd9gTPI4FKcJHEyMB6YJiKpOC2uC90WxrNAWmv7o6oP4xy7dLeOw9oTpzHRLGGYA5kAqGoZTmvg\n2qh1a4Fj3Ofn4cz33l7fFscQnFGClwHvATe48w0gIsNEJKONer4CThGRrm6H+KVAUWtvEJH+wFZV\nfQ7ni3+su+pz4Kc4p6Dm4rQi6lS1Aic5KLDDbYVc3KzaS9y6J+CcVqsQkcGqukhVf4PTqhmBMfso\n0HYRY5Im+hfz73HOzUdPEPOGe+roPVr+9d/acMzrcb7ss4EfqWq9iDyLc9pqttty2Uob8xyraomI\n3MXuJDFFVae0sf1C4Gci0gBU4MxFAE6roi/wqapGRGQ9zpDUqOpOEXkGp9O9mL3nPakVkdk4f9dX\nu8tuE5HTcIbDXgS809q+GNMaG97cmEOAiEwF7lDV2cmOxRy67JSUMYcG++Vn4s5aGMYYYzyxFoYx\nxhhPLGEYY4zxxBKGMcYYTyxhGGOM8cQShjHGGE8sYRhjjPHk/wNxAr99jQoTWQAAAABJRU5ErkJg\ngg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -935,9 +943,9 @@ "outputs": [ { "data": { - "image/png": "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\nGhaDJKnxH5X1NnZZb1gBAAAAAElFTkSuQmCC\n", + "image/png": "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\nXMzNzFrg/wMexNo/VCenYwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -945,9 +953,9 @@ }, { "data": { - "image/png": "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\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,39 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEKCAYAAAAW8vJGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFjdJREFUeJzt3Xm0LWV95vHvwzwpswMIRFoIHSEKKwlERBClFTAqGggo\nYoK0uIwtCRqj0oJogqRR0XaKQ2CJUaZE0MQxARka1KggMsQgShgEoshVkEmGX/9RdaDe7b3Xg/fU\nme73s9ZZp2pX7fq9VbtOPVVv7b1PqgpJkqasMtcNkCTNLwaDJKlhMEiSGgaDJKlhMEiSGgaDJKlh\nMMwjSa5I8oy5bsdMSrJVkgeTuK9NU5KXJ7nwEcx/bZI9x2zTMur62i5SvqDzSFVtX1UXzHU7RjDv\nPizTH9C2ngftWNbBdT5us6UF0OjtTLJ/kouS3Jnk3GnMf1SS65L8NMmnkqw3dhsXG4NhJZRk1blu\nw1wZrPt8OfCGri2Z64bMYz8BTgTe8atmTPJy4KXA7wObAesA7x+1dYuQwTCPDM/IkhyT5Iwkn0hy\ne5LLkmyT5I1J/qs/I9pr8NyvJDkuydeT/CzJWUk26KdNnZUemuQ64Jz+8ef33Ve3JTk3yXb9429I\ncuZE296b5D398KOTfCzJTUluSPL2JOmnrZLknUl+nOQaYN9fsc47JvlW3+bTkpya5G39tPOS7NcP\n79qvw979+J5JLh0s59AkVyX5SZIvJNlyMO3BJK9OcjVwdZLz6Q7E3+m37QFJLk+y7+A5q/Xr8JRp\nvG6799vhTf1zfpDkJYPp+yS5pF/H65IcM3j6+f3vn/Zt2fnhp+WE/rX5fpLn/qp2TD2p30eu6dty\n2lL2g0P6dvwoyZsHz10rycf7mlcm+YskN/TTTgG2BP6pb+frp54GHLy05c2Uqjq3qv4BuHkasz8P\nOKmqbqqqu4C/AQ5IstZMt2sxMxjmt+cBHwc2AL4NfInuD3Ez4O3Ahyfmfxnwx8DjgAeA901Mfwaw\nHfCcJNsAnwJeC2wKfIHuj3414DRg7yTrQnewB/YHPtkv5+PAL4CtgR2BvYDD+mmvBPYBngL8DvCH\ny1q5JKsDZ/XL2wg4E3jxYJbzgT0Gbf9+/xtgd+C8fjkvAN4IvLBflwuBUyfKvQD4PeC3qmr3/rEd\nqurRVXVG34aXDebfF7ipqi7ra1yW5MBlrQvdNt+I7rX5Y+Aj/TYG+Dnwsqpav1/uq5I8f7BeAI/u\n2/L1fnxn4N+BjYETgL9bTu2h1wLPB3br27IE+ODEPLsC2wDPBo5O8pv942+lO/j/Bt1rejD9lVVV\nHQJcDzyvb+c7p7G8RpK/TLKkD54lE8O3TXP9HqlVgDX79mm6qsqfefIDXAvs2Q8fA3xpMO15wO1A\n+vH1gAfpDigAXwGOG8z/34F76YJkK7qg2Gow/X8Dpw3GA9wIPKMfvwA4uB/eC/heP/xY4B5gzcFz\nDwTO6YfPAV45mLZXX3uVpazvbsCNE49dBLytH94T+HY//AXgUODifvw84IX98OeBPxksYxXgTmCL\nfvxBYPeJOg8CWw/GHw/8DFivHz8TeP00X7fd6YJyrcFjpwNHLWP+E4F39cNTr80qg+kvB64ejK/d\nz/OYaew3VwHPnFivX/TbZKrW4wfTvw4c0A9/H3j2YNorgOuXVmei7Utd3gh/H68Azp3GPN/t27Y+\n8Jm+jTuP0abF+uMVw/z2X4Phu4Fbq9/7+3HoAmLKDYPh64DVgU0Gj904GN6snweAfrk3AJv3D50K\nHNQPH0R3dQHdGeXqwM1TZ3vA39KdqU8td7Idy7IZ8MOJx4bzfxXYNslj6K5ATgG2SLIx3dn/VDfM\nVsB7+/bcRtcnXYN1mVz3X1JVN9OF0ouTrA/szcNXSNOxpKrumViPzQCS7Nx31f0oyU+Bw2lfl6W5\nZdC2u+mCezo3UbcCzhpsi6uA++gCfcpwv7prsNzNaLfT8HVcnmUtby6cRLfvngdcDkzdrF7u66+W\nwbC4bDEY3oruTPHWwWPDG6439fNMPn/qQH0msEeSzYH9eDgYbqC7Yti4qjaqqg2raoOq+u1++s1L\nacey3Ex78IYueLrGdgfEbwFHAFdU1f10YXEkcE1VLelnvR44vG/PVJvWq6qvLWPdl+UUuu6k/emu\nTKbTpz1lwyRrT6zHTf3wJ4Gzgc2ragO6LsCpm80zfRP8emDviW2x7jTX5WbgCYPxLSemr1Bb+3sw\nd/T3KIY/dyS5fUWW/VADO8dW1ROraku67rgfVtXkCYiWw2BYXA5Osl2SdYBjgTMHVxiT73o5A9g3\nyTP7G62vpzvgXwxQVbfSnZGfDPygqv6jf/wW4MvAiUke1d/s3DoPf/7iDOC1STZPsiHwl8tp71eB\n+5P8r74NL6K7Ehi6AHgND18dnDcxDt2B9s1JfgsgyfpJlnlvo3cL3T2SobOBnej66U/5Fc+fFODY\nJKsn2Y3uXsIZ/bT16K4o7kvye8BLBs/7MV231n97hPWW5cPAcelvvifZdHA/Y6qdy3IG8KYkG/Qn\nBH86MX1p22za76aqqndU1aOqu0cx/HlUVT16Wc9L94aGNemuVFdNsmZ/L2xp826Y/m3I/f7wLrq/\nBT0CBsP88kjPyCbn/wTdTdSbgDXozrSXOm9VXU13c/H9dAenfYE/6M/Kp3wKeBa/3KVySL/8q4Db\n6K4uHtdP+yjdTfLLgG8C/7jMxlfdB7wI+BO67p/9lzL/+XQH1gsmxh8Khqo6GzgeOK3vqvkOMHwX\nz9K261uBU/oulz/sl3NPX/+JwKeHM6d799ZBv7SUh91Md6P3JrrX4fCq+l4/7dXA25P8jO7ezumD\ntt8N/DVwUd+WyWBc3josbdp76frVv9zXu5g2bCeXMxx/G90V47V04X8m3X2qKccDb+nbeeQ0ljdT\nXkbXdfoB4Ol03VUfmZrYX3Hs2o9uAnw+yc+BzwEfq6rp3rhXLw+fUGohS/IV4BNVddJct2VFJDkZ\nuKGqjp6j+m8BtqnuXTjTfc7udNt+sutlQUvyKuCPquqZc90WzS6vGKReko3o3tUy+TbglUKSxyV5\nWt89+JvA65i4ctLKwWBYPBbLpd+crEeSw+hu3H6uqi6aizbMA2vQheLtwL/SfcbkQ3PaIs0Ju5Ik\nSQ2vGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQw\nGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJ\nDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNB\nktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQw\nGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJ\nDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktRYba4bsLJJchuw4SyVKyDW\nmvd1rLWwas3mOi2pqo1mqdZDUlWzXXOllqSqalZ2KmstjDrWWli1FuM6TbIrSZLUMBgkSQ2DQZLU\nMBgkSQ2DQZLUMBgkSQ2DQZLUMBjmsSQvTHJpkkv6n0uTPJDkOTNc5wlJfpBkg358w358y5msM6j3\nwGB9LhmrTl/rsUlOTfK9JN9I8s9JnjRSrc2TnJ3k6r7eiUlm/EOkg+13eZLPJHn0TNcY1NoqyeUT\njx2T5MgRat0x08tcTq0Lkzx3ML5/ks+PVGu4X1yT5P8mWX2MWjPFYJjHqursqtqxqnaqqp2ADwIX\nVNWXZrjOjf2y/6Z/6Hjgb6vq+pmsM3Bnv05T6zZWHYCzgHOrapuq+l3gTcBjR6r1aeDTVbUtsC3w\nKOC4EepMbb8dgCXAn45QY2i2PgU7m5+2fRXw7iRrJFkP+Gvg1SPVGu4X2wDrACeMVGtG+JUYC0SS\nbYGjgV1GKvEe4JtJjgCexnh/JDBLXyeQ5JnAL6rqo1OPVdXly3nKitTaE7i7qk7p61SSPweuTXJ0\nVd0zRl3gq8AOIy170aqqK5N8FngjsC7w8ar6z5mus5z94rokb66qu2a65kwwGBaAvjvik8CfV9UP\nx6hRVfcneQPwReDZVfXAGHV6aye5hC4gflBVLx6pzvbAt0Za9qQnT9aqqjuSXAc8CbhiBmsFIMmq\nwLOAj83gslcmbwMuAe4FfmekGsvaL66l2y++M1LdFWIwLAx/BVxRVf8wcp19gJvozkDPHbHOXX3X\n2MpgjKujqWB9AnAV8C8j1JiyrO6dBf8la1V1V5LTgTuq6r5ZLj/r33/0SHiPYZ5LsgewHyP3Iyd5\nKt3Z5y7AkUnG6oefTVcy3pngpKsma/U3hbcArpnhWlPBuiXdAeY1M7z8oZ8Ak9/uuRFw64g1Z9OD\n/c9YlrVfPBb4jxHrrhCDYR5LsiFwEnDILPRFfhA4or8R/X+Ad41Ya1bOlqrqXGCNJIc9VDjZIcmu\nI9Q6h+5M/uC+zqrAO4GTR7i/kL7mPcARwOuSjPK3XFV3Ajf192tIshHwHOD/jVBuXp9F/zqWs1+8\nr6rundPGLYfBML8dDmwKfGji7Z37z2SRJP8TuK4/kAJ8CNguyW4zWWdgNrsh9gP26t8meDndu4Ru\nGbHWAUmuBr4L3A0cNUKdh7ZfVX0buAw4aIQ6Uw4B3pLkUuBfgbdW1bUj1Fk7yfVJbuh//9kINebC\nfsD+/X5xK/BAVR0/x21aLv8fwyxbrN/lvhhrLcZ1stbc1kmyC3AqsF8f6qPVWhEGwyxbjH8oi7XW\nYlwnay2cOrNda8iuJElSw2CQJDUMBklSw2CQJDUMBklSw2CQJDUMBklSw2CQJDX8gNssS+IGlzRd\nS6pq8ksMR2cwLBB+qtNac1lrMa7TYq61ouxKkiQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1\nDIZFKMkds1Tn3CR7TTx2RJIPjFTvMUk+2f//5m8kuSjJC0ao82CSEwbjr0ty9EzX6Zf9wMT/837D\nSHU2GtS4OcmNg/HVRqj3wn47bjvTy56o82CSUwbjqyb5cZLPjlBr6rX6dpJv9v+mc1Ga8R1C88Js\nfWrxU3T/hP5fBo8dCLx+pHpnAydX1UsBkmwBPH+EOvcCL0ryjqq6bYTlD91ZVTuNXIN+PXYE6EPu\n51X17hFLHghcSLd/HDtinTuB7ZOsWVX3AnsBN4xVa+q1SvI/gOOBPUaqNae8YtCK+Edgn6kzziRb\nAY+vqotmulCSPYF7q+qjU49V1Q1VNcbVyf3AR4AjR1j2pLn4JOyoNZOsC+wKvIIuGMb2eWDffvgg\n4NSR6gy32/rA2CcNc8Zg0K+tqpYA/wbs3T90IHDGSOWeDFwy0rInFfAB4KVJHjVyrbUnupL2H7ne\nbHgB8MWquga4NcmOI9Yq4DTgoCRrAr8NfH2kWlOv1b/TnTi8faQ6c86uJK2o0+gC4Z/634fORtEk\n7weeTncVsfNML7+qfp7k48ARwN0zvfyBu2ajK2mWHQS8px8+HXgJcOlYxarqiiS/0df9HONdEd01\n6EraBfgEsP1IteaUwaAV9Rng3f1Z4dpVNdYB4ErgxVMjVfWaJBsD3xipHsB76a5SThqxxqKSZENg\nT7p+/wJWpTur/4uRS38WOIGuz3+TkWtRVV9LskmSTarq1rHrzTa7krRCqupO4Dy6g+dYfbtU1bnA\nmkkOHzy87kjl0tdcQtc1dthIdR6qtYjsD5xSVU+sqq2raivg2iRPH6ne1PY7CTi2qq4cqc6wFkm2\nozt+/mTEenPGYFhkkqxK966a2XQqXd/uaMHQeyGwR5LvJ/kacDIwxts7h+/qehewMeO902utiXsM\nx41UZ7b8EXDWxGOfZryb0AVQVT+sqvePVGPKQ68V3b5+SC3S/1vg/2NYIKb7Xe5JngJ8uKp+rfdY\nL9bvp7fWwqhjrfnBK4ZFpO9m+SRw1Fy3RdLC5RXDAuGZobXmstZiXKfFXGtFecUgSWoYDJKkhsEg\nSWoYDJKkhsEgSWoYDJKkhsEgSWr4OYYFov9CMkkL15Kq2miuGzEdBoMai/UDP9ZaGHUWc62FxK4k\nSVLDYJAkNQwGSVLDYJAkNQwGSVLDYJAkNQwGSVLDYNCvLckdg+F9knw3yRYj1Xp3ktcOxr+Y5COD\n8Xcm+bMZqvVA/799r+j/F/ORSUZ5r/twG45tslaSlyd530i1juq332X9tvzdkepMvVaXJzk9yVpj\n1FnZGAxaEQWQ5FnAe4DnVtUNI9W6CHhaXy/AJsCTB9OfBlw8Q7XurKqdqmp7YC9gb+CYGVr2pNn8\nhOnSas14/SS7APsAT62qpwDPBsbaL6Zeqx2A+4BXjVRnpWIwaEUkyW7Ah4F9q+o/R6x1MX0w0AXC\nFcAdSdZPsgawHXDJTBetqluBVwKvmellL2KPB26tqvsBquq2qrplFupeCDxpFuoseqvNdQO0oK0J\nnAXsUVXfG7NQVd2c5L4kT+Dhq4PNgd8HbgcunzoQjVD72iSrJNm0qn48Ro1Zsk6SqfAMsCHw2RHq\nfBk4Osl3gXOA06vqghHqQLceJFmN7sruCyPVWal4xaAVcR/dAfqwWap3MbArXTB8FfjaYPyikWsv\nhu/TuavvdtmpqnZkpO6xqroT2InuSuvHwGlJDhmjFrB2H3b/BlwH/N1IdVYqXjFoRTwAHACcm+RN\nVfWOketNdSdtT9eVdCPwOuBnwMljFU2yNXD/Ar9amFXVfTvnBcAFSS4HDgFOGaHUXVW10wjLXal5\nxaAVkaq6B9gXeEmSQ0eudzHwPOC26iwBNqDrTpqpG88wuDpIsinwIWCUd+8wu1cis/WNpdsmGfb1\nP5XubH6UciMtd6XmFYNWRAFU1ZIkewPnJ/lRVf3zSPUuBzYG/n7isXWq6rYZrLNW3z2xBl132SlV\ndeIMLn9ort+VNIb1gPclWR+4H7iGrltpDP7fgBH4/xjUWKzfhW+thVFnMddaSOxKkiQ1DAZJUsNg\nkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsMPuKmRxB1CK5MlVbXRXDdivjEYJEkNu5IkSQ2DQZLU\nMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgk\nSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2D\nQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLU\nMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgk\nSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2D\nQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLU\nMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgkSQ2DQZLUMBgk\nSY3/D8A5ahkgRRcLAAAAAElFTkSuQmCC\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": "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\n", + "text/plain": [ + "" ] }, "metadata": {}, @@ -966,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()" ] @@ -1171,7 +1209,7 @@ { "data": { "text/plain": [ - "['NWPOO', 'HEOOP', 'JRMLI', 'HWPKL', 'VEMKO', 'UWOPI', 'VDOMK', 'HELLI']" + "['NELKI', 'NWLKL', 'VEMKI', 'VEOOP', 'UWPMK', 'JSLML', 'GRMMO', 'UWKKP']" ] }, "execution_count": 35, @@ -1362,8 +1400,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.12 s, sys: 395 ms, total: 3.51 s\n", + "Wall time: 3.52 s\n" ] }, { @@ -1506,8 +1544,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 119 µs, sys: 0 ns, total: 119 µs\n", + "Wall time: 122 µs\n" ] }, { @@ -1540,36 +1578,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'}" + "{'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", + " '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, @@ -1590,7 +1628,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 +1640,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 +1671,9 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEKCAYAAAAW8vJGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8XHW9xvHPN1uXNGna0pa9G4XKLpuAbBaKgKKAgBfB\ngooWUSwqer0FRVzQKwIXUbkKbiyySaUKV0QBkVL2zVaoQGktpSukJSVts37vH+eEnl9IMjOZM0lm\n+rxfr7ySWc55zpk5c575nTNJzN0RERHpUNbfCyAiIgOLikFERAIqBhERCagYREQkoGIQEZGAikFE\nRAIqhi2EmS02s6kpz/NMM3sozXnmmP+AmX2yn7J/ZWbfyvK+48ys3cz6/PXW38+RFCcVg+Sr5H8R\nJqWda8Efpx4KqC+y7zez1Wa2zsyeMbMP9XDfC8xsvpk1mNkiM7ug0Msnuano7wUQycTMyt29rT8X\ngeIowI7ltH7IngksdPcWMzsA+KuZTXb3Vd3c/+PAP4CdgHvNbKm739ZXCys904hhC2Rm7zKzV8zs\no/Hlbczsd/E7vkVmdl58/VgzazSzEYlp94nvVx5fVWZmV8fvFJ9PHq6K5zvHzN4wsxfN7OzEbfub\n2TwzW2tmr8XzqEjc3m5m55rZi8CL8XXTzOyFeJqryWEHaGYXm9ntZnZL/E71STPbM3H7f5rZy/Ft\nC8zshPj6KcA1wEFmtt7M6hOzHWlmd8XTPGJmE7Jcllozu87MlpvZq2b2bTOz+LYzzewhM7vMzOrj\n5+OYxLTjzexBM3vTzO41sx+b2fXxzQ/G39fFy/SezZN1Pb+0uPt8d29JXFUB7NDNfX/o7s+6e7u7\nvwjMAd6b9jJJ76kYtjBmtg9wD/A5d7813iH9EXgG2AY4EphpZtPid3sPAKcmZnEGcHPiHfx7gJeA\nUcA3gdlmVhffdiuwFNgaOAW41MyOiG9rA84HRgIHAVOBczst7oeB/YFdzWwUcAcwC9gKWERiZ2Jm\nO8Q7vu17WP0Pxcs0ArgZuDNRcC8D73X3WuAS4EYzG+vuC4FzgEfcvcbdRybm91HgYqAuXp7v9pCd\n9BugGZgIvBuYBpyduP0A4AWix/Qy4BeJ234LPBrfdgnRO+8Oh8Xfa9291t0fiy+/p4f5Bczsj3Hx\n1nfx/Q89rVQ87cZ4+R5w9yd7un/CocA/s7yv9AV319cW8AUsJtpxvwocmrj+AGBJp/t+DfhF/POp\nwNz45zJgBbBvfPlMYFmnaR8DTge2B1qAoYnbLgV+2c3yzQTuSFxuBw5PXP44MK/TNK8Cn8xy/S9O\nTk802lhOVAZd3f8Z4PjEev690+2/An6euHws8Hw38xpHVIRlwFhgEzAocft/APcnsl5M3DYkfizG\nEL0DbwYGJ26/Abi+c07i9q7m1waMKdB2Vg68Hzg/y/tfEj/Wlf39GtHX5i+dY9iyzAAedPfkidRx\nwHaJQyRGtAP7e3x5DnCNmY0D3gWsc/enEtO/1inj38C28Ve9u2/odNu+AGY2GbgC2I9oZ1UBPBXO\nimWJn7clKoKkzpczefv+7u5mtiyeL2Y2HfgiMD6+SzXRyKQnKxM/bwCGZbEMOwKVwIqOo0fx19Ku\n5uvuG+P7DQNGEz2mmzqtU0+jpK7mZ/H8VmexvDnxaCT5ZzM738xedve7uruvmX2eaAR6iIeHoaSf\n6VDSluUcYEczuyJx3avAK+4+Mv4a4e7D3f14AHdvAm4jesd+BtE71KTtOl3ekeid+HKiY/DVnW7r\nKJJriA5vTHL3OuBC3nnOIHnCd0U8fVKXx7B78Pb9453j9sByM9sR+Dlwbrz+I4gObXQsT5onnl8l\nGjGMSjzede6+Z6YJiR6DkWY2OHFd8jHIeznN7P/icykNXXzdncOsKoBJPeR8EvgqMNXdV+S73JIu\nFcOWZT1wDHCYmX0vvu5xYL2ZfdXMBptZuZntZmb7Jaa7ATgLOJ53FsNYMzvPzCrM7BRgCnC3uy8D\n5gHfM7NB8YneTyWmrwEa3H1DfIL3sxmW/W6icw0nxMs4k+iwTC727ZieaHSwieh4eDXR4ZrXzazM\nzD4B7J6YbhWwvZlV5piXZADuvhK4F7jSzGosMtHMDut5cnD3pcCTwDfNrNLMDiJ6Tjqsidej2x1y\nFhnHeXQupbaLrw90uWJmu5jZMfH2U2FmZxCdN3iwm/ufTnQ+Zpq7/7u3yyqFo2LYcjiAuzcQnew8\nxswucfd24IPA3kTnIVYD1wK1b0/oPo9oh/O0u3c+fPMoMBl4Hfg28BF3XxffdhowgWj0cAfwdXd/\nIL7tAuB0M2sAfgbc0tXyJpbhDaIT2P8dZ00CHu64PT753JDh5PMcohPGa4nOg5zo7m3u/gJwebwu\nK4HdgLmJ6e4nGkGsNLPeHn5Jrs90oAp4HqgHbic6QZ/NtKcDBxM9Bt8ietyaIDpMRLTDfTg+WXxA\nFvNLgxGdv1pFtP2cB5zq7s8CmNkh8fPc4dtEHzp4IjE6+WnKyyR5MPdi+Hi29Dczuw+4yd1/2d/L\n0htmdjHRYavp/b0saTKzW4AX3P2S/l4WKR0aMUhGZrY/0ccqb+3vZdnSmdl+8aEni38f4UPAnf29\nXFJa9Kkk6ZGZ/Zro9wm+4O6N/bw4Eh1ymk10KGYZcI67P9e/iySlRoeSREQkoENJIiISUDGIiEhA\nxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiIS\nUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iI\nBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAi\nIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGI\niEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQM\nIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBFQMIiISUDGIiEhAxSAiIgEV\ng4iIBFQMIiISUDGIiEhAxSAiIgEVg4iIBCr6ewG2NGZWD4zoozgHTFkDPkdZxZXVl+u01t1H9lHW\n28zd+zpzi2Zm7u59slEpqzhylFVcWaW4Tp3pUJKIiARUDCIiElAxiIhIQMUgIiIBFYOIiARUDCIi\nElAxiIhIQMUwwJnZdmZ2p5m9aGYvm9mPzKwy5YwrzOwLicv3mNnPE5d/aGbnp5jXZmZPm9kz8fev\npjXvHrLmm9kcM6stQMbIxLqsMLNlicup/xKpmT1kZsckLp9iZv+Xdk4873FmNr/TdReb2ZcKkLU+\n7Xn2kJV8Xb1kZlcW6LlKbn+3mtngtDMKQcUw8M0GZrv7zsBkYChwWcoZDwMHA5iZAVsBuyVuPxiY\nl2Lepl2prXsfdeN2pbZuEJVpzruzDezA87yLNQxmd+DCtAPcvd7d3+3u+wDXAFd0XHb31rTzgHOA\nK8ysysyGAd8Fzi1ADlC1PQza3uwj95sdfKNZ7fjC5ADRbxT3lbsYzmjexTK25zFgG+DSAuQ0xtvB\nHkAL0XM34OlPYgxgZjYV2Oju1wO4u5vZF4F/m9ksd9+QUtQ84Mr4592ABcDWZjYc2AhMAZ5OI2iw\nVR1SAUMfp2FCNdAIIz5O9f2DrWrqJm+em0ZGBxtk4ymjmo9zOlXAo8BjzLBBdo03+ZI0s5KxBZrv\n29z9n2b2B+BrQDXwG/f01ycqgWNvgpfr4I73QSNwzoFw0x/B++zdfdqszE5jKFP4HIOpApqBObzC\nPznazL7h7psKFP0QsEeB5p0qFcPAthvwVPIKd19vZouBnYB/pBHi7ivMrMXMtmfz6GA74CCgAZif\n1jvfSQy5/l+0cCib/+DMF2msXMiIm8zYP7u5jMaMMRnvtl31ZaxpNKqAdmAp8H6G88iQH9mRs76W\ncfrqUdiRs3bNbpliQ0aMpqx8aM7T5Zq131m38dQNv8OsmQNnnJrTtNlmDd/9+zRfMI5Nn4Ghq+Mr\nvzWJlj8dTdUbt9ollvk5qIas7hexHO7b+6xavsoucSkAVAEfZiILqaeNnYjeGKXFAOLDVMcCf0px\n3gWjv5XUx3L52ydmdh4w3t2/3On6p4Gz3L3HYsgx6wbgLqKN93KgoyTeBEa6+6w0sqbaiPonWTei\nodP106llE9e++Sx7ty1iUls75T3MZfVoGLMmUxY7HlrHq3MrGUtUb6OBs4D7KuCguiw2fDew3F4g\nD2+AKoP9h+Q0Wa+y5jYaVeYcMLRAWRuMhsFwx5vwicTfcZv3RhtD2jdyCBszzqKR0VST+bkCuJSt\nmMXrWd03n6zrGclYynn/O/LfopmD3L3HYsjxddXK5jdwDwFfzuVNVn/9rSQVQx/LcaM6EviGux+e\nuK4WeAGY6O5NKWZ9luiQ0XuB/YE64HaiYviVu9+VRtZuNvyVV2mYkCyGRuDTVK37Lc0PA3vG2fOJ\nXlDPxd/n49Hhi2yzbEe7kVWcziyio7s3AjsDC7nJl/oZGafvxYvSzC4G1rv7FTlON+CyzA6+Ee48\nHfYBlsXXNgKHtcD7fg8/nOnOyjSy4vs2uHuvPxyQ9XqNsr9SzZF8KnHleuAKmnDqMh1KGojrlDad\nfB7A3P0+YIiZnQFgZuXAD4GrM5VCL8wDPgjUe2Qt0Q76IFI88byIjdM3Eu1eiL9/nOqW2fjxuH8Q\n9x2B8cAsogLcD7gKWInZIsxmXwxgdiJmkzDrfhtexUW04jQDlcBRwN9oZSVfT2t9StuCi+DLi2Br\n4AGiZ+usxfD8ajjNgRfMuN2MaWap7Ev6Zgf4Fmezhqa3z5ptAn5BA86vC3B+oc936mnQOYaB70Tg\np2b2DaKDIbe4+/cLkDMfGEX0vjp53VB3r08rZJM3zzWztlGUtVVAeSu0NdN4a7v75hPPUd6D8Vck\nKsXJwF6V0WPyKTpGF9HHKd8xuvAmX2JmjdzAHIaxLW+xnBbGEB0iW5zWOpUq94YlZrVHwbgfwUmH\nRJ9DaNoAzHLf9xYzaoGPAT8Aas24Fvh1plFET5EpLXrPIU2+xCrscO7hd/yJrShnEO3cDZxXiLgC\nzLPgdCipj+UzNDSzA4GbgRPd/dlCZuWq37LMRhJ90mMvoqLYC9gVWMnmouj4vhj39l7lFFgxZ5lh\nRCO7zwAnA38Ffg7cB9Y20NfLLrGfAg1+sWf+QEIeOb2hcwxbiFLdqAZUVmJ0weayyHjuIuecFJVK\nVmIUMQOoha9NhO9vk8coIofsXhfDDsCzwBS/2DOevC6V56rHXBVD3yrVjaoosnIcXRgM+He7AzVr\n8yji2sfh0+tIjCLcyXrUlltmHqPxHEYNpfZcdZmrYuhbpbpRFW1WD6OLeVBzMPwvmwuj29FF/otR\npI9fFlngwwlGEXmfi+g2K49iyHrUUKrPVZCrYuhbpbpRlVyW2cjD4Y0HYSYpn7voOq7EHr8usno6\nF5HGKCLf9cp21FCqz1WQq2LoW6W6UZVi1jtyNo8ukiOLvYARROcukoWR0+iiFB+/nrLeeS4i/1FE\nCsWQ1ahhIDx+Bc9VMfStUt2oSjEr65wUPhlVio9fNllpjiLSWK9sRg0D6fErWK6KoW+V6kZVill5\n5eQ4ujBoKLXHL9esfEcRKRVDxlHDQH38Us1VMfStUt2oSjGrIDndjC4WwdBJ8HtSPnfR9SIM7Oeq\nt6OItNYr06hhoD9+qeSqGPpWqW5UpZjVZ+tkVj4FWhfCR0n53EXXccXzXOUyikixGHocNRTT49fr\nXBVD34o+vieS2QhyOXFRpH97ISfd/HJ1Idb8A0BTHNO/1rr7yMx3S5eKoUiU3LtkZfV25sG5iz/C\nrOPhVQo0utgcO3AevzQ/0dTtp6Zy/G3ofLIGIhVDkVAxKKvHLLMRRGXRMbhIDjA6iqLX5y4G4uOX\nxieaesrK9W8o5ZM10KgYioSKQVk5Z6X4excDZp26naZ3o4gMxZDqqEHFIKlTMSgrtaxejC4G/Dq9\nPe3bo4gZwEfIMIrIeNgqxVGDikFSp2JQVkGzMowuroGDPgvnUuC/GRUtSkqfLopGEacTlUQNXYwi\nsiiG1EYNKgZJnYpBWf2SFY8uzoO/XQ2/IOVzF11HprtOPY0iyOL/RaQ1alAxSOpUDMrqz6wgp4B/\nM+odWSl75ygi8/+LSGvUoGKQ1KkYlNWfWVnlZHfuouN7t6OLvlinzaOI6x6HszP+v4g0Rg0qBkld\nrhuVmZ0AzAamuPuLBcy5EDgNaIu/Zrj7E2lnmVkb0Q6lCmgBbgCu9Cw34F5mGdFvT53g7kuzmbYX\nWWOAK4H3AGuBZuAH7j6nAFnr3b0mcflMYD93z/i/jnuxXURZvRhd9HadzOw44Apgmru/muX0Hf8v\noudzEZfYDlzKUmYxprejhmIqBtxdX0XwFT1V2d230spOHmbWMtxoH1lmTZVWdnIhcoADgYeBivjy\nSGDrAmU1JH7eCvgL8M1CZxX6uQLmAZ9OXN4B+FxfrBdwJvCjtHOyegxhhMPhDuc5XOfwuEOjw6LZ\n4A7fdDjJYZJDWU85NTB+J/jrENiwJ/y+Bsb35vEDN/D9wa8DXwt+O/g08DJ3h3Ja2KNqLePr6hld\n+wrllYcUarvo76+K1JtG+lVVWfnJR5e33/5sK/wNOM696tBKbq8qKz+lub3tdynHbQO87u6tAO5e\nn/L8u+Tur5vZZ4AngG8WIKKvDgNNBZrc/dqO6zx6p/uTvsjvV+5rgQfjr0g0utjpZlh4IlQCn6Bj\ndGHW3bmLsgNg7mLY7jlgWzjhHNij1uyoBvcluS0STrRNPWHGl4hGEZcBNWbX3ksZFRzfXEdVMzQz\ngtnV91tF1VRvbZ6b56Mx4OhQUpHIdhi6y6DK9V9rbh02j2g8fAjwA+CiQeWt+07YP2MxLGx44z+m\n1I66JZtl2tTWWn7DkvlHtblXbDO4euWU2q2W7lI7Kuthdi5Z//Ovx08+f5cDguW/6l+Pn/SJiXvd\nXVs5qCnNrMsXPvrR2spB6wCGVVQ1njZut5xe+Nlm/X310skNLU3DPrjd5GdymX9vsiBcL4Dm9raq\nHYbWvvah7XZ+Os0c6Pr5ylbnrFEtm4bsvr5+zKQNDWO33/jW2Jq21mqANyoHrR3T0jSijqhddo/v\n3wgcWDdm/oL3nnRnxrCXnvo6k/f9dre3uxnrJuzE8qtPYfmr5cxK3NYMXFu72Fe/OTGb9SqmQ0kq\nhiKR7UZ1+OCKltqmtorzgSOBq4GlgBkcNqGK8uYhzebd/yG/FvdBlWYZd7Qd3J35zW32XFNL+T2N\nzeVn1Q5pmVZdldVHFnPJOmn5ukGzt60L7nvy8jcHXTe2pqmuvKzgWbnINuvOt5rKV7W224y6Ia0A\nP163oeL5ptaySjOuGlPTnGYWvHO97m1sKnu5pa3s3LqhrWnmdJWVi1yyjn9t3aBjgYnA/ySuP2xs\nTfNDH9hjbcYZbGwZy5DKVRnvN/+pMTzXZEExAPy6bq0vXpvVH7lTMUjqst2odqqqWL+ipW3YGKLj\nIW3x9acafHp4pd+6a5n9fqtd6p8t322eb9j6NppqbvMHLnn7RZjfb53aR4Dp7v7hNNcpvm+Du9cm\nLk8EHnP30YXOylX2f+vHpgLfcPcjEteNAp5w99TfhXbxGJ4J7OvuX0gzp6usXOSSVW7WvBoqjweO\nB/6LaMQwDW6a535GWlk2ZvgrvNkwYUsZMegcQ4l5paXtpnFlzFjQDtVEL5LxBlc6X79sXcu9Zz5V\nO+Pc9n+d3FD10rTfThly7K17NV9f9sm/rPY3JzxO49jbKMv87ruDme0MtLv7y/FVewP/Tn+torhE\n7mjgGqIBUUGzCsnd7zez75rZDHf/WXx1dQEji2KnlIt2aD4flt4Gk44F6oB5sGgBXJRqUP3G6bTz\nEM1En4trBmZXt1C/cXqqOQOERgxFIod3ofeVwbydqirOH2s+eJXbppeaW29z2OTun+u4E7A/cEqz\nlX1sbeWgITeP37rl1/u01T03bm0Va/ZYzbrxUVF0GlF0ytqHaOc8HGgFXgY+k+1J6Bzf7bYQfbyx\n4+Oq17v7ldlM24usPhkxxPcdS3QU5ABgDVGXX+PuWR2fH4gjBotOIq/MdjSXZ1ZDDey5O3xnGEz4\nG+zZBjPb3H9ZgKxWygwMw3Ha+Yl7+8xsps01q7+pGIpEwTaqREkAp/zLysY9s/X4R67YY5tRT05e\nPc5rVg9i9W5ZFUUvovvshaKsvssxs72An7n7gYXOylepZuVLxVAk+mSjMrMDoP1x+CFRUTS9Mnj4\nfZ/f86Ch90wsf7dv9dIuDFuVWlGU6ouyFLNyGLHOAM4DZrr7fYXMSkOpZuVLxVAk+nwH0GkkQfSP\nDm/7yXb7PHHe3vse6rUrjmbUi3kVRam+KEsxqxTXqZSz8qViKBL9ugPopiSA2wcd8Z/NzcPWfoqa\n5TkXRam+KEsxqxTXqZSz8qViKBIDZgfQQ0kA823qrF0Y+npWRVGqL8pSzCrFdSrlrHypGIrEgNwB\nZCgJ3N2OvHBKt0Xx6NMfZOdTB6d1MjvDopbkDmBAbhfK6vesfKkYisSA3wFkURIAQVHULdyT4Wso\n1KeeOi1eSe4ABvx2oax+ycqXiqFIFNUOINuSMHOmznpXtoee8lykktwBFNV2oSwVg6SraHcAPZSE\nwXOds3o89JRHUZTqDqBotwtlDWgqhiJREjuAzr9MB+N2ge/QaSQRTJJSUZTqDqAktgtlDTgqhiJh\n1v1fRC1W3R9r6sHQkTBuMowfBOOXw/DVsHRnWDIUlqyGlS9Ce97/j16kENa6e1Z/ibW/qRgk0C/v\noLI8J9HlPLIcUZTqO0ONGIonq5ioGCTQ7y/KPEoCeiiKhRVjqNl3eqE+9dRpFUpux1aK69TXWcVE\nxSCBAfWizLMkIFEUbQsvYNLKpkJ96qnTYg+cx7DIcko5q5ioGCQwYF+U+Y4k4qxCfeqp1+uVJxVD\n8WQVExWDBIriRdmLkuguqxBFURSP4QDNKeWsYqJikEDRvShz+GW6bLLSKIqiewwHUE4pZxUTFYME\nivpFmeMv02U1y14URVE/hv2cU8pZxUTFIIGSeVH24pfpspptFkXB3761qSQew37IKeWsYqJikEAu\nLxQzOwG4GOjYiAzYEzjO3f+cctb2wN+Bfdx9nZmNAJ4CjnD3pZkm7vyf6ch8TqLjfzHvB6wDVgHn\nu/vLwf26Koqlk2HTzndl8f8o7ge+5+5/SVw3E9jZO/4/d+bHJZfHsA14Digj+h/dn3f3RwuQ0w5c\n7u5fiS9/Gah2928VKOtGd58eXy4HVgKPuPuH0szakqgYJJDPC8XMPg18zN3fV4gsM7sAmOzuM8zs\nZ8Aid/9BTllZnJOoNRvfCk9MhDdq4ckFcNF6qAFq3f3hHnOOvHAKK+57gb1H/yOL/0dxNnACo2t3\npbqsjsb2daxp2ADMyJTzjvXK7r4N7l4b/3w0MMvdjyhAzkZgObC/u9cXuBjWAy8BB7l7k5kdA1wK\nLFMx9J6KQQK9faGY2c7AfcCB7v5aIbLMrAJ4EvgVcDawt7u39Tqri5J4DP78DfjoBhjzENAInAOL\n5sBRDe5Lcs3q8dDTP19ayMtPXsBXHAYDa4CfGXjFod7aPLfX69X9fde7e0388ynAae5+UiFyiA7b\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 +1692,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 +1704,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 +1722,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 +1749,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": "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\nEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJ\nGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgl\ndhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYR\nkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGM\nUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFi\nFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcR\nyRgldhGRjFFiFxHJGCV2EZGMUWIXEckYJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEckY\nJXYRkYxRYhcRyRgldhGRjFFiFxHJGCV2EZGMUWIXEcmY/w9vjpVcLw21AQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1739,9 +1775,7 @@ { "cell_type": "code", "execution_count": 55, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "def confusingness(kbd):\n", @@ -1749,9 +1783,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 +1838,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 134 ms, sys: 3.99 ms, total: 138 ms\n", + "Wall time: 143 ms\n" ] }, { @@ -1830,8 +1866,8 @@ "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 188 µs, sys: 3 µs, total: 191 µs\n", + "Wall time: 202 µs\n" ] }, { @@ -1863,9 +1899,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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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1875,8 +1911,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.6 s, sys: 26.7 ms, total: 10.6 s\n", + "Wall time: 10.6 s\n" ] } ], @@ -1911,14 +1947,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 +1964,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 +1981,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 +1991,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\ndiMRvXUAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1965,9 +2001,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf0AAAEKCAYAAAAYW4wpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm4JFV5x/HvD4ZddgwimysBBVlExC1cQFRAg0aJ4oJI\nEDQuKG64RK5JNCgRiAq4BZWILG6okRiN2BFB1AgalkRFtpFFGAdkmFHC8uaPc5qpae7S01V36tyu\n3+d55rm3uqpOv13n1Hmrzqm+o4jAzMzMxt9qbQdgZmZmq4aTvpmZWUc46ZuZmXWEk76ZmVlHOOmb\nmZl1hJO+mZlZR8ya9CVdIenPVkUwq4qkbSXdL6mRix5J10rap4my5so41uN8JmkvSQtXYvvvSTp8\nLmOa4b3vl/SoNt67BJJeK+kWSXdK2rhGOUskPaK5yKxU1XNG0mck/W3bMfXNmvQiYseI+P6qCGYV\nm/YPFEjqSfpDPsmXSPqfVRmYpGdK+qmkuyTdIOlFdctcFfUo6TpJy/Jxu1PSt2bZ/oOSFkm6TdLx\nNd97r3yizXhyNfmeKxnfVImzuD+SMc3FxchxSjpU0n9J+n1uyx+c7mJb0tPz+dZvP0vycXvBqO9f\nl6QFwIeBZ0bEBhFx+6hlRcT6EXFdY8EVQtIJkn6Z6/gqSa8YWL9LbgNLJf1E0s6VdftKukbSTZJe\nXHl9w9wHrrcqP0uDRjpnJB0g6UJJt+dj8snpjoGkrac5X94803sUM7wvafW2Y6gI4K/zSb5+ROyw\nqt5Y0uOAM4F3AhsAOwM/XVXvX1MAB+bjtkFEPGe6DSUdBfw5sBPwBOB5ko6srF9D0uOn2G/XKV5b\nAJwMXDJTcLO95xwrLsGvBNXYdx3gaGBT4MnAvsBbp9owIn6Qz7cNImID4LnAEmDGi8c59jBgLWCV\nXvjPM3eRzvsNgcOAf5K0J6TzGDgPOAPYKP/8Wj5nAU4CDgSeA5wqqd/W/gH4QEQsXWWfYkhD5qpR\nz5kNgL8DtgB2ALYCTphqw4hYOHC+7ATcB3xpxneIiBn/AdcC++TfjwPOBf4FuBP4OfBY4Fjgt8D1\nwH6Vfb8HfAD4EfB74KvARnndtsD9wOF5v15+/c+BK4DFwAXA9vn1twNfHIjtn4CT8+8bAJ8GbgIW\n5gOnvG414B+B24Crgb/OB2e1aT7z94DDZzs2A8foWOBK4HfA6cCaed3lpBOiv+2CHMfO05R1JvC+\nYd97YN9NgW8At+c4/nOaerw919+dpBP2fmCbvO65wGV5mx8AO63kcdhnyG0vAo6oLL8KuLiyvGdu\nU7tUXvvLXL8PHSjrHcDx+bj/bY33/Abw9mn27bfXVwM35n9vqax/EnBxPm43Ah8FFuR1/5n3vSsf\n84OBvXI7PSZ/zhuBw2aIfYU2STpvrsr1/G/9+svr7geOAn5JOo8+Vlm3GunO9Tbg18Dr8varAX8P\n3Assy3F+ZLbyRmijbwa+NuS2nwH+ubL8NGDxDNuvnT/bdbkevg+slddN2a9U2u1bSP3Z7cBZwJqk\nvu0uUl9xJ/AflXawWmX/B+oGeDTQA+4AbgXOGqiXR1U+28eAf81l/xB4ZGXbZwH/m+M5JZfZf49X\nAheSksHiXI/Pqew7U184U3wn5bb4+3wsHjdiHX8NeHPlcywcWH898Kz8+68rr98MbAbsAZw/Tdk/\nB14yw3u/GvgVsIh0sfGw/PqpwAkD254HvCn/vgUpWd6aj+cbKtsdB3yRlPfuIJ17057v09T1tP3S\nLMfyBcDPh9z2OOC7s243REGDSX8Z8ExSJ/E54BrSXenqwBHANQMnw0LSFcs6+aD+S17XP3k+m9et\nxfKTbJ9c3ttyBS4Atsnr1sv7r5Yb9ZPy8ldzxa6dG84lwKvzuteQOsiHk642L2D2pP/b3AAuBPYa\n4hj9d6X8H/QrOX+GsyvbHjRTJeYG97e5vBtJV8YbD9PoSRdYp+ZjszrwtKnqcWCf9+fPuzqwa/7c\nu5OuVF+R91sjb3sKM3T4edubcxnfAp4ww7Z39OsuL+8G/H5gm36S3wF4HnDLYJm5Hf0vsC6znFzD\nvOcM+/bb65m5je2Y28c+lbL2yMdtG9IF4BsHOoFqp74XcA/pnFod2B9YCmw4Q5vsd/oHkRLwdrmu\n3wVcNPBeXwfWB7bOcfY72deQkt8WwIbAd6icC0xxwTtLeVuTEs9WQx7Hr5Lu4Gbbbl1SMnzGMOVW\n2ucFpLtzkS4c18jHacp+pdJuLwE2J52/VwFHVur9PpYnzf7ydEn/C8A78+9rAk+tbHcfKyaC24An\n5jr8PPCFvG5TUuI9KK97I3A3Kyb9u0nJR7lObxw4xtP1hVPGR0rOPwHWz8t/Cmyefz8E+NmQdbAO\n6ZzdLy+/CfjmwDZfZ/lFwcWkUbedgd+Q+vqLgUcPW++VcvfJx3TnXO8fId/4AM8Arq9suxEpl22e\nj+F/Ae/O7eMRpJvD/mc4Lh/v5+XltUh95Wzn+5RJn3Sh8NQhP9PJ/XYxxLZXA6+YdbshChpM+v9e\nWfdc0onZPyEekj/sBpWT4QOV7XfIB08sP3m2rax/DysmSOWG8Gd5+fvAy/Pv+wG/yr9vDvyRfFWf\nX3sJ+aoH+C75JK7sO1PSfxKwXm44h+bP+MhZjtGrK8v7V2LbgnQCPyQvfxF46wxl3U26kHo0qeP7\nEvD5ISv9faQT/kEnDFMkfeDF+b02ycunMjDKQEqoQ3W8wFPyCbE2aeTj5n5bmGLbe4HtKsuPAe6b\nYrtXkpL9rcAeU6w/D3jRVCfXqO85zb79pP/YymsfBD41zfZHA1+uLD/QCeTlvUhJvpo8fjvVZ6yc\nS/1O/3zgVZV1q+Wytq6811Mq688hj2Dkc6HaVvdluKQ/ZXkr84+UpG7ot7dZtn0FlbvAIbYXqRPf\ncYp1s/Ur1wKHDNTrqZV6rx6f2ZL+54CPA1tOEcdgIvhkZd3+wFWVz37RwL43sGLS/2Vl3Tq57D/J\n/2bqC6eMD9ibdK4/mdyfj/Ivl//NyvJ7GEhapAuc9+bfd87H74c5hjeQ+rGdSDcO3+3X0xDv/Wng\n+MryesD/sXwU8zrg6fn3I4D/yL8/GbhuoKxjyaNMpLzXm+W9pz3fGfFOn5SnfscQF0Cki5o7gXVn\n23aUOf3fVn7/A7Ao8rvmZUjJv6/6hPL1pES6WeW131R+f3jeBoBc7kJgy/zSWaSrTvLPL+Tft8nl\n3ixpsaTbSQ37oZVyB+OYVkT8JCKWRsQ9EXEGaVj4AABJ51cenjikslv1c1yf35OIuDnv/0JJG5JO\n7s/nsk6rlHVs3vcPwOkR8euIWEa6e99/pngrPkQaKfi2pKslvWO6DfPc+EeB50fE4vzytsBb8jHs\nH8et+p9lNhHxw4i4OyL+GBHHk+6snzHN5neRhiH7NsyvDbqWdCGxjJT8q5/heaQ7k5nnsFb+PacT\nTFPPkh4r6RuSbpZ0B2kEZbMpyqj6XUTcX1lexornznS2Jc2bLpa0mNQxBMvPE1jxPK2WO3guDPsN\ngunKG4qk55OOyXMq7W0mh5JGuYa1GamdXDPFutn6Faj5+SreRroI+7GkyyW9aoZtq+15pjqCFdvd\nCvtGRLXf3ZaZ+8Ip44uI75GmG04Bfivp45JWto5PAB5HupnoGzznIJ13S/L7/jwi9o6Ip5Cem3gV\nqc/7NCnZHk4aVh/GYD0vJZ0b/Xo+h+X546WkUTtI+WPLgX7vnaQLqL4V6mPE831o+ZmIM4EXRsSv\nh9jlUNJFx7LZNlwVD/JtXfl9W9KV16LKa1H5/aa8zeD+N+bfvwhMSNqSNNfRT/oLSVe3m0bEJhGx\ncURsFBFPyOtvniKOlRHkBzMi4oBY/vDEWQNxVsu/qbJ8Bunq/WDSHPItuazXVsrqP0n+3ysZ2/Ig\n04XKWyPi0aQ5zGMk7T24naQ/IY0IvDYiqu+3EHh/Pob94/iQiDhn1JCY/oGWK0lX+X275NeqcT6Z\nNNLxQuBE4LuStqhssg/wxHzi3UzqbN4k6aujvucsxIr1vA3L6/k0Uqf16IjYiDRUWOcBuJksBI6a\nop5mfJAxu5l0Ide3zcD6oGGSngN8AnhuRFw1xPZbAROsXNJfROoDHj3Fuun6lcFEOoz+g2XrVl57\nWP+XiLg1Io6MiC1Jw+6nTvGtjdkM9lewYp3NZMa+cKb4IuJjEbE7KXH/KekCYSiS3gc8mzQkXr2Q\nvpI0fF/1BKY+704C3h0Rd5Pu9H8aEdcDa0gaJqGuUM/5qfdNWZ4/zgJeJGkb0t39l/PrC0nT0tXz\nacOIeF6l7MHzYs7O93xDdh7pGZ/eENuvTcotnx2m/FWR9F8uaXtJ65KGbb5YGRkYPEjnAgdK2lvS\nAklvJTXgiwEiYhHpoajPkCrpF/n1W4BvAydJWl/Jo7T8e+nnAm+UtKXS92xnugPeUNKzJK0laXVJ\nLyPdrc72BPHrcvmbkOZYz66sO4805/tGZu/IPgO8StIj8zF7B+kBs1lJOlBSv9NbQhrOvm9gm9VZ\n/mzFlweK+BTwGkl75G3Xy18hmfVrM/nrI0/NT92vJeltpBPuoml2OYN0UfLwfBF3TP7s/fIeT3og\n6LCIuCAiPgL8M/AfWv5d6feQ5mt3zv++nj/DdHdXs73n9yS9d5aP+jeS1snxvYrl9bw+cGdELJO0\nPfDagf1uAZr6rvvHgXflb3r02+ywX+s8Fzg6H4ONSA/IVv22wThR+vsVnyfdsQz7LZRDScPb1w6U\ntZek+6faIfcppwMnStpC0mqS9sxPj0/Xr/xw2I9ReZ9FpCTy8vweh1O50JD0oty2II103Z//rYxv\nAjtK+vPcB72eNIU5q9n6wunik7S7pD2Unqr/A+n4DBW3pHeS7qCfGRF3DKzuAfdJeoOkNSW9MZd7\nwUAZ+5GmJP4tv3QNsG8+z9Yk3bH3/ybKodOEchap73yCpLVIIwaXRMQN+dj8LJfzaeBbEXFn3u/H\nwBJJb5e0dj7mj5e0+wwfe7bzfSSSdiQ9mPuGiDh/yN3+gvSA638OtfUQcwXXsOKc/hmVdfuy4oN7\nq5OSzMNj+VzX+0lP799BSn79+eMHzY3l1w8iXQXenvffYWD9y/N+xwy8vj5pTnph3venwF9W4vow\n6W7g16QKmnJOnzRE82PSPPxi0gXHjE+k52P0jhz3YlLns/bANp8iJeJZ51zycb6V1AF/lsrDXaSH\nsA6ZZr83kYbDl5DmAN81WI+V476ENAfU/7lV3u5Z+fMvJnVu57D84cnTyHOdU7z340gPGS4hPUzz\nHWDXyvqnk06S6j7Hk07CRcA/DKzbCHj2FO9z8FT1FlPMnY3wnldPV9csn9M/Ih+Xm1jx6f1nkK78\n7yRdmE4C36+sPzLvsxh4EWlO/4bpzrUp3v8CVnx6/2WkUaE7SEOan66se+CBsbz8wLcaePC5cDRw\nd2XbPYFf5GN08jTlfaZS3tbV9jNN3P830Naqc77nA8cO7HMVU3yTgXTuXzjDebMWaUToN6Q+oMfy\np/en7VcGjzuVfo6p5/CfnfdZTHqCvjqn/8H8/neSHhb8q6nqhQe31RXaA+k8/EWO92Oki+eX5XWv\nrLatKcqeqS+cMj5S3/Dz/PqtpCH1dfO6lwKXz3Dc7yddKFTr+NjK+p1JD8otzT8HH8ZdE7i02oZy\nPNeSzrWD82trkPrl7WaI5UjSebyIdBPw8IH178nH6i8GXn8YaeT4ZlLbf6DfZyDvDXm+z1TXS6g8\nZD1Q7umkm7X+sVxSPfZM0QeTbkgnpzsmg//6D+DNCUnfI91Rnj5nbzJPSPob0kNg012lWovy3c85\nEfH0adZvS+ro14gV5+HntTz0flpEPLLtWGYj6ZOkkcLvtB3LqiSp/+DhS2PYu7kxJOlppL+f8rK2\nY5nPFsy+idWVh/z/inR3ZgWKiBtJIwMzmas5+lUmz//tTRoCfhjpLuYrrQY1pIhYVX9IqXWSnkUa\nIf0jy+fWh3lmY2xFxEVMP11oQ5rrOf25G0aYJyQdQRpq/2ZutDZ/jUN7FunZmsWkYd8rSYnfyvIU\n0vTLraS/WHdQpAfczGqZ0+F9MzMzK0cxf3vfzMzM5paTvpmZWUc46ZuZmXWEk76ZmVlHOOmbmZl1\nhJO+mZlZRzjpm5mZdYSTvpmZWUc46ZuZmXWEk76ZmVlHOOmbmZl1hJO+mZlZRzjpm5mZdYSTvpmZ\nWUc46ZuZmXWEk76ZmVlHOOmbmZl1hJO+mZlZRzjpm5mZdYSTvhVF0qSkyVKWS4ihulxSLPNhuYQY\nporJrC2KiLZjMEPSZERMth1HlaReREy0HUdViccJyozL9Wf2YL7TN7MmTLQdgJnNzknfilDi3U9p\nd4mF67UdwKAS66/Edm7d4qRvZrU5mZnND076VoQSH3SS1Gs7hvnC9TecEo+TdYuTvpk1YaLtAMxs\ndk76VoQSh4dLnBMuWK/tAAaVWH8ltnPrFid9M6vNycxsfnDStyKUONdZ4pxwqVx/wynxOFm3OOmb\nWRMm2g7AzGbnpG9FKHF4uMQ54YL12g5gUIn1V2I7t25x0jez2pzMzOYHJ30rQolznSXOCZfK9Tec\nEo+TdYuTvpk1YaLtAMxsdk76VoQSh4dLnBMuWK/tAAaVWH8ltnPrFid9m/ckLRlYfqWkj7YYzwWS\n9ht47WhJp7QVU47hPkmXSrpC0mWSjpGkJsoeNZlJul/SGZXl1SXdJunrTcQ1qsqxuiz/fHub8Zg1\nxUnfilBzrjOGfG2l1JgT/gJwyMBrL8mvt2lpROwWETsC+wH7A8c1UXCN+lsK7Chprby8H7CwoZh6\nNXbvH6td888PNRTTZBPlmI3KSd+seV8GDpC0AEDStsAWEXFRu2EtFxGLgCOB1zdU5ESNfc8HDsy/\nHwKcVTua+hoZATErjZO+FaHmXOe6eQj2UkmXAe9rKKaJEfe7Hfgx6U4a0l3+uU3E1KSIuBZYTdJD\nGyiuN2oYwNnAIflu/wnAjxqIp+6c/joDw/sHNxTTZBPlmI1qQdsBmDVgWUTs1l+Q9ErgiS3GAymR\nvQT4Rv55eLvhTKvVOf287xWSHkG6y/9mUzHVtEKbMhsXvtO3IpQ411lzTvhrwL6SdgXWiYjLmomq\nOZIeBdwbEbc1UNZkzSK+DpxAg0P7/p6+2YP5Tt/GQQl3hiuIiKU56ZxOGXPUUDlOeUj/NKCpbzlM\njLhfP6bTgdsj4kpJezUTUi3FtSmzJjjpWxFqznXWflJ/ykLrf8/7LOArwIvrR9OItSVdCqwJ3AOc\nEREnNVR2b8T9AiAibgQ+1lAs5DInauzeP1YixfitiHhXAzFN1i3DrA5FzEl/aWZzQNKkE4eZjcpz\n+laEEuc6S5wTLpXrbzglHifrFid9M2vCRNsBmNnsnPStCCUOWZf4t9sL1ms7gEEl1l+J7dy6xUnf\nzGpzMjObH5z0rQglznWWOCdcKtffcEo8TtYtTvpm1oSJtgMws9k56VsRShweLnFOuGC9tgMYVGL9\nldjOrVuc9M2sNiczs/nBSd+KUOJcZ4lzwqVy/Q2nxONk3eKkb2ZNmGg7ADObnZO+FaHE4eES54QL\n1ms7gEEl1l+J7dy6xUnfzGpzMjObH/wf7lgt/TnKfqc/6nLDJmjmznMi/+xFxGSOdWKU5QZiKTmm\nB+Lq313359NXdrmJz1VZPgy4rm5METHRUDyDy7XPG19s2cpy0rexU+L/ROeYhlNiTGbjxMP7NrJS\nn0R20rAmlfgtALNROenb2Cn1YsSsSW7nNgonfRtZwXfUE20HYOOjxG8BmI3KSd/GUa/tAMzmWsEX\n3VYwJ30bWanDi+4MrUme07dx4qRvY6fUixGzJrmd2yic9G1kBd9RT7QdgI0Pz+nbOHHSt3HUazsA\ns7lW8EW3FcxJ30ZW6vCiO0Nrkuf0bZw46dvYKfVixKxJbuc2Cid9G1nBd9QTbQdg48Nz+jZOnPRt\nHPXaDsBsrhV80W0Fc9K3kZU6vOjO0JrkOX0bJ076NnZKvRgxa5LbuY3CSd9GVveOWtLzJd0vabuG\nQuqbGHXHHM8JleW3SHpvI1GNHtN9ki6V9DNJ/yVpzzbjyTEtaTuGqcxFXHXn9CVtLuksSb+S9BNJ\n/yrpMQ2FZ7ZSnPStTS8BLgQOabjcXo197wb+QtImDcXShKURsVtE7AK8Czi+7YCAaDuAaZQY11eB\nCyLisRHxJOCdwOZ1C/U0lo3CSd9GVmd4UdJ6wNOAv6LhpF+zM7wX+CRwTDPRNEKV3zcEFrcVSBfV\nmdOXtDfwfxHxqf5rEXF5RFzURGxmK8tJ39pyEPCtiLgaWCRp16YKrjnXGcApwMskrd9MRLWtk4f3\n/4d0QfJ3bQdkQ9sR+OlcFOw5fRuFk76NrOYd9SHA2fn3c4CX1g5ouYk6O0fEXcDngKMbiaa+ZXl4\nfwdgf+Bf2g6oS/w9fRsnC9oOwLpH0sbAPsCOkgJYnXSH/baG3qLXQBn/BFwKnN5AWY2JiEskbSZp\ns4hY1HY8NqsrgRfNRcGe07dR+E7fRlZjePFg4IyIeGREPCoitgWulfT0JuKq2Rkql3E7cC5wRBMx\n1fTAnL6k7Unn7e/aCyeF0vL7rzJ15vQj4gJgTUkPtCNJO0l6WhOxma0sJ31rw4tJTzRXfYWGHuhr\nYE6/78PAprT/RPjaeU7/MuAs4NCIaDumtt//QSStTvr2RWleAOwn6WpJlwMfAG6pW6jn9G0UHt63\nkY16Rx0R+07x2kdrB7TcxKg7RsQGld9vBR7SREB1RMQabccwqHqcCrIj8OumC607px8Rt5AudM1a\n5zt9G0e9tgOwVUvSUcCZwLvbjmVV8Zy+jcJJ30ZW6vCiO8PuiYhPRMSOEfHdpsv23963ceKkb2On\n1IsRsya5ndsonPRtZAXfUU+0HYCND39P38aJk76No17bAZjNtYIvuq1gTvo2slKHF90ZWpM8p2/j\nxEnfxk6pFyNmTXI7t1E46dvICr6jnmg7ABsfntO3ceKkb+Oo13YAZnOt4ItuK5iTvo2s1OFFd4bW\nJM/p2zhx0rexU+rFiFmT3M5tFE76NrKC76gn2g7Axofn9G2cOOnbOOq1HYDZXCv4otsKpvb/h06b\nr/pznf07oVKWKTPpT1BeXBM4pmEcBlzXdruebtlsZTjp29iRNFnaXZCkXmmdtGMaTontyWxUHt63\ncTTRdgBmc80P8tkonPRtZAV3Or22AxhU2t0rOCazLnLSt7HjoVjrArdzG4WTvo2s1E6nxBGIEv/A\ni2My6x4nfRtHE20HYDbXSry4tfI56dvICu50em0HMKjEuWrHZNY9Tvo2dkqddjBrktu5jcJJ30ZW\naqdT4ghEiXPVjsmse5z0bRxNtB2A2Vwr8eLWyuekbyMruNPptR3AoBLnqh2TWfc46dvYKXXawaxJ\nbuc2Cid9G1mpnU6JIxAlzlU7JrPucdK3cTTRdgBmc63Ei1srn5O+jaxOpyPpRElvrCx/S9InK8v/\nKOlNIxbfqxHXksrvB0j6X0lbj1pe36hz1ZKeL+kySZfmf5dJuk/Ss1uMaZNKTDdL+k1leUFLMW0l\n6RpJG+XljfPyNnXiaYKkd0u6QtLP8zF6UtsxWXfVOkHNargIOBj4iCQBmwHrV9Y/FRgp6decdggA\nSfsCJwPPioiFNcqrJSLOA87rL0t6NfDSiPj3FmNaDOya43kvcFdEnNhWPDmm30g6FfggcBRwPPDx\niLihzbgk7QkcAOwSEfdK2gRYs4myS51es7L5Tt9GVrPTuZiU2AEeD1wBLJG0oaQ1ge2BS0cpuOaw\npyQ9A/gEcGBEXFejrGqhvQbK2A54L/Dy2gHR2Py5GihjeWH1YjoZeLKko0lt68ONBFXPFsCiiLgX\n0gVTRNzSckzWYU761oqIuBm4R9JWpA76YuBHwFOA3YHL+x3lCCZqhLYW8FXg+RHxqxrlNCoPm58J\nvDkibmw7nhLl9vJ24CTg6Ii4r+WQAL4NbJOniU6R9GdNFew5fRuFk76NrIFO52LgaaSk/0Pgksry\nRTXK7dXY954c1xE1yniQBr5//vfAFRHxpQbCAcr8TnwDMR0A3ATsVD+a+iJiKbAbcCRwG3C2pEPb\njcq6zEnf2tQf4t+RNLx/CelO/yl53UhqTjvcB/wlsIekd9YopzGSJoAXAK9rOZSiSdoF2BfYEzhG\n0uYthwRAJN/P7fINwAsbKneyiXKsW5z0bWQNdDoXA88FFueO8XZgI2om/bpz+hHxR+BA4KWSDq9R\nVjWm3oj7bQycDhwaEcuaiKVuTHOpZkynkob1fwN8iALm9CVtJ+kxlZd2Aa5vKx4zJ31r0+XApqSh\n/eprd+QnxEc1UWPfAMgXIPsD75b03Brl1XUU8FDgtMpX9i6VdHCLMRUnf6vh+oi4IL90GrB9fiiz\nTQ8BPpe/svczYAdgsomCPadvo1BEtB2DzVOSJkscYiw1LpufSm1PpcZlZfOdvo0dd4TWBW7nNgon\nfRtZqZ1OicOeYzh/PidKjMlsnDjp2ziaaDsAs7lW4sWtlc9J30ZWcKfTazuAQWP6nfjGlRiT2Thx\n0rexU+q0g1mT3M5tFE76NrJSO50SRyBKnKt2TGbd46Rv42ii7QDM5lqJF7dWPid9G1nBnU6v7QAG\nlThX7ZjMusdJ38ZOqdMOZk1yO7dROOnbyErtdEocgShxrtoxmXWPk76No4m2AzCbayVe3Fr5nPRt\nZAV3Or22AxhU4ly1YzLrHid9GzulTjuYNcnt3Ebh/2XPRta/0+93Pg0tTwC9iJissUwDZfQqcfVy\nnBM1lh8BfLZuTDRrIv9s5Fg1tHwYcF3NY11dLjWmxs4bs5XhpG9FKPG/CZXUK224ucTjBGXG5foz\nezAP75tZEybaDsDMZuekb0Uo8e6ntLvEwvXaDmBQifVXYju3bnHSN7PanMzM5gcnfStCiV//8x+K\nGZ7rbzglHifrFid9M2vCRNsBmNnsnPStCCUOD5c4J1ywXtsBDCqx/kps59YtTvpmVpuTmdn84KRv\nRShxrrPEOeFSuf6GU+Jxsm5x0jezJky0HYCZzc5J34pQ4vBwiXPCBeu1HcCgEuuvxHZu3eKkb2a1\nOZmZzQ/IZFpdAAAHCElEQVRO+laEEuc6S5wTLpXrbzglHifrFid9M2vCRNsBmNnsnPStCCUOD5c4\nJ1ywXtsBDCqx/kps59YtTvo270la0nYMU5G0paTzJP1S0q8knSRpQUExXS3pI5LWqFvuqMlM0raS\nLh947ThJx9SNqQ5JfyLpzHyMfiLpIkkHtRmTWROc9K0INec6o6k4qhqYE/4K8JWI2A7YDlgf+EDd\nuGqqxvRYYF3ghLqFjmH9nQf0IuIxEfEk4CXAVg3ENFm3DLM6nPTN5oCkfYA/RMQZABERwJuBwyWt\nXVhMh0pat2bxEzX3L0Y+TndHxKf6r0XEwog4pcWwzBrhpG9FKHGus+ac8OOBnw6UtwS4HnhMjXLr\nmC6ma6kfU6/m/o2rUX+PBy5tMJQHlNjOrVuc9M1WLbUdwBRqx1QjmU03tD8nQ/6jkPQxST+T9KO2\nYzGry0nfilDiXGfNOeGrgN0HytsA2Bq4uka5dUwX0+bAL+oUXKP+fgdsMvDaJsCiOvFArfq7Enhi\nfyEiXg/sCzy0gZgm65ZhVoeTvo2D4u6eI+K7wDqSXg4gaXXgH4HPRMQfC4vpoxFxd83iJ0aMaSlw\nk6S9c0ybAM8GflAznpFFxAXAWpKOqry8XlvxmDVJ6Vkes/lL0r3ATaTkH8CJEXFyu1Glr8cBpwHb\nk2I7H3hrRNxTo8zJOvPCOaZTgR1Id65nR8RrRy2vibgkbZ9j2phUfx+KiLPrxlSHpM2Bk4E9gNuA\npcBpEfGlNuMyq8tJ32weqZv0B8raEzgLeEFE/KyJMs2sbB7etyKUONdZ4t9ub1JEXBIRj2wi4bv+\nhlPicbJucdI3syZMtB2Amc3OSd+KUOL3l0v82+0F67UdwKAS66/Edm7d4qRvZrU5mZnND076VoQS\n5zpLnBMuletvOCUeJ+sWJ30za8JE2wGY2eyc9K0IJQ4PlzgnXLBe2wEMKrH+Smzn1i1O+mZWm5OZ\n2fzgpG9FKHGus8Q54VK5/oZT4nGybnHSN7MmTLQdgJnNzknfilDi8HCJc8IF67UdwKAS66/Edm7d\n4qRvZrU5mZnND076VgRJk9X5zoaWe/3XRly+rjovnNfXWa4dE3BYaTH1y2ygjGr91f1cvVx/TcbU\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": {}, @@ -1975,9 +2011,39 @@ }, { "data": { - "image/png": "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\nyVbnVgAAAABJRU5ErkJggg==\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\n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\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": {}, @@ -1987,8 +2053,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 24s, sys: 188 ms, total: 2min 25s\n", + "Wall time: 2min 25s\n" ] } ], @@ -2013,9 +2079,9 @@ "outputs": [ { "data": { - "image/png": "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\nP/K3c1luY46PAAAAAElFTkSuQmCC\n", + "image/png": "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\ntBY92c7W9wcAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2029,6 +2095,129 @@ " '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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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "report({'keybee': 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. \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:" + ] + }, + { + "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": {}, @@ -2058,7 +2247,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", @@ -2068,14 +2257,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": {}, 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 b35efb0..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", @@ -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." ] }, @@ -435,13 +435,13 @@ "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", "* `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" 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'