From 7d459a513ef512555fd3a17fe240730fde25becc Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 1 Jan 2018 16:28:00 -0800 Subject: [PATCH] Countdown.ipynb updated with Littman Countdown --- ipynb/Countdown.ipynb | 826 ++++++++++++++++++++++++------------------ 1 file changed, 464 insertions(+), 362 deletions(-) diff --git a/ipynb/Countdown.ipynb b/ipynb/Countdown.ipynb index bf97dd4..dc61328 100644 --- a/ipynb/Countdown.ipynb +++ b/ipynb/Countdown.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Peter Norvig
5 January 2016
" + ] + }, { "cell_type": "markdown", "metadata": { @@ -10,11 +17,9 @@ } }, "source": [ - "
Peter Norvig
5 January 2016
\n", - "\n", "# Countdown to 2016\n", "\n", - "Alex Bellos [posed](http://www.theguardian.com/science/2016/jan/04/can-you-solve-it-complete-the-equation-10-9-8-7-6-5-4-3-2-1-2016) this New Year's puzzle:\n", + "In 2016 Alex Bellos [posed](http://www.theguardian.com/science/2016/jan/04/can-you-solve-it-complete-the-equation-10-9-8-7-6-5-4-3-2-1-2016) this New Year's puzzle:\n", "\n", "\n", "> Fill in the blanks so that this equation makes arithmetical sense:\n", @@ -354,6 +359,7 @@ "execution_count": 7, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -503,8 +509,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 29.1 s, sys: 713 ms, total: 29.8 s\n", - "Wall time: 29.8 s\n" + "CPU times: user 30.1 s, sys: 767 ms, total: 30.9 s\n", + "Wall time: 31 s\n" ] }, { @@ -600,6 +606,7 @@ "execution_count": 12, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -784,8 +791,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1min 4s, sys: 1.12 s, total: 1min 5s\n", - "Wall time: 1min 5s\n" + "CPU times: user 1min 4s, sys: 1.15 s, total: 1min 6s\n", + "Wall time: 1min 6s\n" ] }, { @@ -1024,7 +1031,7 @@ "\n", "def expr(numbers, value, exp, count):\n", " \"Fill EXPS[numbers][val] with exp, and increment COUNTS.\"\n", - " if numbers == c10 and value != 2016: \n", + " if numbers is c10 and value != 2016: \n", " return\n", " EXPS[numbers][value] = exp\n", " COUNTS[numbers][value] += count" @@ -1058,8 +1065,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 12min 25s, sys: 1.44 s, total: 12min 26s\n", - "Wall time: 12min 27s\n" + "CPU times: user 12min 43s, sys: 1.82 s, total: 12min 45s\n", + "Wall time: 12min 46s\n" ] }, { @@ -1112,7 +1119,7 @@ "- **Irrationals**: `(3 ** (1 / 2))` is an irrational number; so we can't do exact rational arithmetic.\n", "- **Imaginaries**: `(-1 ** (1 / 2))` is an imaginary number, but Python gives a `ValueError`.\n", "- **Overflow**: `(10. ** (9. ** 8.))`, as a `float`, gives a `OverflowError`.\n", - "- **Finite memory**: [`(10 ** (9 ** (8 * 7)))`](http://www.wolframalpha.com/input/?i=10+%5E+9+%5E+56), as an `int`, gives an `OutOfMemoryError` (even if your memory was expanded to use every atom on Earth).\n", + "- **Finite memory**: [`(10 ** (9 ** (8 * 7)))`](http://www.wolframalpha.com/input/?i=10+%5E+9+%5E+56), as an `int`, gives an `OutOfMemoryError` (even if your memory uses every atom on Earth).\n", "\n", "How do we deal with this? We can't do exact rational arithmetic. We could try to do exact *algebra*, perhaps using [SymPy](http://www.sympy.org/en/index.html), but that seems difficult\n", "and computationally expensive, so instead I will abandon the goal of exact computation, and do everything in the domain of floats (reluctantly accepting that there will be some round-off errors). We'll coerce numbers to floats when we first put them in the table, and all subsequent operations will be with floats. I define a new function, `expr2`, to call `expr`, catching arithmetic errors. Since we are making some rather arbitrary decisions about what expressions are allowed (e.g. imaginary numbers are not), I'll give up on trying to maintain `COUNTS`." @@ -1123,6 +1130,7 @@ "execution_count": 23, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1218,6 +1226,7 @@ "execution_count": 25, "metadata": { "button": false, + "collapsed": true, "new_sheet": false, "run_control": { "read_only": false @@ -1356,21 +1365,21 @@ "\n", "- **digit concatenation**: `55`\n", "- **decimal point**: `.5`\n", - "- **unary operations**: `5!` and √ `5`\n", + "- **unary operations**: `-5`, `5!` and √ `5`\n", "\n", "\n", "We'll refactor `expressions` to call these three new subfunctions:\n", "\n", "- `digit_expressions`: For every subsequence of numbers, we'll smush the digits together, and then make a table entry for those resulting digits as an integer, and with a decimal point in each possible position.\n", "- `binary_expressions`: The code that previously was the main body of `expressions`.\n", - "- `unary_expressions`: Apply the unary operators to every entry in the table. (Because it applies to entries already in the table, make sure to call `unary_expressions` last.)\n", + "- `unary_expressions`: Apply the unary operators to every entry in the table. \n", "\n", "We'll still do all computation in the domain of floats." ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 67, "metadata": { "button": false, "new_sheet": false, @@ -1393,10 +1402,19 @@ "def digit_expressions(numbers):\n", " \"Fill tables with expressions made from the digits of numbers, and a decimal point.\"\n", " exp = ''.join(str(n) for n in numbers)\n", - " expr(numbers, float(exp), exp)\n", + " leading_zero = exp.startswith('0')\n", + " if valid_digits(exp):\n", + " expr(numbers, float(exp), exp)\n", + " expr(numbers, -float(exp), '-' + exp)\n", " for d in range(len(exp)):\n", " decimal = exp[:d] + '.' + exp[d:]\n", - " expr(numbers, float(decimal), decimal)\n", + " if valid_digits(exp[:d]):\n", + " expr(numbers, float(decimal), decimal)\n", + " expr(numbers, -float(decimal), '-' + decimal)\n", + " \n", + "def valid_digits(digits):\n", + " \"Allow '0', but not '012'.\"\n", + " return digits == '0' or digits == '' or digits[0] != '0'\n", " \n", "def binary_expressions(numbers):\n", " \"Fill tables with all expressions formed by splitting numbers and combining with an op.\"\n", @@ -1411,8 +1429,10 @@ " expr2(numbers, L, sub, R, Lexp + '-' + Rexp)\n", " \n", "def unary_expressions(numbers):\n", - " for v in list(EXPS[numbers]):\n", + " \"Fill tables for -v, √v and v!\"\n", + " for v in tuple(EXPS[numbers]):\n", " exp = EXPS[numbers][v]\n", + " expr(numbers, -v, '-(' + exp + ')')\n", " if v > 0: \n", " expr(numbers, sqrt(v), '√' + exp)\n", " if 2 <= v <= 6 and v == int(v):\n", @@ -1429,12 +1449,12 @@ } }, "source": [ - "Now that we have more variety in the types of expressions formed, I want to choose a \"good\" expression to represent each value. I'll modify `expr` so that when there are multiple expressions for a value, it chooses the one with the least \"weight,\" where I define `weight` as the length of the string, plus a penalty of 1 for every square root sign (just because square root feels \"heavier\" than the other operations):" + "Now that we have more variety in the types of expressions formed, I want to choose a \"good\" expression to represent each value. I'll modify `expr` so that when there are multiple expressions for a value, it chooses the one with the least \"weight,\" where I define `weight` as the length of the string, plus a penalty of 2 for every square root sign (just because square root feels \"heavier\" than the other operations) and of 1 for every decimal point." ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 68, "metadata": { "button": false, "collapsed": true, @@ -1446,10 +1466,11 @@ "outputs": [], "source": [ "def expr(numbers, value, exp): \n", + " \"Fill EXPS[numbers][val] with exp, unless we already have a lighter exp.\"\n", " if value not in EXPS[numbers] or weight(exp) < weight(EXPS[numbers][value]):\n", " EXPS[numbers][value] = exp\n", " \n", - "def weight(exp): return len(exp) + exp.count('√')" + "def weight(exp): return len(exp) + 2 * exp.count('√') + exp.count('.') " ] }, { @@ -1467,7 +1488,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 69, "metadata": { "button": false, "new_sheet": false, @@ -1480,8 +1501,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 43.5 s, sys: 1.44 s, total: 45 s\n", - "Wall time: 45 s\n" + "CPU times: user 1min 56s, sys: 2.4 s, total: 1min 59s\n", + "Wall time: 1min 59s\n" ] }, { @@ -1490,23 +1511,23 @@ "{0: '(5*(55-55))',\n", " 1: '((55/55)**5)',\n", " 2: '(55/(.5*55))',\n", - " 3: '√(5!-(555/5))',\n", + " 3: '(5-(5!/(5+55)))',\n", " 4: '(5-(55/55))',\n", - " 5: '(5.55-.55)',\n", + " 5: '(5+(55-55))',\n", " 6: '(5+(55/55))',\n", " 7: '(((5+55)/5)-5)',\n", - " 8: '(.5*(5+(55/5)))',\n", + " 8: '(((5!-55)/5)-5)',\n", " 9: '(5!-(555/5))',\n", " 10: '(5!-(55+55))',\n", - " 11: '(5.5/(5.5-5))',\n", + " 11: '(5+((55/5)-5))',\n", " 12: '(5!/(55/5.5))',\n", " 13: '((5+(5+55))/5)',\n", " 14: '((5*5)-(55/5))',\n", " 15: '(5+(55/5.5))',\n", - " 16: '(5+(5.5+5.5))',\n", + " 16: '(((5*5)+55)/5)',\n", " 17: '(5+((5+55)/5))',\n", " 18: '(5+((5!-55)/5))',\n", - " 19: '((5*5)-(.5+5.5))',\n", + " 19: '((5*5)-(5+(5/5)))',\n", " 20: '(55/(5*.55))',\n", " 21: '(5+(5+(55/5)))',\n", " 22: '((55+55)/5)',\n", @@ -1515,8 +1536,8 @@ " 25: '(55-(5+(5*5)))',\n", " 26: '(55-(5+(5!/5)))',\n", " 27: '(.5*(55-(5/5)))',\n", - " 28: '(.5*(.5+55.5))',\n", - " 29: '(5+(5!/(5.5-.5)))',\n", + " 28: '(.5*((5/5)+55))',\n", + " 29: '(5+((5*5)-(5/5)))',\n", " 30: '(5*((55/5)-5))',\n", " 31: '(55-(5-(5/5))!)',\n", " 32: '(55-((5!-5)/5))',\n", @@ -1526,45 +1547,45 @@ " 36: '((5*5)+(55/5))',\n", " 37: '((5!+(5!-55))/5)',\n", " 38: '(5+(.5*(5!*.55)))',\n", - " 39: '(((5*5)-5.5)/.5)',\n", + " 39: '(5+(5+(5+(5!/5))))',\n", " 40: '(55-(5+(5+5)))',\n", " 41: '(5!-((5!/5)+55))',\n", - " 42: '((5+5.5)/(.5*.5))',\n", + " 42: '((5!*.55)-(5!/5))',\n", " 43: '(55-(5!/(5+5)))',\n", " 44: '(55-(55/5))',\n", " 45: '((5*5!)-555)',\n", - " 46: '(55-((5-.5)/.5))',\n", + " 46: '((5!+(55/.5))/5)',\n", " 47: '((5!/5)+((5!-5)/5))',\n", " 48: '(5!/(5*(5.5-5)))',\n", - " 49: '(55-(.5+5.5))',\n", + " 49: '(55-(5+(5/5)))',\n", " 50: '(55.5-5.5)',\n", - " 51: '(.5+(55.5-5))',\n", + " 51: '((5/5)+(55-5))',\n", " 52: '(55-(.5+(.5*5)))',\n", - " 53: '(55.5-(.5*5))',\n", + " 53: '(55-((5+5)/5))',\n", " 54: '(((5*55)-5)/5)',\n", " 55: '(.5*(55+55))',\n", " 56: '((5+(5*55))/5)',\n", " 57: '(55+((5+5)/5))',\n", " 58: '((.5*5)+55.5)',\n", " 59: '(5+(55-(5/5)))',\n", - " 60: '(5+(55.5-.5))',\n", + " 60: '(5+(5+(55-5)))',\n", " 61: '(5.5+55.5)',\n", " 62: '((55-(5!/5))/.5)',\n", " 63: '(5.5+(.5*(5!-5)))',\n", - " 64: '(5!-(.5+55.5))',\n", - " 65: '(.5+(5!-55.5))',\n", + " 64: '(5!-((5/5)+55))',\n", + " 65: '(5*((5!-55)/5))',\n", " 66: '(55+(55/5))',\n", " 67: '(55+(5!/(5+5)))',\n", " 68: '(5.5+(.5*(5+5!)))',\n", " 69: '(5!-((.5+(5*5))/.5))',\n", " 70: '(5+(5+(5+55)))',\n", " 71: '((.5*5!)+(55/5))',\n", - " 72: '((.5+5.5)!/(5+5))',\n", - " 73: '((5*5)+(5!/(.5*5)))',\n", + " 72: '((5+(5/5))!/(5+5))',\n", + " 73: '((5*5)+((5!+5!)/5))',\n", " 74: '((5!/5)+(55-5))',\n", " 75: '((5*5)+(55-5))',\n", " 76: '(5+(5+(5!*.55)))',\n", - " 77: '(5+(.5*(5!+(5!/5))))',\n", + " 77: '(5+(5!-((5!+5!)/5)))',\n", " 78: '(55+((5!-5)/5))',\n", " 79: '(55+(5-(5/5))!)',\n", " 80: '(5*(5+(55/5)))',\n", @@ -1581,22 +1602,22 @@ " 91: '((5*5)+(5!*.55))',\n", " 92: '(5!-(.5+(.5*55)))',\n", " 93: '(.5+(5!-(.5*55)))',\n", - " 94: '(5!-((5/5)+(5*5)))',\n", + " 94: '(5!-((5*5)+(5/5)))',\n", " 95: '(((55-5)/.5)-5)',\n", - " 96: '(5!-(5!/(5.5-.5)))',\n", + " 96: '(5!-((5*5)-(5/5)))',\n", " 97: '(5!-((5!/5)-(5/5)))',\n", " 98: '(5!-(55/(.5*5)))',\n", " 99: '((55-5.5)/.5)',\n", " 100: '((55/.5)-(5+5))',\n", " 101: '((55.5-5)/.5)',\n", " 102: '(5+(5!-((5!-5)/5)))',\n", - " 103: '(55+(5!/(.5*5)))',\n", + " 103: '(55+((5!+5!)/5))',\n", " 104: '(5!-(5+(55/5)))',\n", " 105: '(55+(55-5))',\n", " 106: '((555/5)-5)',\n", " 107: '(5!-((5!-55)/5))',\n", " 108: '(5!-((5+55)/5))',\n", - " 109: '(5!-(5.5+5.5))',\n", + " 109: '(((5*5!)-55)/5)',\n", " 110: '((555-5)/5)',\n", " 111: '(555/√(5*5))',\n", " 112: '((5+555)/5)',\n", @@ -1604,39 +1625,39 @@ " 114: '(5+(5!-(55/5)))',\n", " 115: '(5+(55+55))',\n", " 116: '(5+(555/5))',\n", - " 117: '(5!-(5.5-(.5*5)))',\n", + " 117: '(5!-(5-((5+5)/5)))',\n", " 118: '(5!-(5!/(5+55)))',\n", " 119: '(5!-(55/55))',\n", - " 120: '(5.55-.55)!',\n", + " 120: '(5!+(55-55))',\n", " 121: '(5!+(55/55))',\n", " 122: '(5!+(5!/(5+55)))',\n", - " 123: '(5!+(5.5-(.5*5)))',\n", - " 124: '(5!+√(5+(55/5)))',\n", + " 123: '(5+(5!-((5+5)/5)))',\n", + " 124: '((5*(5*5))-(5/5))',\n", " 125: '(.5*(5*(55-5)))',\n", " 126: '(5!+((55/5)-5))',\n", - " 127: '((5!/(5/5.5))-5)',\n", - " 128: '(5!+(5.5+(.5*5)))',\n", + " 127: '((5!*(5.5/5))-5)',\n", + " 128: '(5!+(5!/(5+(5+5))))',\n", " 129: '((5!-55.5)/.5)',\n", " 130: '(5!+(55/5.5))',\n", - " 131: '(5!+(5.5+5.5))',\n", - " 132: '(5!*(.55+.55))',\n", + " 131: '((55+(5*5!))/5)',\n", + " 132: '(5!+((5+55)/5))',\n", " 133: '(5!+((5!-55)/5))',\n", " 134: '((5!/5)+(55/.5))',\n", " 135: '((5!+555)/5)',\n", " 136: '(5+(5!+(55/5)))',\n", - " 137: '(5+(5!/(5/5.5)))',\n", + " 137: '(5+(5!*(5.5/5)))',\n", " 138: '(.5+(.5*(5*55)))',\n", - " 139: '(((.5+5.5)!/5)-5)',\n", + " 139: '(((5+(5/5))!/5)-5)',\n", " 140: '(.5*(5+(5*55)))',\n", " 141: '(5!+((5+5.5)/.5))',\n", " 142: '(5!+(55/(.5*5)))',\n", - " 143: '(((.5+5.5)!-5)/5)',\n", + " 143: '(((5+(5/5))!-5)/5)',\n", " 144: '(((55/5)-5)!/5)',\n", " 145: '(5!+(.5*(55-5)))',\n", - " 146: '(5!+((5/5)+(5*5)))',\n", + " 146: '(5!+((5*5)+(5/5)))',\n", " 147: '(5!+((.5*55)-.5))',\n", " 148: '(.5+(5!+(.5*55)))',\n", - " 149: '(5+((.5+5.5)!/5))',\n", + " 149: '(5+((5+(5/5))!/5))',\n", " 150: '(5*(55-(5*5)))',\n", " 151: '(5!+(55-(5!/5)))',\n", " 152: '(5!+(((5+5)/5)**5))',\n", @@ -1646,7 +1667,7 @@ " 156: '((5!+(5!*5.5))/5)'}" ] }, - "execution_count": 30, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -1667,7 +1688,9 @@ } }, "source": [ - "Wow! We almost tripled the 55 goal! I have to say, I would never have come up with the solution for 81 on my own. It works because (√(5 - .5) \\* √0.5) = √(4.5 \\* 0.5) = (√2.25) = 1.5." + "Wow! We almost tripled the 55 goal! \n", + "\n", + "I have to say, I would never have come up with the solution for 81 on my own. It works because (√(5 - .5) \\* √.5) = √(4.5 \\* 0.5) = (√2.25) = 1.5." ] }, { @@ -1682,7 +1705,7 @@ "source": [ "# Even More Operations \n", "\n", - "At the risk of making the computation take even longer, I'm going to add two more operations:\n", + "At the risk of making the computation take even longer, I'm going to add two more unary operations:\n", "\n", "- **Floor**: ⌊*x*⌋ is the largest integer less than or equal to *x* (in other words, rounding down).\n", "- **Ceiling**: ⌈*x*⌉ is the smallest integer greater than or equal to *x* (in other words, rounding up).\n", @@ -1703,7 +1726,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 70, "metadata": { "button": false, "collapsed": true, @@ -1716,15 +1739,19 @@ "source": [ "from math import floor, ceil\n", "\n", + "floor_ceil_allowed = True # Should we allow floor and ceil?\n", + "\n", "def unary_expressions(numbers):\n", + " \"Fill tables for -v, √v and v!, ⌊x⌋, and ⌈x⌉\"\n", " for i in range(2):\n", " for v in list(EXPS[numbers]):\n", " exp = EXPS[numbers][v]\n", + " expr(numbers, -v, '-(' + exp + ')')\n", " if 0 < v <= 100 and 4*v == round(4*v):\n", " expr(numbers, sqrt(v), '√' + exp)\n", " if 2 <= v <= 6 and v == round(v):\n", " expr(numbers, factorial(v), exp + '!')\n", - " if v != round(v):\n", + " if floor_ceil_allowed and v != round(v):\n", " uexp = unbracket(exp)\n", " expr(numbers, floor(v), '⌊' + uexp + '⌋')\n", " expr(numbers, ceil(v), '⌈' + uexp + '⌉')\n", @@ -1752,7 +1779,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 71, "metadata": { "button": false, "new_sheet": false, @@ -1765,72 +1792,72 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2min 25s, sys: 1.42 s, total: 2min 26s\n", - "Wall time: 2min 26s\n" + "CPU times: user 6min 54s, sys: 2.69 s, total: 6min 57s\n", + "Wall time: 6min 58s\n" ] }, { "data": { "text/plain": [ - "{0: '⌊.55555⌋',\n", - " 1: '⌈.55555⌉',\n", + "{0: '⌊5/5555⌋',\n", + " 1: '⌈5/5555⌉',\n", " 2: '⌊5*.5555⌋',\n", " 3: '⌈5*.5555⌉',\n", " 4: '⌊5-.5555⌋',\n", " 5: '⌊5.5555⌋',\n", " 6: '⌈5.5555⌉',\n", " 7: '⌈.5+5.555⌉',\n", - " 8: '⌈√55+.555⌉',\n", - " 9: '⌊55/5.55⌋',\n", + " 8: '(5+⌈5*.555⌉)',\n", + " 9: '⌊5/.5555⌋',\n", " 10: '⌊555/55⌋',\n", " 11: '⌈555/55⌉',\n", " 12: '⌈55.55/5⌉',\n", - " 13: '⌈√5*5.555⌉',\n", - " 14: '⌈√55/.555⌉',\n", + " 13: '⌊55/⌊5-.55⌋⌋',\n", + " 14: '(5+⌊5/.555⌋)',\n", " 15: '(5+(55/5.5))',\n", " 16: '(5+⌊55.5/5⌋)',\n", " 17: '(5+⌈55.5/5⌉)',\n", - " 18: '⌊55/⌈5*.55⌉⌋',\n", - " 19: '⌈55/⌈5*.55⌉⌉',\n", - " 20: '(5*⌊5-.555⌋)',\n", + " 18: '⌊55/⌈5!/55⌉⌋',\n", + " 19: '⌈55/⌈5!/55⌉⌉',\n", + " 20: '(5*⌊555/5!⌋)',\n", " 21: '⌊5!/5.555⌋',\n", - " 22: '⌈5!/5.555⌉',\n", + " 22: '((55+55)/5)',\n", " 23: '⌈555/(5*5)⌉',\n", " 24: '⌊5-.5555⌋!',\n", - " 25: '(5*⌊5.555⌋)',\n", - " 26: '(⌈.55*55⌉-5)',\n", + " 25: '(5*⌈555/5!⌉)',\n", + " 26: '⌈55*(55/5!)⌉',\n", " 27: '⌊5*5.555⌋',\n", " 28: '⌈5*5.555⌉',\n", - " 29: '(5+⌊5-.555⌋!)',\n", + " 29: '(5+⌊555/5!⌋!)',\n", " 30: '⌊55*.555⌋',\n", " 31: '⌈55*.555⌉',\n", " 32: '(5+⌊5*5.55⌋)',\n", " 33: '(5+⌈5*5.55⌉)',\n", - " 34: '⌈⌈5.5⌉*5.55⌉',\n", + " 34: '(55-⌊5!/5.5⌋)',\n", " 35: '(5+⌊.55*55⌋)',\n", " 36: '(5+⌈.55*55⌉)',\n", " 37: '⌊5*(55/√55)⌋',\n", - " 38: '⌊⌊√55⌋*5.55⌋',\n", - " 39: '⌊√.5*55.55⌋',\n", - " 40: '⌊5.5*√55.5⌋',\n", + " 38: '⌈5*(55/√55)⌉',\n", + " 39: '(55-⌊5!/√55⌋)',\n", + " 40: '(5*⌈55/√55⌉)',\n", " 41: '⌊√55*5.55⌋',\n", " 42: '⌈√55*5.55⌉',\n", " 43: '(55-⌊5+√55⌋)',\n", " 44: '(55-(55/5))',\n", - " 45: '(5*⌊5/.555⌋)',\n", + " 45: '((5*5!)-555)',\n", " 46: '⌊5555/5!⌋',\n", " 47: '⌈5555/5!⌉',\n", " 48: '⌈55-√55.5⌉',\n", " 49: '⌊55-5.55⌋',\n", " 50: '⌊55.55-5⌋',\n", " 51: '⌈55.55-5⌉',\n", - " 52: '(55-⌈5*.55⌉)',\n", - " 53: '⌊55.55-√5⌋',\n", + " 52: '(55-⌈5!/55⌉)',\n", + " 53: '(55-⌊5!/55⌋)',\n", " 54: '⌊55-.555⌋',\n", " 55: '⌊55.555⌋',\n", " 56: '⌈55.555⌉',\n", - " 57: '⌈.5+55.55⌉',\n", - " 58: '⌈√5+55.55⌉',\n", + " 57: '(55+⌊5!/55⌋)',\n", + " 58: '(55+⌈5!/55⌉)',\n", " 59: '(5+⌊55-.55⌋)',\n", " 60: '⌊5+55.55⌋',\n", " 61: '⌈5+55.55⌉',\n", @@ -1838,7 +1865,7 @@ " 63: '⌈√55+55.5⌉',\n", " 64: '⌊5!-55.55⌋',\n", " 65: '⌈5!-55.55⌉',\n", - " 66: '⌊5!*.5555⌋',\n", + " 66: '(55+(55/5))',\n", " 67: '⌈5!*.5555⌉',\n", " 68: '(5+⌈55+√55⌉)',\n", " 69: '⌊555/⌈√55⌉⌋',\n", @@ -1850,17 +1877,17 @@ " 75: '⌈555/√55⌉',\n", " 76: '(55+⌊5!/5.5⌋)',\n", " 77: '(55+⌈5!/5.5⌉)',\n", - " 78: '⌊55.55/√.5⌋',\n", + " 78: '(55+((5!-5)/5))',\n", " 79: '⌊555/⌊√55⌋⌋',\n", " 80: '⌊(5*5)+55.5⌋',\n", " 81: '⌈(5*5)+55.5⌉',\n", " 82: '(55+⌊.5*55⌋)',\n", " 83: '(55+⌈.5*55⌉)',\n", " 84: '(5+((5!/5)+55))',\n", - " 85: '(5+(55+(5*5)))',\n", - " 86: '⌊⌈5+55.5⌉/√.5⌋',\n", + " 85: '(5+((5*5)+55))',\n", + " 86: '(5!-⌈5**(5!/55)⌉)',\n", " 87: '((555-5!)/5)',\n", - " 88: '⌈√5**5.555⌉',\n", + " 88: '⌈5**(5*.555)⌉',\n", " 89: '(5!-⌈.55*55⌉)',\n", " 90: '⌊(55-5)/.55⌋',\n", " 91: '⌈(55-5)/.55⌉',\n", @@ -1868,14 +1895,14 @@ " 93: '⌈555/⌈5.5⌉⌉',\n", " 94: '(⌊55/.55⌋-5)',\n", " 95: '(⌈55/.55⌉-5)',\n", - " 96: '⌊.55*(5!+55)⌋',\n", + " 96: '(5!-⌊555/5!⌋!)',\n", " 97: '⌈.55*(5!+55)⌉',\n", - " 98: '(⌊55-5.5⌋/.5)',\n", + " 98: '(5!-⌈5!/5.55⌉)',\n", " 99: '⌊55/.555⌋',\n", " 100: '⌊555/5.5⌋',\n", " 101: '⌈555/5.5⌉',\n", " 102: '⌈⌈55.5⌉/.55⌉',\n", - " 103: '⌊⌊√5+55⌋/.55⌋',\n", + " 103: '(55+((5!+5!)/5))',\n", " 104: '(5+⌊55/.55⌋)',\n", " 105: '(55+(55-5))',\n", " 106: '((555/5)-5)',\n", @@ -1887,7 +1914,7 @@ " 112: '⌈555.5/5⌉',\n", " 113: '(55+⌈√5+55⌉)',\n", " 114: '⌊5!-5.555⌋',\n", - " 115: '⌈5!-5.555⌉',\n", + " 115: '(5+(55+55))',\n", " 116: '(5+(555/5))',\n", " 117: '(5!-⌈5*.555⌉)',\n", " 118: '(5!-⌈5.55/5⌉)',\n", @@ -1896,20 +1923,20 @@ " 121: '⌈5!+.5555⌉',\n", " 122: '(5!+⌈5.55/5⌉)',\n", " 123: '⌊555/(5-.5)⌋',\n", - " 124: '⌊√5*55.55⌋',\n", + " 124: '(5!+⌊555/5!⌋)',\n", " 125: '⌊5!+5.555⌋',\n", " 126: '⌈5!+5.555⌉',\n", - " 127: '⌊⌊5**5.5⌋/55⌋',\n", - " 128: '⌈⌊5**5.5⌋/55⌉',\n", + " 127: '⌊(5**5.5)/55⌋',\n", + " 128: '⌈(5**5.5)/55⌉',\n", " 129: '(5!+⌊5/.555⌋)',\n", - " 130: '⌊√5.5*55.5⌋',\n", - " 131: '⌈√5.5*55.5⌉',\n", + " 130: '(5+⌊5!+5.55⌋)',\n", + " 131: '(5+⌈5!+5.55⌉)',\n", " 132: '(5!+⌈55.5/5⌉)',\n", " 133: '⌈55*(√55-5)⌉',\n", - " 134: '⌊55*√⌈5.55⌉⌋',\n", - " 135: '(5*⌊5*5.55⌋)',\n", - " 136: '⌈√⌈5.5⌉*55.5⌉',\n", - " 137: '⌊5.5*⌈55/√5⌉⌋',\n", + " 134: '⌈5!*(5.55/5)⌉',\n", + " 135: '((5!+555)/5)',\n", + " 136: '(5+(5!+(55/5)))',\n", + " 137: '⌊5*(55/⌊.5*5⌋)⌋',\n", " 138: '⌊5*(5*5.55)⌋',\n", " 139: '⌈5*(5*5.55)⌉',\n", " 140: '(5*⌈5*5.55⌉)',\n", @@ -1925,21 +1952,21 @@ " 150: '(5*⌊.55*55⌋)',\n", " 151: '⌊.55*(5*55)⌋',\n", " 152: '⌈.55*(5*55)⌉',\n", - " 153: '⌊55*(√5+.55)⌋',\n", + " 153: '⌈5*(5.5+(5*5))⌉',\n", " 154: '(5.5*⌈.5*55⌉)',\n", " 155: '(5*⌈.55*55⌉)',\n", - " 156: '⌈(55+55)/√.5⌉',\n", + " 156: '⌊555/(5*√.5)⌋',\n", " 157: '(⌊.5*555⌋-5!)',\n", " 158: '(⌈.5*555⌉-5!)',\n", - " 159: '(5!+⌊√.5*55.5⌋)',\n", - " 160: '(5*(5+⌊.5*55⌋))',\n", + " 159: '⌊5.5*(5+(5!/5))⌋',\n", + " 160: '(5+((5*55)-5!))',\n", " 161: '⌊(.5*5)**5.55⌋',\n", - " 162: '⌈(.5*5)**5.55⌉',\n", + " 162: '⌊5*(5+(.5*55))⌋',\n", " 163: '(⌊5!/.55⌋-55)',\n", " 164: '(⌈5!/.55⌉-55)',\n", - " 165: '(55*⌈5*.55⌉)',\n", - " 166: '⌊⌈.5*5⌉*55.5⌋',\n", - " 167: '⌈⌈.5*5⌉*55.5⌉',\n", + " 165: '(55*⌈5!/55⌉)',\n", + " 166: '⌊5.5**⌈5!/55⌉⌋',\n", + " 167: '(5!+⌊55-√55⌋)',\n", " 168: '(5!+⌈55-√55⌉)',\n", " 169: '(5!+⌊55-5.5⌋)',\n", " 170: '(5!+⌊55.5-5⌋)',\n", @@ -1958,36 +1985,36 @@ " 183: '(⌈5.5*55⌉-5!)',\n", " 184: '(5!+⌊5!-55.5⌋)',\n", " 185: '(555/⌈.5*5⌉)',\n", - " 186: '⌈555.5/⌈√5⌉⌉',\n", + " 186: '(5!+⌊5!*.555⌋)',\n", " 187: '(5!+⌈5!*.555⌉)',\n", " 188: '((⌈.5*5⌉**5)-55)',\n", - " 189: '(⌊√55⌋*⌊.5*55⌋)',\n", + " 189: '⌊√(5+5)*(5+55)⌋',\n", " 190: '(5*⌈5*√55.5⌉)',\n", - " 191: '⌈55*√⌊5+√55⌋⌉',\n", + " 191: '(5+⌈5*(5*√55)⌉)',\n", " 192: '(⌈5.55⌉/(.5**5))',\n", - " 193: '⌊5!**(.55+.55)⌋',\n", + " 193: '(⌊5!/.55⌋-(5*5))',\n", " 194: '⌊(555-5!)/√5⌋',\n", " 195: '⌈(555-5!)/√5⌉',\n", - " 196: '(.5*⌊√.5*555⌋)',\n", - " 197: '⌈.5*⌈√.5*555⌉⌉',\n", + " 196: '⌊555/√⌈√5+5⌉⌋',\n", + " 197: '⌊.5*(5!+(5*55))⌋',\n", " 198: '(⌊55/.55⌋/.5)',\n", " 199: '⌊55/(.5*.55)⌋',\n", - " 200: '(⌈55/.55⌉/.5)',\n", + " 200: '⌊555/(5-√5)⌋',\n", " 201: '⌈555/(5-√5)⌉',\n", " 202: '⌊555/(.5+√5)⌋',\n", - " 203: '⌊.5*⌊55*√55⌋⌋',\n", - " 204: '(.5*⌈55*√55⌉)',\n", + " 203: '⌊5!**(5.55/5)⌋',\n", + " 204: '⌈5!**(5.55/5)⌉',\n", " 205: '(5*⌈5.5*√55⌉)',\n", " 206: '⌈⌈5!-√55⌉/.55⌉',\n", " 207: '⌊(5!-5)/.555⌋',\n", " 208: '⌈(5!-5)/.555⌉',\n", " 209: '(5.5*⌈5*√55⌉)',\n", - " 210: '⌈⌈5!-5.5⌉/.55⌉',\n", + " 210: '((⌈5.5⌉*55)-5!)',\n", " 211: '(⌊5!/.555⌋-5)',\n", " 212: '(⌈5!/.555⌉-5)',\n", - " 213: '⌈⌊5!/.55⌋-5.5⌉',\n", + " 213: '⌊⌈5!/.55⌉-5.5⌋',\n", " 214: '⌈⌈5!/.55⌉-5.5⌉',\n", - " 215: '⌊⌊5!/.555⌋-.5⌋',\n", + " 215: '((⌊5-.5⌋*55)-5)',\n", " 216: '⌊5!/.5555⌋',\n", " 217: '⌈5!/.5555⌉',\n", " 218: '⌈.5*(555-5!)⌉',\n", @@ -1997,15 +2024,15 @@ " 222: '(555/(.5*5))',\n", " 223: '⌊5.5+⌊5!/.55⌋⌋',\n", " 224: '⌊5.5+⌈5!/.55⌉⌋',\n", - " 225: '⌊(5+5!)/.555⌋',\n", + " 225: '(5*(55-(5+5)))',\n", " 226: '⌈(5+5!)/.555⌉',\n", " 227: '⌈555/√⌈5.5⌉⌉',\n", " 228: '(⌊5!-5.55⌋/.5)',\n", - " 229: '⌈(5!-5.55)/.5⌉',\n", + " 229: '(5!+(5!-(55/5)))',\n", " 230: '(5!+(55+55))',\n", " 231: '(5!+(555/5))',\n", - " 232: '⌈(5!+√55)/.55⌉',\n", - " 233: '⌈⌈5!+√55⌉/.55⌉',\n", + " 232: '(5+⌊(5+5!)/.55⌋)',\n", + " 233: '(5+⌈(5+5!)/.55⌉)',\n", " 234: '(5!+⌊5!-5.55⌋)',\n", " 235: '(5*⌊55-√55⌋)',\n", " 236: '⌊555/√5.5⌋',\n", @@ -2014,13 +2041,13 @@ " 239: '(5!+⌊5!-.555⌋)',\n", " 240: '(5*⌈55-√55⌉)',\n", " 241: '(5!+⌈5!+.555⌉)',\n", - " 242: '(⌈5!+.555⌉/.5)',\n", + " 242: '(⌊(5-.5)*55⌋-5)',\n", " 243: '(⌈5*.555⌉**5)',\n", " 244: '⌊55*(5-.55)⌋',\n", " 245: '(5*⌊55-5.5⌋)',\n", " 246: '⌈(555-5)/√5⌉',\n", " 247: '⌊5*(55-5.5)⌋',\n", - " 248: '⌊555.5/√5⌋',\n", + " 248: '⌈5*(55-5.5)⌉',\n", " 249: '⌈555.5/√5⌉',\n", " 250: '(5*⌊55.5-5⌋)',\n", " 251: '⌈(5+555)/√5⌉',\n", @@ -2028,17 +2055,17 @@ " 253: '⌈5*(55.5-5)⌉',\n", " 254: '(5+⌈555/√5⌉)',\n", " 255: '(5*⌈55.5-5⌉)',\n", - " 256: '(⌊55*√5.5⌋/.5)',\n", - " 257: '⌊55/(.5/√5.5)⌋',\n", - " 258: '(⌈55*√5.5⌉/.5)',\n", + " 256: '(⌊5!*(5!/55)⌋-5)',\n", + " 257: '(⌈5!*(5!/55)⌉-5)',\n", + " 258: '(5!+⌈.5*(5*55)⌉)',\n", " 259: '⌊5!/(55.5/5!)⌋',\n", - " 260: '(5*⌊55-√5.5⌋)',\n", - " 261: '⌈(5*.55)**5.5⌉',\n", - " 262: '⌈555/√(5-.5)⌉',\n", - " 263: '⌊5*(55-√5.5)⌋',\n", - " 264: '⌈5*(55-√5.5)⌉',\n", - " 265: '(5*⌈55-√5.5⌉)',\n", - " 266: '⌊5*(55.5-√5)⌋',\n", + " 260: '⌈5!/(55.5/5!)⌉',\n", + " 261: '⌊555/√(5-.5)⌋',\n", + " 262: '⌊5*(5*(5+5.5))⌋',\n", + " 263: '⌈5*(5*(5+5.5))⌉',\n", + " 264: '(5!/(5/(55/5)))',\n", + " 265: '((5*55)-(5+5))',\n", + " 266: '(5+⌊5!*(5!/55)⌋)',\n", " 267: '⌊(5*55)-√55⌋',\n", " 268: '⌈(5*55)-√55⌉',\n", " 269: '⌊(5*55)-5.5⌋',\n", @@ -2057,23 +2084,23 @@ " 282: '(5+⌊.5*555⌋)',\n", " 283: '(5+⌈.5*555⌉)',\n", " 284: '⌊5*((5**5)/55)⌋',\n", - " 285: '(5*⌊√5+55.5⌋)',\n", - " 286: '(5.5*⌊55-√5⌋)',\n", + " 285: '(5+(5+(5*55)))',\n", + " 286: '(555-⌈√5*5!⌉)',\n", " 287: '(555-⌊√5*5!⌋)',\n", " 288: '(⌈55*√55⌉-5!)',\n", - " 289: '⌈55*√(.5*55)⌉',\n", - " 290: '(5*⌈√5+55.5⌉)',\n", + " 289: '⌈5*(√5+55.5)⌉',\n", + " 290: '(5*(⌈.5*5⌉+55))',\n", " 291: '⌊5.5*⌈55-√5⌉⌋',\n", " 292: '⌈5.5*⌈55-√5⌉⌉',\n", " 293: '⌊5!*√⌈5.555⌉⌋',\n", " 294: '⌈5!*√⌈5.555⌉⌉',\n", - " 295: '(5!+⌊5!+55.5⌋)',\n", + " 295: '((5*(5+55))-5)',\n", " 296: '(5!+⌈5!+55.5⌉)',\n", " 297: '(⌊5.5*55⌋-5)',\n", " 298: '(⌈5.5*55⌉-5)',\n", - " 299: '⌊5.5*(55-.5)⌋',\n", + " 299: '((5!/5)+(5*55))',\n", " 300: '(5*⌊5+55.5⌋)',\n", - " 301: '⌊⌊5.5*55⌋-.5⌋',\n", + " 301: '⌊(5!+555)/√5⌋',\n", " 302: '⌊5*(5+55.5)⌋',\n", " 303: '⌈5*(5+55.5)⌉',\n", " 304: '⌈.5+⌈5.5*55⌉⌉',\n", @@ -2081,15 +2108,15 @@ " 306: '⌈.55*555⌉',\n", " 307: '(5+⌊5.5*55⌋)',\n", " 308: '(5+⌈5.5*55⌉)',\n", - " 309: '(⌈(√.5+5)*55⌉-5)',\n", + " 309: '(⌈(5+√.5)*55⌉-5)',\n", " 310: '(5*⌊55+√55⌋)',\n", - " 311: '⌈(√5**5)*5.55⌉',\n", + " 311: '⌈5*(5*(5+√55))⌉',\n", " 312: '⌊5*(55+√55)⌋',\n", " 313: '⌈5*(55+√55)⌉',\n", " 314: '⌈5.5*⌊√5+55⌋⌉',\n", - " 315: '(5*⌈55+√55⌉)',\n", - " 316: '⌊√(55/5.5)**5⌋',\n", - " 317: '⌈√(55/5.5)**5⌉',\n", + " 315: '(555-(5!+5!))',\n", + " 316: '⌊.55*(5*(5!-5))⌋',\n", + " 317: '⌈.55*(5*(5!-5))⌉',\n", " 318: '⌊(5!+55)/.55⌋',\n", " 319: '⌈(5!+55)/.55⌉',\n", " 320: '(5*⌊5!-55.5⌋)',\n", @@ -2097,13 +2124,13 @@ " 322: '⌊5*(5!-55.5)⌋',\n", " 323: '⌈5*(5!-55.5)⌉',\n", " 324: '(⌈5.5⌉*⌊55-.5⌋)',\n", - " 325: '(5*⌈5!-55.5⌉)',\n", + " 325: '(5*(5+(5+55)))',\n", " 326: '⌈(5!/55)**√55⌉',\n", " 327: '(⌈5.5⌉*(55-.5))',\n", - " 328: '⌈.5*(55+(5*5!))⌉',\n", - " 329: '⌊(55*⌈5.5⌉)-.5⌋',\n", - " 330: '(55*⌈5.55⌉)',\n", - " 331: '⌈.5+(55*⌈5.5⌉)⌉',\n", + " 328: '⌈.5*((5*5!)+55)⌉',\n", + " 329: '⌊(⌈5.5⌉*55)-.5⌋',\n", + " 330: '(55+(5*55))',\n", + " 331: '⌈.5+(⌈5.5⌉*55)⌉',\n", " 332: '⌊.55*(5+(5*5!))⌋',\n", " 333: '(⌈5.5⌉*55.5)',\n", " 334: '⌈5*(5!*.555)⌉',\n", @@ -2111,96 +2138,96 @@ " 336: '(5!+⌊5!/.555⌋)',\n", " 337: '⌊.5*(5!+555)⌋',\n", " 338: '⌈.5*(5!+555)⌉',\n", - " 339: '⌊55*√⌈5*√55⌉⌋',\n", - " 340: '⌈55*√⌈5*√55⌉⌉',\n", + " 339: '⌈5!*(5-(5!/55))⌉',\n", + " 340: '(5*⌊.55*(5+5!)⌋)',\n", " 341: '⌊55*(√.5+5.5)⌋',\n", - " 342: '⌈55*(√.5+5.5)⌉',\n", + " 342: '(⌈5.5⌉*⌊√5+55⌋)',\n", " 343: '⌊5*(.55*(5+5!))⌋',\n", " 344: '⌈5*(.55*(5+5!))⌉',\n", - " 345: '(5*⌈.55*(5+5!)⌉)',\n", - " 346: '(⌊55*√(5+5)⌋/.5)',\n", - " 347: '⌊5!*(.55+√5.5)⌋',\n", - " 348: '(⌈5.5⌉*⌈√5+55⌉)',\n", + " 345: '((5!-5)*⌈5!/55⌉)',\n", + " 346: '⌊√5*((5*55)-5!)⌋',\n", + " 347: '⌊(5**5)/⌊5/.55⌋⌋',\n", + " 348: '⌈(5**5)/⌊5/.55⌋⌉',\n", " 349: '(⌊(5-.55)**5⌋/5)',\n", - " 350: '(⌊5!+55.5⌋/.5)',\n", + " 350: '(5*(5+(5!-55)))',\n", " 351: '((5!+55.5)/.5)',\n", " 352: '(⌈5!+55.5⌉/.5)',\n", - " 353: '⌈⌈555/√5⌉/√.5⌉',\n", - " 354: '⌊(.5*⌈5.5⌉!)-5.5⌋',\n", - " 355: '(5*(5+(5!*.55)))',\n", - " 356: '⌈(55/5)**√⌈5.5⌉⌉',\n", + " 353: '⌈55*(√55-⌈.5⌉)⌉',\n", + " 354: '⌊(√5+⌈5/55⌉)**5⌋',\n", + " 355: '((5!*⌈5!/55⌉)-5)',\n", + " 356: '(⌈(5!+5!)*√55⌉/5)',\n", " 357: '⌊5.5*(5!-55)⌋',\n", " 358: '⌈5.5*(5!-55)⌉',\n", - " 359: '⌊.5*⌊⌈5.55⌉!-.5⌋⌋',\n", - " 360: '(.5*⌈5.555⌉!)',\n", + " 359: '⌊(5!*⌈5!/55⌉)-.5⌋',\n", + " 360: '(5!*⌈5*.555⌉)',\n", " 361: '⌊(√5+5)*(55-5)⌋',\n", - " 362: '⌊.5*(5+⌈5.55⌉!)⌋',\n", + " 362: '⌈(√5+5)*(55-5)⌉',\n", " 363: '(5.5*(5!*.55))',\n", " 364: '⌈5!*(.55*5.5)⌉',\n", - " 365: '(5+(.5*⌈5.55⌉!))',\n", - " 366: '(5!*(.55+(.5*5)))',\n", - " 367: '(5!+⌊55*(5-.5)⌋)',\n", + " 365: '(5+(5!*⌈5!/55⌉))',\n", + " 366: '(5!+(5!+⌈5!+5.5⌉))',\n", + " 367: '(5!+⌊(5-.5)*55⌋)',\n", " 368: '(5!+⌊555/√5⌋)',\n", " 369: '(5!+⌈555/√5⌉)',\n", " 370: '⌊√55*(55-5)⌋',\n", " 371: '⌈√55*(55-5)⌉',\n", " 372: '(55+⌈√(5+5)**5⌉)',\n", - " 373: '⌊55*√⌈5.5**√5⌉⌋',\n", - " 374: '⌈55*√⌈5.5**√5⌉⌉',\n", - " 375: '(5*⌈(5+5)*√55⌉)',\n", + " 373: '⌈(5-√⌈5!/55⌉)**5⌉',\n", + " 374: '(5+(⌊(5-.5)**5⌋/5))',\n", + " 375: '((5+5!)*⌈5!/55⌉)',\n", " 376: '(55+⌊⌈5.5⌉!/√5⌋)',\n", " 377: '(55+⌈⌈5.5⌉!/√5⌉)',\n", " 378: '(⌊√55⌋*⌊55-.5⌋)',\n", " 379: '⌊5!*√(55/5.5)⌋',\n", - " 380: '⌊55*(√55-.5)⌋',\n", - " 381: '⌈55*(√55-.5)⌉',\n", + " 380: '((⌊√55⌋*55)-5)',\n", + " 381: '⌊55**(√55/5)⌋',\n", " 382: '⌈55**(√55/5)⌉',\n", " 383: '(5!+⌊5*(55-√5)⌋)',\n", - " 384: '⌊(55*⌊√55⌋)-.5⌋',\n", + " 384: '(5!+⌈5*(55-√5)⌉)',\n", " 385: '(55*⌊√55.5⌋)',\n", " 386: '(555-⌊5!/√.5⌋)',\n", " 387: '(⌊√.5*555⌋-5)',\n", - " 388: '⌊⌊√55⌋*55.5⌋',\n", - " 389: '⌈⌊√55⌋*55.5⌉',\n", - " 390: '(5*⌊55.5/√.5⌋)',\n", - " 391: '⌊⌊√.5*555⌋-.5⌋',\n", + " 388: '⌊55*√(55-5)⌋',\n", + " 389: '⌈55*√(55-5)⌉',\n", + " 390: '(5!+((5*55)-5))',\n", + " 391: '⌊√5*⌊5!+55.5⌋⌋',\n", " 392: '⌊√.5*555.5⌋',\n", " 393: '⌈√.5*555.5⌉',\n", - " 394: '⌈√.5*⌈555.5⌉⌉',\n", - " 395: '⌊√.5*(5+555)⌋',\n", + " 394: '(5!+⌊(5*55)-.5⌋)',\n", + " 395: '(5*((5!/5)+55))',\n", " 396: '⌊.55*⌈5.55⌉!⌋',\n", " 397: '(5!+⌊.5*555⌋)',\n", " 398: '(5!+⌈.5*555⌉)',\n", " 399: '⌊⌈5.5⌉!*.555⌋',\n", - " 400: '⌈⌈5.5⌉!*.555⌉',\n", + " 400: '(5*((5*5)+55))',\n", " 401: '⌊(√5+5)*55.5⌋',\n", " 402: '(⌊55*√55⌋-5)',\n", " 403: '(⌈55*√55⌉-5)',\n", - " 404: '⌊√55*(55-.5)⌋',\n", - " 405: '⌈√55*(55-.5)⌉',\n", + " 404: '⌊55*√⌊55-.5⌋⌋',\n", + " 405: '⌈55*√⌊55-.5⌋⌉',\n", " 406: '⌊⌊55*√55⌋-.5⌋',\n", - " 407: '⌊55*√⌊55.5⌋⌋',\n", - " 408: '⌈55*√⌊55.5⌋⌉',\n", + " 407: '⌊⌊√55**5⌋/55⌋',\n", + " 408: '⌈⌊√55**5⌋/55⌉',\n", " 409: '⌊55*√55.5⌋',\n", " 410: '⌈55*√55.5⌉',\n", " 411: '⌊√55*55.5⌋',\n", " 412: '⌈√55*55.5⌉',\n", " 413: '(5+⌈55*√55⌉)',\n", - " 414: '⌈√55.5**⌈.5*5⌉⌉',\n", + " 414: '((5!*(5-.55))-5!)',\n", " 415: '⌊√55*⌈55.5⌉⌋',\n", " 416: '⌈√55*⌈55.5⌉⌉',\n", " 417: '⌊5*(5**(5*.55))⌋',\n", - " 418: '⌊55*√⌈√5+55⌉⌋',\n", + " 418: '⌈5*(5**(5*.55))⌉',\n", " 419: '⌊(5**5)/√55.5⌋',\n", - " 420: '⌊⌈5*.55⌉**5.5⌋',\n", - " 421: '⌈⌈5*.55⌉**5.5⌉',\n", + " 420: '(5!+(5*(5+55)))',\n", + " 421: '⌈⌈5!/55⌉**5.5⌉',\n", " 422: '(5!+⌊5.5*55⌋)',\n", " 423: '(5!+⌈5.5*55⌉)',\n", - " 424: '⌈5.5*⌊55/√.5⌋⌉',\n", - " 425: '⌊55*(√5+5.5)⌋',\n", + " 424: '⌊√55*(√5+55)⌋',\n", + " 425: '((5*5!)-(5!+55))',\n", " 426: '⌊55*√(5+55)⌋',\n", " 427: '⌈55*√(5+55)⌉',\n", - " 428: '⌊⌈5.5*55⌉/√.5⌋',\n", + " 428: '⌈55*(5-(√5-5))⌉',\n", " 429: '(5.5*⌈55/√.5⌉)',\n", " 430: '(555-(5+5!))',\n", " 431: '⌈√55*⌈√5+55⌉⌉',\n", @@ -2213,60 +2240,60 @@ " 438: '(⌈√5-5!⌉+555)',\n", " 439: '⌊(⌈√55⌉*55)-.5⌋',\n", " 440: '(5+(555-5!))',\n", - " 441: '⌈.5+(⌈√55⌉*55)⌉',\n", - " 442: '(5+⌈5!/(.5*.55)⌉)',\n", + " 441: '(5+⌊(5!+5!)/.55⌋)',\n", + " 442: '(5+⌈(5!+5!)/.55⌉)',\n", " 443: '⌊55*√(5!-55)⌋',\n", - " 444: '(⌈√55⌉*55.5)',\n", + " 444: '⌊√55*(5+55)⌋',\n", " 445: '⌈√55*(5+55)⌉',\n", " 446: '⌊55*√(5!*.55)⌋',\n", " 447: '⌊⌈√5⌉**5.555⌋',\n", " 448: '⌈⌈√5⌉**5.555⌉',\n", " 449: '⌈55*(5+√(5+5))⌉',\n", - " 450: '(5!+(55*⌈5.5⌉))',\n", + " 450: '(5!+(⌈5.5⌉*55))',\n", " 451: '⌊5!*(⌈5.55⌉-√5)⌋',\n", - " 452: '⌊55*(√5+⌈5.5⌉)⌋',\n", - " 453: '⌈55*(√5+⌈5.5⌉)⌉',\n", + " 452: '(⌊5*(5!-5.5)⌋-5!)',\n", + " 453: '(⌈5*(5!-5.5)⌉-5!)',\n", " 454: '(⌊(5+5!)/.55⌋/.5)',\n", " 455: '(⌊√55⌋*(5!-55))',\n", - " 456: '⌊5.5*⌊√5**5.5⌋⌋',\n", - " 457: '⌈5.5*⌊√5**5.5⌋⌉',\n", - " 458: '(⌊5-.5⌋*(5!-5.5))',\n", + " 456: '(5!/(5/((5!/5)-5)))',\n", + " 457: '⌊5*((5**√5)+55)⌋',\n", + " 458: '⌈5*((5**√5)+55)⌉',\n", " 459: '⌊555/(.5+√.5)⌋',\n", - " 460: '⌈555/(.5+√.5)⌉',\n", - " 461: '⌈55*√⌊√5.5**5⌋⌉',\n", - " 462: '(5.5*⌈√5**5.5⌉)',\n", + " 460: '(5*(5!-⌈.5*55⌉))',\n", + " 461: '(⌈5!*(5-√.5)⌉-55)',\n", + " 462: '⌊5*(5!-(.5*55))⌋',\n", " 463: '⌈5*(5!-(.5*55))⌉',\n", " 464: '(⌈√55⌉*⌈√5+55⌉)',\n", " 465: '(5*(5!-⌊.5*55⌋))',\n", " 466: '⌊⌊√.5*5!⌋*5.55⌋',\n", " 467: '⌊55*(.5+⌈√55⌉)⌋',\n", " 468: '(5!*(5-(5.5/5)))',\n", - " 469: '⌊55*(5+(√.5*5))⌋',\n", + " 469: '⌊55*(5+(5*√.5))⌋',\n", " 470: '(555-⌈√.5*5!⌉)',\n", " 471: '(555-⌊√.5*5!⌋)',\n", - " 472: '⌈⌈√.5*5!⌉*5.55⌉',\n", - " 473: '(5.5*⌈5**(5-√5)⌉)',\n", - " 474: '(5!*(5-(.5+.55)))',\n", + " 472: '((5*5!)-⌈5!+√55⌉)',\n", + " 473: '((5*5!)-⌊5!+√55⌋)',\n", + " 474: '((5*5!)-⌈5!+5.5⌉)',\n", " 475: '((5!*⌊5-.55⌋)-5)',\n", - " 476: '(55+⌈⌈√5⌉**5.5⌉)',\n", + " 476: '⌊⌊5!/(.55**5)⌋/5⌋',\n", " 477: '⌊√.5*(5!+555)⌋',\n", " 478: '⌈√.5*(5!+555)⌉',\n", " 479: '((5*5!)-⌈5!+.55⌉)',\n", - " 480: '(5!*⌊5-.555⌋)',\n", - " 481: '((5*5!)-⌊5!-.55⌋)',\n", + " 480: '(5!*⌊555/5!⌋)',\n", + " 481: '((5*5!)+⌈.55-5!⌉)',\n", " 482: '⌊√55*(5!-55)⌋',\n", " 483: '⌈√55*(5!-55)⌉',\n", - " 484: '⌈(√5*5!)/.555⌉',\n", - " 485: '⌊√5*⌈5!/.555⌉⌋',\n", + " 484: '⌊⌈√5*5!⌉/.555⌋',\n", + " 485: '(5+(5!*⌊5-.55⌋))',\n", " 486: '⌈√5*⌈5!/.555⌉⌉',\n", - " 487: '⌊5!/(.55**√5.5)⌋',\n", + " 487: '((5*5!)-⌈5!-√55⌉)',\n", " 488: '⌊.55*⌊5!*√55⌋⌋',\n", " 489: '⌊.55*⌈5!*√55⌉⌋',\n", - " 490: '⌈.55*⌈5!*√55⌉⌉',\n", + " 490: '((5*5!)-(55/.5))',\n", " 491: '⌈5!*((5/.55)-5)⌉',\n", - " 492: '(⌊5-.5⌋*⌈√5*55⌉)',\n", + " 492: '⌊(⌊5/.55⌋**5)/5!⌋',\n", " 493: '⌈(⌊5/.55⌋**5)/5!⌉',\n", - " 494: '(⌊55*(5-.5)⌋/.5)',\n", + " 494: '(⌊(5-.5)*55⌋/.5)',\n", " 495: '(5*⌊55/.55⌋)',\n", " 496: '(⌊555/√5⌋/.5)',\n", " 497: '⌈555/(.5*√5)⌉',\n", @@ -2277,28 +2304,28 @@ " 502: '(555-⌊5!/√5⌋)',\n", " 503: '⌊⌊5.5**5⌋/(5+5)⌋',\n", " 504: '⌈⌊5.5**5⌋/(5+5)⌉',\n", - " 505: '(5!+(55*⌊√55⌋))',\n", - " 506: '⌊(5-.5)*(5!-√55)⌋',\n", + " 505: '(5!+(⌊√55⌋*55))',\n", + " 506: '(((5+(5**5))/5)-5!)',\n", " 507: '(⌊5*(5!+5.5)⌋-5!)',\n", " 508: '(⌈5*(5!+5.5)⌉-5!)',\n", " 509: '⌊√.5*⌈5.555⌉!⌋',\n", - " 510: '⌈√.5*⌈5.555⌉!⌉',\n", - " 511: '⌈⌊5!*√5.5⌋/.55⌉',\n", + " 510: '((5*⌈5!+5.5⌉)-5!)',\n", + " 511: '⌊(5!-5)*(5-.55)⌋',\n", " 512: '(5!+⌊√.5*555⌋)',\n", " 513: '(5!+⌈√.5*555⌉)',\n", - " 514: '⌈√5.5*⌈5!/.55⌉⌉',\n", + " 514: '⌊5!/(⌈.5*55⌉/5!)⌋',\n", " 515: '(5!+(5!+(5*55)))',\n", " 516: '(5!+⌊.55*⌈5.5⌉!⌋)',\n", - " 517: '(5!+⌈.55*⌈5.5⌉!⌉)',\n", + " 517: '(5!+⌊55*(√5+5)⌋)',\n", " 518: '(555-⌈5**√5⌉)',\n", " 519: '(555-⌊5**√5⌋)',\n", " 520: '((5*(5!-5))-55)',\n", " 521: '⌈(5**5)/⌈5.55⌉⌉',\n", " 522: '⌊55*(5+(5-.5))⌋',\n", " 523: '⌈55*(5+(5-.5))⌉',\n", - " 524: '(⌈5!*(5!/55)⌉/.5)',\n", + " 524: '⌈5!/(55/(5!+5!))⌉',\n", " 525: '(5*((55/.5)-5))',\n", - " 526: '(⌊5*(55-√5)⌋/.5)',\n", + " 526: '⌈(.5+⌈5!/55⌉)**5⌉',\n", " 527: '(5!+⌊55*√55⌋)',\n", " 528: '(5!+⌈55*√55⌉)',\n", " 529: '((5!*(5-.55))-5)',\n", @@ -2307,13 +2334,13 @@ " 532: '⌊5**(5-(5.5/5))⌋',\n", " 533: '⌊5!*(5-.555)⌋',\n", " 534: '⌈5!*(5-.555)⌉',\n", - " 535: '(55+(5!*⌊5-.5⌋))',\n", - " 536: '⌈(5-.5)*⌊5!-.55⌋⌉',\n", - " 537: '⌊5.5*((.5*5)**5)⌋',\n", - " 538: '⌈5.5*((.5*5)**5)⌉',\n", + " 535: '((5*5!)-(5!-55))',\n", + " 536: '⌊55*√(5!-(5*5))⌋',\n", + " 537: '⌊5*(5!-(5+√55))⌋',\n", + " 538: '⌈5*(5!-(5+√55))⌉',\n", " 539: '(5+(5!*(5-.55)))',\n", - " 540: '((5+5)*⌊55-.5⌋)',\n", - " 541: '⌈.55+(5!*(5-.5))⌉',\n", + " 540: '((5*5!)-(5+55))',\n", + " 541: '(5!+⌊(5**5)/√55⌋)',\n", " 542: '(⌊5*(5!-.5)⌋-55)',\n", " 543: '(555-⌈√5*5⌉)',\n", " 544: '(555-⌊√5*5⌋)',\n", @@ -2324,13 +2351,13 @@ " 549: '⌊555-5.5⌋',\n", " 550: '⌈555-5.5⌉',\n", " 551: '⌈555.5-5⌉',\n", - " 552: '⌊555-√5.5⌋',\n", - " 553: '⌊555.5-√5⌋',\n", + " 552: '(555-⌈.5*5⌉)',\n", + " 553: '(555-⌊.5*5⌋)',\n", " 554: '⌊555-.55⌋',\n", " 555: '⌊555.55⌋',\n", " 556: '⌈555.55⌉',\n", - " 557: '⌊√5+555.5⌋',\n", - " 558: '⌈√5+555.5⌉',\n", + " 557: '(⌊.5*5⌋+555)',\n", + " 558: '(⌈.5*5⌉+555)',\n", " 559: '(5+⌊555-.5⌋)',\n", " 560: '⌊5+555.5⌋',\n", " 561: '⌈5+555.5⌉',\n", @@ -2343,43 +2370,43 @@ " 568: '(⌈5*(5!-5.5)⌉-5)',\n", " 569: '⌊(5*(5!-5))-5.5⌋',\n", " 570: '(5*⌊5!-5.55⌋)',\n", - " 571: '⌊√55*⌊55/√.5⌋⌋',\n", + " 571: '((5*5!)-(5+(5!/5)))',\n", " 572: '⌊5*(5!-5.55)⌋',\n", " 573: '⌈5*(5!-5.55)⌉',\n", " 574: '(5+⌈(5**5)/5.5⌉)',\n", " 575: '(5*⌈5!-5.55⌉)',\n", - " 576: '⌈.55+(5*(5!-5))⌉',\n", + " 576: '((5!/5)**⌊5!/55⌋)',\n", " 577: '⌊55*(5+5.5)⌋',\n", " 578: '⌈55*(5+5.5)⌉',\n", " 579: '((5!/5)+555)',\n", " 580: '((5*5)+555)',\n", " 581: '⌈5.5+(5*(5!-5))⌉',\n", - " 582: '⌈5!*(5.55-√.5)⌉',\n", - " 583: '(55/(5/⌊5!/√5⌋))',\n", + " 582: '⌊√55+(5*(5!-5))⌋',\n", + " 583: '(⌊5!/√5⌋*(55/5))',\n", " 584: '⌈5*(5!-√(55/5))⌉',\n", - " 585: '(5*(5!-⌈5*.55⌉))',\n", + " 585: '(5*(5!-⌈5!/55⌉))',\n", " 586: '⌊5*(5!-(5*.55))⌋',\n", " 587: '((⌊√5⌋**5)+555)',\n", - " 588: '⌈5!*√⌊5-.555⌋!⌉',\n", + " 588: '((5*5!)-⌊5+√55⌋)',\n", " 589: '((5*5!)-(55/5))',\n", " 590: '⌈5!*(5-(5/55))⌉',\n", " 591: '(⌊5**√5⌋+555)',\n", " 592: '(⌈5**√5⌉+555)',\n", - " 593: '⌈(5*5!)-√55.5⌉',\n", + " 593: '(⌈5*(5!-.55)⌉-5)',\n", " 594: '⌊(5*5!)-5.55⌋',\n", " 595: '(5*⌊5!-.555⌋)',\n", - " 596: '⌈√(5+5)**5.55⌉',\n", + " 596: '((5*5!)-⌊5-.55⌋)',\n", " 597: '⌊5*(5!-.555)⌋',\n", " 598: '⌈5*(5!-.555)⌉',\n", " 599: '⌊(5*5!)-.555⌋',\n", - " 600: '(5*⌊5.555⌋!)',\n", + " 600: '(5*⌈555/5!⌉!)',\n", " 601: '⌈(5*5!)+.555⌉',\n", " 602: '⌊5*(5!+.555)⌋',\n", " 603: '⌈5*(5!+.555)⌉',\n", " 604: '(⌊5.5*55⌋/.5)',\n", " 605: '(55*(55/5))',\n", - " 606: '(⌈5.5*55⌉/.5)',\n", - " 607: '⌊(5*5!)+√55.5⌋',\n", + " 606: '⌈(5*5!)+5.55⌉',\n", + " 607: '(5+⌊5*(5!+.55)⌋)',\n", " 608: '(⌊5!/√5⌋+555)',\n", " 609: '(⌈5!/√5⌉+555)',\n", " 610: '(55+555)',\n", @@ -2389,15 +2416,15 @@ " 614: '(((5**5)-55)/5)',\n", " 615: '((.5*5!)+555)',\n", " 616: '(5.5*⌊5!-√55⌋)',\n", - " 617: '⌊5*(.5+⌈√5*55⌉)⌋',\n", - " 618: '⌈5*(.5+⌈√5*55⌉)⌉',\n", + " 617: '⌈5*(5!+√(55/5))⌉',\n", + " 618: '⌈(5*(5+5!))-√55⌉',\n", " 619: '⌊√5*⌊.5*555⌋⌋',\n", " 620: '(5*⌊√5*55.5⌋)',\n", " 621: '(.5*⌈√5*555⌉)',\n", " 622: '⌈√5*⌈.5*555⌉⌉',\n", - " 623: '⌊5!*√⌊5*5.55⌋⌋',\n", - " 624: '⌈5!*√⌊5*5.55⌋⌉',\n", - " 625: '(5**⌊5-.555⌋)',\n", + " 623: '(⌈5*(5!+5.5)⌉-5)',\n", + " 624: '(⌈(5**5)-5.5⌉/5)',\n", + " 625: '(5**⌊555/5!⌋)',\n", " 626: '(⌊5.5+(5**5)⌋/5)',\n", " 627: '⌊5*(5!+5.55)⌋',\n", " 628: '⌈5*(5!+5.55)⌉',\n", @@ -2407,35 +2434,35 @@ " 632: '⌊5.5*⌈5!-5.5⌉⌋',\n", " 633: '⌈5.5*⌈5!-5.5⌉⌉',\n", " 634: '⌊5!*√⌈5*5.55⌉⌋',\n", - " 635: '(5*⌊5!+√55.5⌋)',\n", + " 635: '(5+(5*⌈5!+5.5⌉))',\n", " 636: '(((5**5)+55)/5)',\n", - " 637: '⌊5*(5!+√55.5)⌋',\n", + " 637: '(5+⌊5.5*(5!-5)⌋)',\n", " 638: '⌊(5!-5)*5.55⌋',\n", " 639: '⌈(5!-5)*5.55⌉',\n", - " 640: '(5*⌊55*√5.5⌋)',\n", - " 641: '⌈.5+(5*⌈5!+√55⌉)⌉',\n", + " 640: '(5*⌊√5.5*55⌋)',\n", + " 641: '⌈5*(5!+√(5!-55))⌉',\n", " 642: '(5+⌊5*(5!+√55)⌋)',\n", - " 643: '⌊5.5*⌊5!-√5.5⌋⌋',\n", - " 644: '⌊5*(55*√5.5)⌋',\n", - " 645: '(5*⌈55*√5.5⌉)',\n", + " 643: '(5+⌈5*(5!+√55)⌉)',\n", + " 644: '⌊√5.5*(5*55)⌋',\n", + " 645: '(5*⌈√5.5*55⌉)',\n", " 646: '⌈5*(5!+(5/.55))⌉',\n", - " 647: '⌊5.5*(5!-√5.5)⌋',\n", + " 647: '⌈5.5*(5!-(.5*5))⌉',\n", " 648: '(5!*(⌊.5*55⌋/5))',\n", " 649: '⌊⌊5!-√5⌋*5.55⌋',\n", " 650: '((5+5)*(5!-55))',\n", " 651: '(⌈√5⌉*⌈5!/.555⌉)',\n", - " 652: '⌊(5!*5.5)-√55⌋',\n", - " 653: '⌊(5!-√5)*5.55⌋',\n", + " 652: '(55+⌊5*(5!-.5)⌋)',\n", + " 653: '(55+⌈5*(5!-.5)⌉)',\n", " 654: '⌊5.5*⌊5!-.55⌋⌋',\n", " 655: '⌊(5*5!)+55.5⌋',\n", " 656: '⌈(5*5!)+55.5⌉',\n", " 657: '⌈5.5*(5!-.55)⌉',\n", - " 658: '⌈5!*√⌊.55*55⌋⌉',\n", + " 658: '(55+⌈5*(.5+5!)⌉)',\n", " 659: '⌊(5!*5.5)-.55⌋',\n", - " 660: '(5.5*⌊5.55⌋!)',\n", + " 660: '(55*⌊5+√55⌋)',\n", " 661: '((5!*5.55)-5)',\n", - " 662: '⌊(5!-√.5)*5.55⌋',\n", - " 663: '⌊5.5*(5!+.55)⌋',\n", + " 662: '⌊5*(5+(5!+√55))⌋',\n", + " 663: '⌊(5!-.5)*5.55⌋',\n", " 664: '⌊⌈5.5⌉!-55.5⌋',\n", " 665: '(⌈5.55⌉!-55)',\n", " 666: '⌊5!*5.555⌋',\n", @@ -2456,20 +2483,20 @@ " 681: '⌈5!*(5+(5/√55))⌉',\n", " 682: '⌊55*(5+√55)⌋',\n", " 683: '⌈55*(5+√55)⌉',\n", - " 684: '(⌈5.5⌉*⌊5!-5.5⌋)',\n", + " 684: '((5!/5)+(5!*5.5))',\n", " 685: '(5*⌊.5*(5*55)⌋)',\n", " 686: '⌊(√5-⌈.5⌉)*555⌋',\n", - " 687: '⌊5.5*⌊5!+5.5⌋⌋',\n", - " 688: '⌈5.5*⌊5!+5.5⌋⌉',\n", + " 687: '⌊.5*(5*(5*55))⌋',\n", + " 688: '⌈.5*(5*(5*55))⌉',\n", " 689: '(5!+⌈(5**5)/5.5⌉)',\n", - " 690: '⌊5.5*(5!+5.5)⌋',\n", + " 690: '(5*⌈.5*(5*55)⌉)',\n", " 691: '⌈5.5*(5!+5.5)⌉',\n", " 692: '(5+⌊5.5*(5+5!)⌋)',\n", " 693: '⌊(5+5!)*5.55⌋',\n", " 694: '⌈(5+5!)*5.55⌉',\n", " 695: '(⌈5.55⌉!-(5*5))',\n", " 696: '(⌈5.55⌉!-(5!/5))',\n", - " 697: '(⌈(.5*√55)**5⌉-5)',\n", + " 697: '(⌈5.5⌉!-((5!-5)/5))',\n", " 698: '⌊5.5*⌊5!+√55⌋⌋',\n", " 699: '⌈5.5*⌊5!+√55⌋⌉',\n", " 700: '(5*(5*⌈.5*55⌉))',\n", @@ -2501,95 +2528,95 @@ " 726: '⌈5.5+⌈5.55⌉!⌉',\n", " 727: '⌊√55+⌈5.55⌉!⌋',\n", " 728: '⌈√55+⌈5.55⌉!⌉',\n", - " 729: '(⌈√5⌉**⌈5.555⌉)',\n", + " 729: '(⌈5!/55⌉**⌈5.5⌉)',\n", " 730: '(5+(5+⌈5.55⌉!))',\n", " 731: '(⌈5.5⌉!+(55/5))',\n", " 732: '(5!*(5+(5.5/5)))',\n", " 733: '(5+⌈⌈5.5⌉!+√55⌉)',\n", - " 734: '(5!+⌊√5*(5*55)⌋)',\n", + " 734: '(5!+⌊5*(√5*55)⌋)',\n", " 735: '(5*(5!+⌊.5*55⌋))',\n", - " 736: '⌊√5.5**√(5+55)⌋',\n", + " 736: '(⌈5.5⌉!+⌊5!/√55⌋)',\n", " 737: '⌊5*(5!+(.5*55))⌋',\n", - " 738: '(⌈5.5⌉*⌈√5*55⌉)',\n", - " 739: '⌊5!*√⌈5*√55.5⌉⌋',\n", + " 738: '⌈5*(5!+(.5*55))⌉',\n", + " 739: '((5!/5)+(⌈5.5⌉!-5))',\n", " 740: '(5*(5!+⌈.5*55⌉))',\n", " 741: '(⌈5.5⌉!+⌊5!/5.5⌋)',\n", " 742: '(⌈5.5⌉!+⌈5!/5.5⌉)',\n", - " 743: '⌊⌊5!**√5⌋/(5+55)⌋',\n", + " 743: '⌊(5!**√5)/(5+55)⌋',\n", " 744: '((5!/5)+⌈5.55⌉!)',\n", " 745: '((5*5)+⌈5.55⌉!)',\n", " 746: '(5!+((5+(5**5))/5))',\n", - " 747: '(⌈5.5⌉!+⌊.5*55⌋)',\n", - " 748: '(⌈5.5⌉!+⌈.5*55⌉)',\n", - " 749: '⌈5!*(√5+⌊5-.55⌋)⌉',\n", + " 747: '(5!+⌊5*(5!+5.5)⌋)',\n", + " 748: '(5!+⌈5*(5!+5.5)⌉)',\n", + " 749: '(5+((5!/5)+⌈5.5⌉!))',\n", " 750: '((5+5!)*⌈5.55⌉)',\n", " 751: '⌈5!*(√.5+5.55)⌉',\n", " 752: '(5!+⌊5.5*(5!-5)⌋)',\n", - " 753: '(⌈5.5⌉*(5!+5.5))',\n", + " 753: '(5!+⌈5.5*(5!-5)⌉)',\n", " 754: '(5!+⌊5!*√⌈.5*55⌉⌋)',\n", " 755: '((5*(5!+55))-5!)',\n", " 756: '(⌈5.5⌉*⌈5!+5.5⌉)',\n", - " 757: '(⌈5.5⌉!+⌊5*√55⌋)',\n", - " 758: '(⌈5.5⌉!+⌈5*√55⌉)',\n", - " 759: '⌈5!*√⌊5.5*√55⌋⌉',\n", + " 757: '(5!+⌊5*(5!+√55)⌋)',\n", + " 758: '(5!+⌈5*(5!+√55)⌉)',\n", + " 759: '⌈5!*√(5!/⌈5!/55⌉)⌉',\n", " 760: '(5*⌊55*(5-√5)⌋)',\n", " 761: '⌈5*(55*(5-√5))⌉',\n", " 762: '(⌈5.5⌉*⌊5!+√55⌋)',\n", " 763: '⌈5*(5!**(.5+.55))⌉',\n", - " 764: '⌊⌈5.5⌉*(5!+√55)⌋',\n", + " 764: '(⌊5!*√55⌋-(5+5!))',\n", " 765: '(5*⌈55*(5-√5)⌉)',\n", - " 766: '⌈(⌈√5⌉**5.5)/.55⌉',\n", + " 766: '⌊((5*5)-5.5)**√5⌋',\n", " 767: '⌈((5*5)-5.5)**√5⌉',\n", - " 768: '⌊√⌈5.55⌉**√55⌋',\n", + " 768: '(⌈5.5⌉*⌈5!+√55⌉)',\n", " 769: '⌊55**√(5*.55)⌋',\n", - " 770: '(55*⌊√55/.5⌋)',\n", + " 770: '(⌈5.5⌉!+(55-5))',\n", " 771: '⌈(5*5.55)**⌊√5⌋⌉',\n", - " 772: '(55+⌊⌈5.5⌉!-√5⌋)',\n", + " 772: '(⌈5.5⌉!+⌊55-√5⌋)',\n", " 773: '(⌊5!*√55.5⌋-5!)',\n", - " 774: '(55+⌊⌈5.5⌉!-.5⌋)',\n", + " 774: '(⌈5.5⌉!+⌊55-.5⌋)',\n", " 775: '(55+⌈5.55⌉!)',\n", " 776: '⌈⌈5.5⌉!+55.5⌉',\n", " 777: '⌊(555-5)/√.5⌋',\n", " 778: '⌈(555-5)/√.5⌉',\n", " 779: '(⌊555/√.5⌋-5)',\n", - " 780: '(⌈555/√.5⌉-5)',\n", + " 780: '(5+(⌈5.5⌉!+55))',\n", " 781: '⌊(5**5)/⌊5-.55⌋⌋',\n", " 782: '⌈(5**5)/⌊5-.55⌋⌉',\n", " 783: '⌊⌊555/√.5⌋-.5⌋',\n", " 784: '⌊√⌊.5*5⌋*555⌋',\n", " 785: '⌊555.5/√.5⌋',\n", - " 786: '⌈555.5/√.5⌉',\n", - " 787: '⌈⌈555.5⌉/√.5⌉',\n", + " 786: '(5!+(5!*5.55))',\n", + " 787: '⌊(5-.5)*(5!+55)⌋',\n", " 788: '⌈(5-.5)*(5!+55)⌉',\n", " 789: '(5+⌊555/√.5⌋)',\n", " 790: '(5+⌈555/√.5⌉)',\n", " 791: '⌊(5+555)/√.5⌋',\n", " 792: '⌈(5+555)/√.5⌉',\n", " 793: '⌈⌈5.5⌉!*(5.5/5)⌉',\n", - " 794: '(⌈.55*⌈5.5⌉!⌉/.5)',\n", + " 794: '(⌊55*(√5+5)⌋/.5)',\n", " 795: '(5!+(5!+555))',\n", " 796: '⌈55**(5/⌈.5*5⌉)⌉',\n", " 797: '⌊5.5*(5!+(5*5))⌋',\n", " 798: '((⌈√5⌉**5)+555)',\n", - " 799: '⌈5!*(5+√(5*.55))⌉',\n", + " 799: '⌈⌊5!**√⌈5!/55⌉⌋/5⌉',\n", " 800: '(5*((⌈√5⌉*55)-5))',\n", " 801: '⌊⌊√55⌋*(5!-5.5)⌋',\n", " 802: '⌈⌊√55⌋*(5!-5.5)⌉',\n", " 803: '⌊⌊5!**√5⌋/55.5⌋',\n", " 804: '⌈⌊5!**√5⌋/55.5⌉',\n", - " 805: '((5!-5)*⌊√55.5⌋)',\n", - " 806: '⌊(5-.5)**(5-.55)⌋',\n", + " 805: '⌈5!*√(55-(5+5))⌉',\n", + " 806: '(⌈⌊5!**√5⌋/55⌉-5)',\n", " 807: '(5!+⌊5.5*(5+5!)⌋)',\n", " 808: '(5!+⌈5.5*(5+5!)⌉)',\n", " 809: '(⌊5!*√(5+55)⌋-5!)',\n", " 810: '(⌈√5⌉*((5*55)-5))',\n", - " 811: '⌈(5+(5!**√5))/55⌉',\n", - " 812: '⌈(5*⌊5-.55⌋)**√5⌉',\n", + " 811: '⌈(⌈5!**√5⌉-5)/55⌉',\n", + " 812: '⌈5!*(⌊5/.55⌋-√5)⌉',\n", " 813: '(⌊5!*(√5+5)⌋-55)',\n", " 814: '(⌊55*√55⌋/.5)',\n", " 815: '⌊55/(.5/√55)⌋',\n", " 816: '(⌈55*√55⌉/.5)',\n", - " 817: '⌊5**(5/(⌈5.5⌉/5))⌋',\n", + " 817: '⌊5**(5*(5/⌈5.5⌉))⌋',\n", " 818: '((5*5!)+⌊5!/.55⌋)',\n", " 819: '((5*5!)+⌈5!/.55⌉)',\n", " 820: '((⌈√5⌉*(5*55))-5)',\n", @@ -2600,8 +2627,8 @@ " 825: '(55*(5+(5+5)))',\n", " 826: '⌊(5*5!)**(.5+.55)⌋',\n", " 827: '⌊(5-.55)**(5-.5)⌋',\n", - " 828: '⌈(5-.55)**(5-.5)⌉',\n", - " 829: '⌈(√5+5)*(5!-5.5)⌉',\n", + " 828: '(⌊((5+5)**5)/5!⌋-5)',\n", + " 829: '(⌈((5+5)**5)/5!⌉-5)',\n", " 830: '(5*⌊⌈√5⌉*55.5⌋)',\n", " 831: '(⌈√5⌉*⌊.5*555⌋)',\n", " 832: '⌊(.5+⌈.5⌉)*555⌋',\n", @@ -2610,16 +2637,16 @@ " 835: '(⌈5!*√55⌉-55)',\n", " 836: '⌊⌊√55⌋*(5!-.55)⌋',\n", " 837: '⌈⌊√55⌋*(5!-.55)⌉',\n", - " 838: '⌊(5.5**5)/⌈5.5⌉⌋',\n", - " 839: '⌈(5.5**5)/⌈5.5⌉⌉',\n", + " 838: '⌊√55*⌈5!-√55⌉⌋',\n", + " 839: '⌈√55*⌈5!-√55⌉⌉',\n", " 840: '(5!+⌈5.555⌉!)',\n", " 841: '(5!+⌈.5+⌈5.55⌉!⌉)',\n", " 842: '(⌈5.5⌉!+⌊√5*55⌋)',\n", - " 843: '(⌈5.5⌉!+⌈√5*55⌉)',\n", + " 843: '(⌊5!*√(55-5)⌋-5)',\n", " 844: '⌊5!*√(55-5.5)⌋',\n", - " 845: '⌊√55*⌊5!-5.5⌋⌋',\n", + " 845: '(5+(5!+⌈5.55⌉!))',\n", " 846: '⌈√55*⌊5!-5.5⌋⌉',\n", - " 847: '(⌊√55⌋*⌈5!+.55⌉)',\n", + " 847: '(⌊(5!-5)*√55⌋-5)',\n", " 848: '⌊5!*√⌊55.5-5⌋⌋',\n", " 849: '⌊√55*(5!-5.5)⌋',\n", " 850: '(5*(5!+(55-5)))',\n", @@ -2628,20 +2655,20 @@ " 853: '⌈5!*√(55.5-5)⌉',\n", " 854: '(5+⌈5!*√(55-5)⌉)',\n", " 855: '(5*⌈5.55**⌈√5⌉⌉)',\n", - " 856: '⌊(5!-5)*√55.5⌋',\n", - " 857: '⌈(5!-5)*√55.5⌉',\n", + " 856: '⌊5!*√⌈55.5-5⌉⌋',\n", + " 857: '⌈5!*√⌈55.5-5⌉⌉',\n", " 858: '(5+⌈(5!-5)*√55⌉)',\n", " 859: '⌊55**(√5-.55)⌋',\n", " 860: '⌈55**(√5-.55)⌉',\n", " 861: '⌊5!*(5+(5!/55))⌋',\n", " 862: '⌈5!*(5+(5!/55))⌉',\n", - " 863: '⌈5**(⌊5!/5.5⌋/5)⌉',\n", - " 864: '(⌊.5*55⌋/(.5**5))',\n", - " 865: '(5*⌊55*√(5+5)⌋)',\n", - " 866: '⌈5!*√⌊55-√5.5⌋⌉',\n", - " 867: '⌊√55*⌊5!-√5.5⌋⌋',\n", - " 868: '⌈√55*⌊5!-√5.5⌋⌉',\n", - " 869: '⌊5*(55*√(5+5))⌋',\n", + " 863: '⌊5*(5!+(55-√5))⌋',\n", + " 864: '(⌊5!*√55⌋-(5*5))',\n", + " 865: '(5*⌊√(5+5)*55⌋)',\n", + " 866: '(⌈5!*√55⌉-(5!/5))',\n", + " 867: '(⌈5!**√⌊5!/55⌋⌉-5)',\n", + " 868: '⌊5!*(√5+⌊5.55⌋)⌋',\n", + " 869: '⌊5*(√(5+5)*55)⌋',\n", " 870: '((555-5!)/.5)',\n", " 871: '⌊5!**√⌈5.55/5⌉⌋',\n", " 872: '⌊5*(5!+(55-.5))⌋',\n", @@ -2651,23 +2678,23 @@ " 876: '⌈.5+(5*(5!+55))⌉',\n", " 877: '⌊5*(5!+55.5)⌋',\n", " 878: '⌈5*(5!+55.5)⌉',\n", - " 879: '⌈√5*⌈√.5*555⌉⌉',\n", + " 879: '(⌊5!*√55⌋-(5+5))',\n", " 880: '(5*⌈5!+55.5⌉)',\n", " 881: '⌊5!*√⌊55-.55⌋⌋',\n", - " 882: '⌊√55*⌊5!-.55⌋⌋',\n", + " 882: '⌈5!*√⌊55-.55⌋⌉',\n", " 883: '⌊⌊5!*√55⌋-5.5⌋',\n", " 884: '⌊⌈5!*√55⌉-5.5⌋',\n", " 885: '⌈⌈5!*√55⌉-5.5⌉',\n", " 886: '⌈√55*(5!-.55)⌉',\n", - " 887: '⌈⌊5!-.5⌋*√55.5⌉',\n", + " 887: '(⌈(5.5**5)/5⌉-5!)',\n", " 888: '(⌊5!*√55.5⌋-5)',\n", " 889: '⌊5!*(55/√55)⌋',\n", " 890: '⌈5!*(55/√55)⌉',\n", " 891: '⌈.55+(5!*√55)⌉',\n", - " 892: '⌊⌊5!*√55.5⌋-.5⌋',\n", + " 892: '(⌊5!*√⌈55.5⌉⌋-5)',\n", " 893: '⌊⌊5.5⌋!*√55.5⌋',\n", " 894: '⌊5.5+⌊5!*√55⌋⌋',\n", - " 895: '⌈5.5+⌊5!*√55⌋⌉',\n", + " 895: '(5!+(⌈5.5⌉!+55))',\n", " 896: '⌈5.5+⌈5!*√55⌉⌉',\n", " 897: '⌊5!*√⌈55.55⌉⌋',\n", " 898: '⌈5!*√⌈55.55⌉⌉',\n", @@ -2690,28 +2717,28 @@ " 915: '⌊5.5**⌊5-.55⌋⌋',\n", " 916: '⌈5.5**⌊5-.55⌋⌉',\n", " 917: '⌈⌈√5+5!⌉*√55.5⌉',\n", - " 918: '⌊5.5*⌈5.5**⌈√5⌉⌉⌋',\n", - " 919: '⌈5.5*⌈5.5**⌈√5⌉⌉⌉',\n", + " 918: '⌊(5+5!)*√⌊55-.5⌋⌋',\n", + " 919: '⌈(5+5!)*√⌊55-.5⌋⌉',\n", " 920: '(5+⌊5.5**⌊5-.5⌋⌋)',\n", - " 921: '⌊(.5*5)**√55.5⌋',\n", - " 922: '⌈(.5*5)**√55.5⌉',\n", + " 921: '(5+⌈5.5**⌊5-.5⌋⌉)',\n", + " 922: '(⌊(5+5!)*√55⌋-5)',\n", " 923: '(55+⌊5!*(√5+5)⌋)',\n", " 924: '(55+⌈5!*(√5+5)⌉)',\n", - " 925: '(5*(555/⌈√5⌉))',\n", + " 925: '(5*(5!+(5!-55)))',\n", " 926: '⌊⌊(5+5!)*√55⌋-.5⌋',\n", - " 927: '⌊√55*⌊5!+5.5⌋⌋',\n", - " 928: '⌈√55*⌊5!+5.5⌋⌉',\n", + " 927: '⌊5*(5*(5*√55))⌋',\n", + " 928: '⌈5*(5*(5*√55))⌉',\n", " 929: '⌊5!*√⌊5+55.5⌋⌋',\n", - " 930: '⌈5!*√⌊5+55.5⌋⌉',\n", + " 930: '(5*⌈5*(5*√55)⌉)',\n", " 931: '⌊(5+5!)*√55.5⌋',\n", " 932: '⌈(5+5!)*√55.5⌉',\n", " 933: '⌊5!*√(5+55.5)⌋',\n", - " 934: '⌈5!*√(5+55.5)⌉',\n", + " 934: '⌊5!*(√5+5.55)⌋',\n", " 935: '(55*⌈5!/√55⌉)',\n", " 936: '⌈(5+5!)*√⌈55.5⌉⌉',\n", " 937: '⌊5!*√⌈5+55.5⌉⌋',\n", " 938: '⌈5!*√⌈5+55.5⌉⌉',\n", - " 939: '⌊5.5/(.5**√55)⌋',\n", + " 939: '(⌈5.5⌉!+⌈5!/.55⌉)',\n", " 940: '⌈5.5/(.5**√55)⌉',\n", " 941: '⌊√55*⌊5!+√55⌋⌋',\n", " 942: '⌊⌊5**5.5⌋/√55⌋',\n", @@ -2719,7 +2746,7 @@ " 944: '(55+⌊5!*√55⌋)',\n", " 945: '(55+⌈5!*√55⌉)',\n", " 946: '(5.5*⌊(5+5)**√5⌋)',\n", - " 947: '⌊(√.5+⌈.5⌉)*555⌋',\n", + " 947: '(⌈5**(5-√.5)⌉-55)',\n", " 948: '⌊5.55**⌊5-.5⌋⌋',\n", " 949: '⌈5.55**⌊5-.5⌋⌉',\n", " 950: '(5*(5*⌈5*√55⌉))',\n", @@ -2729,53 +2756,53 @@ " 954: '⌊(5!+555)/√.5⌋',\n", " 955: '⌊5!*(.55+√55)⌋',\n", " 956: '⌈5!*(.55+√55)⌉',\n", - " 957: '⌊5!*(.5+√⌈55.5⌉)⌋',\n", - " 958: '⌈5!*(.5+√⌈55.5⌉)⌉',\n", + " 957: '⌊(5**5)/(5.5-√5)⌋',\n", + " 958: '⌈(5**5)/(5.5-√5)⌉',\n", " 959: '⌊(5!*⌈√55⌉)-.55⌋',\n", " 960: '(5!*⌈55/√55⌉)',\n", " 961: '⌊√⌈.5*5⌉*555⌋',\n", " 962: '⌊5.5*(5!+55)⌋',\n", " 963: '⌈5.5*(5!+55)⌉',\n", " 964: '⌈(√5-.5)*555⌉',\n", - " 965: '⌊(5!/5.55)**√5⌋',\n", + " 965: '(5*⌊5!**(5.5/5)⌋)',\n", " 966: '⌈(5!/5.55)**√5⌉',\n", - " 967: '⌊5!*√⌈5!-55.5⌉⌋',\n", - " 968: '⌈5!*√⌈5!-55.5⌉⌉',\n", + " 967: '⌊5!*√(5+(5+55))⌋',\n", + " 968: '⌊(5+5!)*√(5+55)⌋',\n", " 969: '((⌊5-.5⌋**5)-55)',\n", " 970: '(5*⌈5!**(5.5/5)⌉)',\n", " 971: '(⌈5*(5!/.55)⌉-5!)',\n", " 972: '⌊√5*(555-5!)⌋',\n", " 973: '⌈√5*(555-5!)⌉',\n", " 974: '⌊5!*√⌊5!*.555⌋⌋',\n", - " 975: '⌈5!*√⌊5!*.555⌋⌉',\n", + " 975: '((5*⌈5!/.55⌉)-5!)',\n", " 976: '(⌈√55⌉*⌊√5*55⌋)',\n", " 977: '⌈(5+5)*((.5*5)**5)⌉',\n", - " 978: '⌊5!*(√.5+√55.5)⌋',\n", + " 978: '⌈√5*⌈(5!+5!)/.55⌉⌉',\n", " 979: '⌊5!*(5+√⌊5+5.5⌋)⌋',\n", - " 980: '⌈5!*(5+√⌊5+5.5⌋)⌉',\n", + " 980: '((5+5)*⌈(.5*5)**5⌉)',\n", " 981: '((5-.5)*⌊5!/.55⌋)',\n", " 982: '⌊5!*√⌈5!*.555⌉⌋',\n", " 983: '⌈5!*√⌈5!*.555⌉⌉',\n", " 984: '(⌈√55⌉*⌈√5*55⌉)',\n", " 985: '⌊(5-.5)*⌈5!/.55⌉⌋',\n", " 986: '⌈(5-.5)*⌈5!/.55⌉⌉',\n", - " 987: '⌊√⌈√5*5⌉**5.55⌋',\n", + " 987: '(⌈(5**5)/⌈√5⌉⌉-55)',\n", " 988: '⌊5!*(√5+⌈5.55⌉)⌋',\n", - " 989: '⌈5!*(√5+⌈5.55⌉)⌉',\n", + " 989: '⌊5**(5!/⌈.5*55⌉)⌋',\n", " 990: '((555/.5)-5!)',\n", " 991: '⌊5!*(5-(√5-5.5))⌋',\n", " 992: '⌈5!*(5-(√5-5.5))⌉',\n", - " 993: '⌈√5*⌊⌈√5⌉**5.55⌋⌉',\n", + " 993: '(5+⌊(5**5)/√(5+5)⌋)',\n", " 994: '⌊5!*(5*√(5*.55))⌋',\n", - " 995: '(⌈5.5⌉!+(5*55))',\n", - " 996: '⌊⌈5**(5-√.5)⌉-5.5⌋',\n", + " 995: '(5!+(5*(5!+55)))',\n", + " 996: '⌊5!*√⌈.55*(5+5!)⌉⌋',\n", " 997: '⌊5!*(5+√(55/5))⌋',\n", - " 998: '⌊⌊5**5.5⌋/⌊√55⌋⌋',\n", + " 998: '⌈5!*(5+√(55/5))⌉',\n", " 999: '⌈⌊5**5.5⌋/⌊√55⌋⌉',\n", " ...}" ] }, - "execution_count": 32, + "execution_count": 71, "metadata": {}, "output_type": "execute_result" } @@ -2801,7 +2828,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 72, "metadata": { "button": false, "new_sheet": false, @@ -2816,7 +2843,7 @@ "23308" ] }, - "execution_count": 33, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2835,11 +2862,86 @@ } }, "source": [ - "I think we've conquered the five 5s problem.\n", + "I think we've conquered the five 5s problem!\n", "\n", - "# Conclusion\n", "\n", - "We were able to solve the puzzles, and we now have some tools to explore new puzzles. What can you discover?" + "# Countdown to 2018\n", + "\n", + "On January 1 2018, [Michael Littman](http://cs.brown.edu/~mlittman/) posted this:\n", + "\n", + "> `2+0+1x8, 2+0-1+8, (2+0-1)x8, |2-0-1-8|, -2-0+1x8, -(2+0+1-8), sqrt(|2+0-18|), 2+0+1^8, 20-18, 2^(0x18), 2x0x1x8`... Happy New Year!\n", + "\n", + "Can we replicate that countdown, using the four digits of the year, in order, with operators and parens to evaluate each of the numbers from 10 to 1? I'm assuming Michael is disallowing floor and ceil, but allowing our other operators." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8)'" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clear()\n", + "floor_ceil_allowed = False\n", + "\n", + "def littman_countdown(year):\n", + " \"Return a Littman countdown for the year.\"\n", + " return ', '.join(littman(year, i) for i in range(10, 0, -1))\n", + "\n", + "def littman(year, i):\n", + " \"Return a string that makes i with the digits of year.\"\n", + " digits = tuple(map(int, str(year)))\n", + " return unbracket(expressions(digits).get(i, '???').replace('**', '^'))\n", + "\n", + "littman_countdown(2018)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similar results, with some alternatives for some numbers.\n", + "\n", + "Let's look at the decade:" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{2011: '20/(1+1), 20-11, -2.0+(1/.1), (2.0+1)!+1, √(20-11)!, (2.0+1)!-1, 2.0*(1+1), √(20-11), 2+(0/11), 2.0/(1+1)',\n", + " 2012: '20/(1*2), (2.0+1)^2, 20-12, 2.0+(1/.2), 2.0*(1+2), 2.0+(1+2), 2.0*(1*2), 2.0-(1-2), 2+(0/12), -.20+1.2',\n", + " 2013: '20/(-1+3), (2.0+1)*3, 2.0*(1+3), 20-13, 2.0+(1+3), 20/(1+3), 2.0-(1-3), (2.0-1)*3, 2+(0/13), (2.0+1)/3',\n", + " 2014: '2.0*(1+4), (2.0+1)^√4, 2.0/(1/4), 2.0+(1+4), 20-14, 20*(1/4), 20/(1+4), -20-(1-4!), 2+(0/14), .20*(1+4)',\n", + " 2015: '2.0*(1*5), √(201-5!), 2.0+(1+5), 2.0+(1*5), (.20*15)!, 20-15, 20/(1*5), .20*15, 2+(0/15), 2*(0.1*5)',\n", + " 2016: '2*(0-(1-6)), 2.0+(1+6), 2.0*√16, 2.0-(1-6), √(20+16), 20/√16, 20-16, 2.0+(1^6), 2+(0/16), .20*(-1+6)',\n", + " 2017: '2.0+(1+7), 2.0+(1*7), 2.0-(1-7), (2.0-1)*7, (20-17)!, -2.0+(1*7), -2.0-(1-7), 20-17, 2+(0/17), 2.0-(1^7)',\n", + " 2018: '2.0+(1*8), 2.0-(1-8), (2.0-1)*8, (2*0)-(1-8), √(2.0*18), -2.0-(1-8), √(-2.0+18), 2.0+(1^8), 20-18, 2.0-(1^8)',\n", + " 2019: '20-(1+9), (2.0-1)*9, (2*0)-(1-9), -2.0+(1*9), -2.0-(1-9), 20/(1+√9), 2.0-(1-√9), 2.0+(1^9), 2+(0/19), 20-19'}" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{y: littman_countdown(y) \n", + " for y in range(2011, 2020)}" ] } ],