Finished Advent 2017
This commit is contained in:
1 parent
184fc76db0
commit
3ccf589fd1
1 file changed
+43
-72
+43
-72
@@ -1017,8 +1017,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 5.07 s, sys: 12.6 ms, total: 5.09 s\n",
|
||||
"Wall time: 5.08 s\n"
|
||||
"CPU times: user 5.09 s, sys: 19.4 ms, total: 5.11 s\n",
|
||||
"Wall time: 5.11 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1754,8 +1754,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 18.7 ms, sys: 1.36 ms, total: 20.1 ms\n",
|
||||
"Wall time: 23.7 ms\n"
|
||||
"CPU times: user 13.7 ms, sys: 346 µs, total: 14 ms\n",
|
||||
"Wall time: 13.7 ms\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2179,8 +2179,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 516 ms, sys: 2.49 ms, total: 519 ms\n",
|
||||
"Wall time: 520 ms\n"
|
||||
"CPU times: user 488 ms, sys: 1.32 ms, total: 490 ms\n",
|
||||
"Wall time: 489 ms\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2283,8 +2283,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 533 ms, sys: 2.49 ms, total: 536 ms\n",
|
||||
"Wall time: 536 ms\n"
|
||||
"CPU times: user 509 ms, sys: 1.64 ms, total: 511 ms\n",
|
||||
"Wall time: 510 ms\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2320,8 +2320,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 15.2 s, sys: 35.9 ms, total: 15.2 s\n",
|
||||
"Wall time: 15.2 s\n"
|
||||
"CPU times: user 15.3 s, sys: 66.6 ms, total: 15.4 s\n",
|
||||
"Wall time: 15.5 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2375,8 +2375,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 9.88 s, sys: 16.8 ms, total: 9.9 s\n",
|
||||
"Wall time: 9.91 s\n"
|
||||
"CPU times: user 9.87 s, sys: 26.7 ms, total: 9.9 s\n",
|
||||
"Wall time: 9.92 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2511,7 +2511,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 125,
|
||||
"execution_count": 70,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -2748,14 +2748,14 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 1.71 s, sys: 19.9 ms, total: 1.73 s\n",
|
||||
"Wall time: 1.75 s\n"
|
||||
"CPU times: user 1.42 s, sys: 6.51 ms, total: 1.42 s\n",
|
||||
"Wall time: 1.42 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<__main__.Node at 0x114f66fd0>"
|
||||
"<__main__.Node at 0x11859e0b8>"
|
||||
]
|
||||
},
|
||||
"execution_count": 77,
|
||||
@@ -2788,8 +2788,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 5.59 s, sys: 10.7 ms, total: 5.6 s\n",
|
||||
"Wall time: 5.61 s\n"
|
||||
"CPU times: user 5.51 s, sys: 6.74 ms, total: 5.52 s\n",
|
||||
"Wall time: 5.52 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -3630,8 +3630,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 5.32 s, sys: 89.5 ms, total: 5.41 s\n",
|
||||
"Wall time: 5.41 s\n"
|
||||
"CPU times: user 5.35 s, sys: 108 ms, total: 5.45 s\n",
|
||||
"Wall time: 5.47 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -3881,8 +3881,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 21.3 s, sys: 46.2 ms, total: 21.4 s\n",
|
||||
"Wall time: 21.4 s\n"
|
||||
"CPU times: user 21.2 s, sys: 62 ms, total: 21.2 s\n",
|
||||
"Wall time: 21.3 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -3965,8 +3965,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 984 ms, sys: 8.51 ms, total: 993 ms\n",
|
||||
"Wall time: 997 ms\n"
|
||||
"CPU times: user 944 ms, sys: 3.78 ms, total: 948 ms\n",
|
||||
"Wall time: 947 ms\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4086,8 +4086,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 2.39 s, sys: 10.5 ms, total: 2.4 s\n",
|
||||
"Wall time: 2.4 s\n"
|
||||
"CPU times: user 2.33 s, sys: 6.18 ms, total: 2.34 s\n",
|
||||
"Wall time: 2.34 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4125,8 +4125,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 2.52 s, sys: 18.5 ms, total: 2.53 s\n",
|
||||
"Wall time: 2.55 s\n"
|
||||
"CPU times: user 2.4 s, sys: 3.9 ms, total: 2.4 s\n",
|
||||
"Wall time: 2.4 s\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4168,8 +4168,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CPU times: user 664 ms, sys: 3.29 ms, total: 667 ms\n",
|
||||
"Wall time: 670 ms\n"
|
||||
"CPU times: user 612 ms, sys: 1.7 ms, total: 613 ms\n",
|
||||
"Wall time: 614 ms\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4253,7 +4253,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 122,
|
||||
"execution_count": 127,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -4262,7 +4262,7 @@
|
||||
"4769"
|
||||
]
|
||||
},
|
||||
"execution_count": 122,
|
||||
"execution_count": 127,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
@@ -4280,35 +4280,6 @@
|
||||
"sum(turing(machine(), 'A', 12667664).values())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 128,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"4770"
|
||||
]
|
||||
},
|
||||
"execution_count": 128,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def turing(machine, state):\n",
|
||||
" \"Run the Turing machine, starting at state; yield tape each step.\"\n",
|
||||
" tape = defaultdict(int)\n",
|
||||
" cursor = 0\n",
|
||||
" while True:\n",
|
||||
" tape[cursor], move, state = machine[state][tape[cursor]]\n",
|
||||
" cursor += move\n",
|
||||
" yield tape\n",
|
||||
"\n",
|
||||
"quantify(nth(turing(machine(), 'A'), 12667664).values())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
@@ -4348,20 +4319,20 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 123,
|
||||
"execution_count": 129,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Day 5: 5.4 sec\n",
|
||||
"Day 15: 25.8 sec\n",
|
||||
"Day 17: 5.7 sec\n",
|
||||
"Day 21: 5.6 sec\n",
|
||||
"Day 22: 22.0 sec\n",
|
||||
"CPU times: user 1min 20s, sys: 499 ms, total: 1min 21s\n",
|
||||
"Wall time: 1min 21s\n"
|
||||
"Day 5: 5.1 sec\n",
|
||||
"Day 15: 26.1 sec\n",
|
||||
"Day 17: 6.1 sec\n",
|
||||
"Day 21: 6.0 sec\n",
|
||||
"Day 22: 24.1 sec\n",
|
||||
"CPU times: user 1min 21s, sys: 3.5 s, total: 1min 25s\n",
|
||||
"Wall time: 1min 26s\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -4426,7 +4397,7 @@
|
||||
" run23_2() == 913,\n",
|
||||
" 24: lambda: strongest_chain() == 1695 and\n",
|
||||
" strength(max(chains(), key=length_and_strength)) == 1673,\n",
|
||||
" 25: lambda: quantify(nth(turing(machine(), 'A'), 12667664).values()) == 4769\n",
|
||||
" 25: lambda: sum(turing(machine(), 'A', 12667664).values()) == 4769\n",
|
||||
"})"
|
||||
]
|
||||
},
|
||||
@@ -4441,14 +4412,14 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 124,
|
||||
"execution_count": 125,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x114f7fb00>"
|
||||
"<matplotlib.figure.Figure at 0x11e68d3c8>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
|
||||
Reference in new issue
Block a user