From 84f849f83970f3a6295d09da5c1bef1fe9cec4cb Mon Sep 17 00:00:00 2001 From: Neil Smith Date: Mon, 26 Jun 2017 20:30:13 +0100 Subject: [PATCH] Finished amijakuji part 1, added pictures --- 04-08-amidakuji/04-small.txt | 31 +- 04-08-amidakuji/amidakuji-creation.ipynb | 1298 ++++++++++-------- 04-08-amidakuji/amidakuji-solution-1.ipynb | 129 +- 04-08-amidakuji/amidakuji-solution-2.ipynb | 49 +- 04-08-amidakuji/small-expanded-trace.svg | 555 ++++++++ 04-08-amidakuji/small-expanded-trace.svg.png | Bin 0 -> 31000 bytes 04-08-amidakuji/small-expanded.svg | 520 +++++++ 04-08-amidakuji/small-expanded.svg.png | Bin 0 -> 16576 bytes 04-08-amidakuji/small-packed.svg | 522 +++++++ 04-08-amidakuji/small-packed.svg.png | Bin 0 -> 20900 bytes 04-08-amidakuji/small-unpaired.svg | 405 ++++++ 04-08-amidakuji/small-untriple-1.svg | 405 ++++++ 04-08-amidakuji/small-untriple-2.svg | 373 +++++ 04-08-amidakuji/untriple-general.svg | 310 +++++ 14 files changed, 3959 insertions(+), 638 deletions(-) create mode 100644 04-08-amidakuji/small-expanded-trace.svg create mode 100644 04-08-amidakuji/small-expanded-trace.svg.png create mode 100644 04-08-amidakuji/small-expanded.svg create mode 100644 04-08-amidakuji/small-expanded.svg.png create mode 100644 04-08-amidakuji/small-packed.svg create mode 100644 04-08-amidakuji/small-packed.svg.png create mode 100644 04-08-amidakuji/small-unpaired.svg create mode 100644 04-08-amidakuji/small-untriple-1.svg create mode 100644 04-08-amidakuji/small-untriple-2.svg create mode 100644 04-08-amidakuji/untriple-general.svg diff --git a/04-08-amidakuji/04-small.txt b/04-08-amidakuji/04-small.txt index 5258d03..75e0d3d 100644 --- a/04-08-amidakuji/04-small.txt +++ b/04-08-amidakuji/04-small.txt @@ -1,20 +1,15 @@ -(2, 3) -(2, 6) -(3, 7) -(5, 6) -(0, 1) -(0, 1) -(6, 7) (2, 5) -(6, 9) -(4, 8) +(1, 4) +(0, 3) +(0, 3) +(0, 5) +(3, 5) (0, 2) -(5, 7) -(4, 8) -(1, 5) -(6, 8) -(6, 9) -(2, 5) -(1, 8) -(5, 7) -(2, 9) \ No newline at end of file +(3, 4) +(2, 4) +(1, 2) +(0, 4) +(1, 2) +(2, 4) +(0, 4) +(1, 4) \ No newline at end of file diff --git a/04-08-amidakuji/amidakuji-creation.ipynb b/04-08-amidakuji/amidakuji-creation.ipynb index c08756e..65d9751 100644 --- a/04-08-amidakuji/amidakuji-creation.ipynb +++ b/04-08-amidakuji/amidakuji-creation.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 37, "metadata": { "collapsed": true }, @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 38, "metadata": { "collapsed": true }, @@ -39,7 +39,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 39, "metadata": { "collapsed": true }, @@ -53,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 40, "metadata": { "collapsed": true }, @@ -76,47 +76,42 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{Link(height=2, left=0, right=3),\n", - " Link(height=2, left=1, right=7),\n", - " Link(height=3, left=1, right=8),\n", - " Link(height=9, left=6, right=9),\n", - " Link(height=15, left=0, right=4),\n", - " Link(height=20, left=0, right=8),\n", - " Link(height=23, left=3, right=4),\n", - " Link(height=24, left=3, right=6),\n", - " Link(height=28, left=1, right=8),\n", - " Link(height=28, left=5, right=6),\n", - " Link(height=32, left=1, right=7),\n", - " Link(height=34, left=1, right=9),\n", - " Link(height=36, left=0, right=4),\n", - " Link(height=38, left=5, right=6),\n", - " Link(height=40, left=0, right=2),\n", - " Link(height=41, left=3, right=7),\n", - " Link(height=43, left=2, right=4),\n", - " Link(height=43, left=6, right=8),\n", - " Link(height=44, left=0, right=6),\n", - " Link(height=46, left=7, right=8)}" + "{Link(height=4, left=0, right=3),\n", + " Link(height=8, left=1, right=5),\n", + " Link(height=16, left=0, right=4),\n", + " Link(height=17, left=1, right=5),\n", + " Link(height=18, left=3, right=5),\n", + " Link(height=20, left=0, right=1),\n", + " Link(height=25, left=0, right=3),\n", + " Link(height=30, left=1, right=4),\n", + " Link(height=33, left=0, right=4),\n", + " Link(height=34, left=4, right=5),\n", + " Link(height=35, left=0, right=3),\n", + " Link(height=36, left=1, right=4),\n", + " Link(height=37, left=2, right=5),\n", + " Link(height=45, left=4, right=5),\n", + " Link(height=46, left=2, right=5)}" ] }, - "execution_count": 6, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "net = make_net(20)\n", + "net = make_net(15, lines=6)\n", "net" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 42, "metadata": { "collapsed": true }, @@ -135,7 +130,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -144,7 +139,7 @@ "3" ] }, - "execution_count": 8, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -155,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -174,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 45, "metadata": { "collapsed": true }, @@ -188,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 46, "metadata": { "collapsed": true }, @@ -209,25 +204,25 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10000 loops, best of 3: 45.7 µs per loop\n" + "10000 loops, best of 3: 39.2 µs per loop\n" ] } ], "source": [ "%%timeit\n", - "follow_many('abcdefghij', net)" + "follow_many('abcdef', net)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 48, "metadata": { "collapsed": true }, @@ -239,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 49, "metadata": { "collapsed": true }, @@ -259,16 +254,16 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'(0, 3), (1, 7), (1, 8), (6, 9), (0, 4), (0, 8), (3, 4), (3, 6), (1, 8), (5, 6), (1, 7), (1, 9), (0, 4), (5, 6), (0, 2), (3, 7), (2, 4), (6, 8), (0, 6), (7, 8)'" + "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'" ] }, - "execution_count": 105, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -279,16 +274,16 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'(1, 7), (0, 3), (1, 8), (6, 9), (0, 4), (0, 8), (3, 4), (3, 6), (5, 6), (1, 8), (1, 7), (1, 9), (0, 4), (5, 6), (0, 2), (3, 7), (6, 8), (2, 4), (0, 6), (7, 8)'" + "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'" ] }, - "execution_count": 106, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -299,16 +294,16 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'(0, 3) : (1, 7) : (1, 8) : (6, 9) : (0, 4) : (0, 8) : (3, 4) : (3, 6) : (1, 8) : (5, 6) : (1, 7) : (1, 9) : (0, 4) : (5, 6) : (0, 2) : (3, 7) : (2, 4) : (6, 8) : (0, 6) : (7, 8)'" + "'(0, 3) : (1, 5) : (0, 4) : (1, 5) : (3, 5) : (0, 1) : (0, 3) : (1, 4) : (0, 4) : (4, 5) : (0, 3) : (1, 4) : (2, 5) : (4, 5) : (2, 5)'" ] }, - "execution_count": 110, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -319,16 +314,16 @@ }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'(0, 3)\\n(1, 7)\\n(1, 8)\\n(6, 9)\\n(0, 4)\\n(0, 8)\\n(3, 4)\\n(3, 6)\\n(1, 8)\\n(5, 6)\\n(1, 7)\\n(1, 9)\\n(0, 4)\\n(5, 6)\\n(0, 2)\\n(3, 7)\\n(2, 4)\\n(6, 8)\\n(0, 6)\\n(7, 8)'" + "'(0, 3)\\n(1, 5)\\n(0, 4)\\n(1, 5)\\n(3, 5)\\n(0, 1)\\n(0, 3)\\n(1, 4)\\n(0, 4)\\n(4, 5)\\n(0, 3)\\n(1, 4)\\n(2, 5)\\n(4, 5)\\n(2, 5)'" ] }, - "execution_count": 111, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -339,7 +334,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 54, "metadata": { "scrolled": true }, @@ -349,25 +344,20 @@ "output_type": "stream", "text": [ "(0, 3)\n", - "(1, 7)\n", - "(1, 8)\n", - "(6, 9)\n", + "(1, 5)\n", "(0, 4)\n", - "(0, 8)\n", - "(3, 4)\n", - "(3, 6)\n", - "(1, 8)\n", - "(5, 6)\n", - "(1, 7)\n", - "(1, 9)\n", + "(1, 5)\n", + "(3, 5)\n", + "(0, 1)\n", + "(0, 3)\n", + "(1, 4)\n", "(0, 4)\n", - "(5, 6)\n", - "(0, 2)\n", - "(3, 7)\n", - "(2, 4)\n", - "(6, 8)\n", - "(0, 6)\n", - "(7, 8)\n" + "(4, 5)\n", + "(0, 3)\n", + "(1, 4)\n", + "(2, 5)\n", + "(4, 5)\n", + "(2, 5)\n" ] } ], @@ -377,16 +367,25 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "# open('04-small.txt', 'w').write(show_net(net))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'(0, 3), (1, 7), (1, 8), (6, 9), (0, 4), (0, 8), (3, 4), (3, 6), (1, 8), (5, 6), (1, 7), (1, 9), (0, 4), (5, 6), (0, 2), (3, 7), (2, 4), (6, 8), (0, 6), (7, 8)'" + "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'" ] }, - "execution_count": 108, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -397,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -406,7 +405,7 @@ "[]" ] }, - "execution_count": 17, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -418,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 58, "metadata": { "collapsed": true }, @@ -429,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 59, "metadata": { "collapsed": true }, @@ -441,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 60, "metadata": { "collapsed": true }, @@ -453,35 +452,41 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 61, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "net = read_net('(1, 5), (2, 4), (0, 2), (0, 4), (0, 1), (0, 2), (1, 5), (0, 3), (1, 2), (4, 5), (0, 5), (3, 5), (1, 4), (0, 1), (2, 3)')" + ] + }, + { + "cell_type": "code", + "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Link(height=0, left=0, right=3),\n", - " Link(height=1, left=1, right=7),\n", - " Link(height=2, left=1, right=8),\n", - " Link(height=3, left=6, right=9),\n", - " Link(height=4, left=0, right=4),\n", - " Link(height=5, left=0, right=8),\n", - " Link(height=6, left=3, right=4),\n", - " Link(height=7, left=3, right=6),\n", - " Link(height=8, left=1, right=8),\n", - " Link(height=9, left=5, right=6),\n", - " Link(height=10, left=1, right=7),\n", - " Link(height=11, left=1, right=9),\n", - " Link(height=12, left=0, right=4),\n", - " Link(height=13, left=5, right=6),\n", - " Link(height=14, left=0, right=2),\n", - " Link(height=15, left=3, right=7),\n", - " Link(height=16, left=2, right=4),\n", - " Link(height=17, left=6, right=8),\n", - " Link(height=18, left=0, right=6),\n", - " Link(height=19, left=7, right=8)]" + "[Link(height=0, left=1, right=5),\n", + " Link(height=1, left=2, right=4),\n", + " Link(height=2, left=0, right=2),\n", + " Link(height=3, left=0, right=4),\n", + " Link(height=4, left=0, right=1),\n", + " Link(height=5, left=0, right=2),\n", + " Link(height=6, left=1, right=5),\n", + " Link(height=7, left=0, right=3),\n", + " Link(height=8, left=1, right=2),\n", + " Link(height=9, left=4, right=5),\n", + " Link(height=10, left=0, right=5),\n", + " Link(height=11, left=3, right=5),\n", + " Link(height=12, left=1, right=4),\n", + " Link(height=13, left=0, right=1),\n", + " Link(height=14, left=2, right=3)]" ] }, - "execution_count": 21, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } @@ -492,35 +497,30 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Link(height=0, left=0, right=3),\n", - " Link(height=0, left=1, right=7),\n", - " Link(height=0, left=6, right=9),\n", - " Link(height=1, left=0, right=4),\n", - " Link(height=1, left=1, right=8),\n", - " Link(height=2, left=0, right=8),\n", - " Link(height=2, left=3, right=4),\n", - " Link(height=3, left=0, right=4),\n", - " Link(height=3, left=1, right=8),\n", - " Link(height=3, left=3, right=6),\n", + "[Link(height=0, left=1, right=5),\n", + " Link(height=0, left=2, right=4),\n", + " Link(height=1, left=0, right=2),\n", + " Link(height=2, left=0, right=4),\n", + " Link(height=3, left=0, right=1),\n", " Link(height=4, left=0, right=2),\n", - " Link(height=4, left=1, right=7),\n", - " Link(height=4, left=5, right=6),\n", - " Link(height=5, left=1, right=9),\n", - " Link(height=5, left=2, right=4),\n", - " Link(height=5, left=3, right=7),\n", - " Link(height=5, left=5, right=6),\n", - " Link(height=6, left=6, right=8),\n", - " Link(height=7, left=0, right=6),\n", - " Link(height=7, left=7, right=8)]" + " Link(height=4, left=1, right=5),\n", + " Link(height=5, left=0, right=3),\n", + " Link(height=5, left=1, right=2),\n", + " Link(height=5, left=4, right=5),\n", + " Link(height=6, left=0, right=5),\n", + " Link(height=6, left=1, right=4),\n", + " Link(height=7, left=0, right=1),\n", + " Link(height=7, left=3, right=5),\n", + " Link(height=8, left=2, right=3)]" ] }, - "execution_count": 22, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -531,35 +531,30 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Link(height=0, left=0, right=3),\n", - " Link(height=0, left=1, right=7),\n", - " Link(height=0, left=6, right=9),\n", - " Link(height=1, left=0, right=4),\n", - " Link(height=1, left=1, right=8),\n", - " Link(height=2, left=0, right=8),\n", - " Link(height=2, left=3, right=4),\n", - " Link(height=3, left=0, right=4),\n", - " Link(height=3, left=1, right=8),\n", - " Link(height=3, left=3, right=6),\n", + "[Link(height=0, left=1, right=5),\n", + " Link(height=0, left=2, right=4),\n", + " Link(height=1, left=0, right=2),\n", + " Link(height=2, left=0, right=4),\n", + " Link(height=3, left=0, right=1),\n", " Link(height=4, left=0, right=2),\n", - " Link(height=4, left=1, right=7),\n", - " Link(height=4, left=5, right=6),\n", - " Link(height=5, left=1, right=9),\n", - " Link(height=5, left=2, right=4),\n", - " Link(height=5, left=3, right=7),\n", - " Link(height=5, left=5, right=6),\n", - " Link(height=6, left=6, right=8),\n", - " Link(height=7, left=0, right=6),\n", - " Link(height=7, left=7, right=8)]" + " Link(height=4, left=1, right=5),\n", + " Link(height=5, left=0, right=3),\n", + " Link(height=5, left=1, right=2),\n", + " Link(height=5, left=4, right=5),\n", + " Link(height=6, left=0, right=5),\n", + " Link(height=6, left=1, right=4),\n", + " Link(height=7, left=0, right=1),\n", + " Link(height=7, left=3, right=5),\n", + " Link(height=8, left=2, right=3)]" ] }, - "execution_count": 23, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -570,16 +565,16 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(False, True)" + "(True, True)" ] }, - "execution_count": 24, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -593,7 +588,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 66, "metadata": { "collapsed": true }, @@ -608,7 +603,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 67, "metadata": { "collapsed": true }, @@ -620,16 +615,16 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "2224" + "2239" ] }, - "execution_count": 27, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -640,16 +635,16 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "99998" + "99989" ] }, - "execution_count": 28, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -660,7 +655,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -669,7 +664,7 @@ "10206" ] }, - "execution_count": 29, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -680,16 +675,16 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "2224" + "2239" ] }, - "execution_count": 30, + "execution_count": 71, "metadata": {}, "output_type": "execute_result" } @@ -700,7 +695,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 72, "metadata": { "collapsed": true }, @@ -711,14 +706,14 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 23.4 ms per loop\n" + "10 loops, best of 3: 25.9 ms per loop\n" ] } ], @@ -729,7 +724,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 74, "metadata": { "collapsed": true }, @@ -741,7 +736,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 75, "metadata": { "collapsed": true }, @@ -758,7 +753,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 76, "metadata": { "collapsed": true }, @@ -777,14 +772,14 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 23.5 ms per loop\n" + "10 loops, best of 3: 24.1 ms per loop\n" ] } ], @@ -795,7 +790,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 78, "metadata": { "collapsed": true }, @@ -811,7 +806,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 79, "metadata": { "collapsed": true }, @@ -828,7 +823,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 80, "metadata": { "collapsed": true }, @@ -844,7 +839,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 81, "metadata": { "collapsed": true }, @@ -862,7 +857,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 82, "metadata": {}, "outputs": [ { @@ -875,10 +870,10 @@ { "data": { "text/plain": [ - "(10207, 9839)" + "(10207, 9813)" ] }, - "execution_count": 41, + "execution_count": 82, "metadata": {}, "output_type": "execute_result" } @@ -891,7 +886,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -900,7 +895,7 @@ "[]" ] }, - "execution_count": 42, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -911,7 +906,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 84, "metadata": { "collapsed": true }, @@ -923,14 +918,14 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 85, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1 loop, best of 3: 5.77 s per loop\n" + "1 loop, best of 3: 6.08 s per loop\n" ] } ], @@ -941,7 +936,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 86, "metadata": { "collapsed": true }, @@ -954,7 +949,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 87, "metadata": { "collapsed": true }, @@ -965,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 88, "metadata": { "collapsed": true }, @@ -987,7 +982,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 89, "metadata": { "collapsed": true }, @@ -1019,7 +1014,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 90, "metadata": { "collapsed": true }, @@ -1031,8 +1026,10 @@ }, { "cell_type": "code", - "execution_count": 50, - "metadata": {}, + "execution_count": 91, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def triple_pair_hg(height_groups, debug=False):\n", @@ -1072,7 +1069,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 92, "metadata": { "collapsed": true }, @@ -1095,7 +1092,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 93, "metadata": { "collapsed": true }, @@ -1117,23 +1114,23 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[(Link(height=831, left=8, right=16),\n", - " Link(height=832, left=8, right=25),\n", - " Link(height=833, left=8, right=16),\n", - " Link(height=834, left=8, right=25)),\n", - " (Link(height=1657, left=1, right=13),\n", - " Link(height=1658, left=1, right=12),\n", - " Link(height=1659, left=1, right=13),\n", - " Link(height=1660, left=1, right=12))]" + "[(Link(height=1126, left=8, right=17),\n", + " Link(height=1127, left=1, right=8),\n", + " Link(height=1128, left=8, right=17),\n", + " Link(height=1129, left=1, right=8)),\n", + " (Link(height=1952, left=12, right=25),\n", + " Link(height=1953, left=10, right=12),\n", + " Link(height=1954, left=12, right=25),\n", + " Link(height=1955, left=10, right=12))]" ] }, - "execution_count": 53, + "execution_count": 94, "metadata": {}, "output_type": "execute_result" } @@ -1145,14 +1142,14 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 99.4 ms per loop\n" + "10 loops, best of 3: 98.7 ms per loop\n" ] } ], @@ -1164,7 +1161,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 96, "metadata": { "collapsed": true }, @@ -1182,7 +1179,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 97, "metadata": { "collapsed": true }, @@ -1200,8 +1197,10 @@ }, { "cell_type": "code", - "execution_count": 57, - "metadata": {}, + "execution_count": 98, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "etlnet = eliminate_a_triple_pair(elnet)" @@ -1209,8 +1208,10 @@ }, { "cell_type": "code", - "execution_count": 58, - "metadata": {}, + "execution_count": 99, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)" @@ -1218,16 +1219,16 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "9839\n", - "9839\n", - "9837\n" + "9813\n", + "9813\n", + "9811\n" ] } ], @@ -1237,16 +1238,16 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "9835" + "9809" ] }, - "execution_count": 60, + "execution_count": 101, "metadata": {}, "output_type": "execute_result" } @@ -1257,8 +1258,10 @@ }, { "cell_type": "code", - "execution_count": 61, - "metadata": {}, + "execution_count": 102, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)" @@ -1266,16 +1269,16 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'buxphgtzqykfawvomcjresnldi'" + "'ypetfugkzdsacbvwjohqlnirmx'" ] }, - "execution_count": 62, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } @@ -1286,16 +1289,16 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'buxphgtzqykfawvomcjresnldi'" + "'ypetfugkzdsacbvwjohqlnirmx'" ] }, - "execution_count": 63, + "execution_count": 104, "metadata": {}, "output_type": "execute_result" } @@ -1306,16 +1309,16 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'buxphgtzqykfawvomcjresnldi'" + "'ypetfugkzdsacbvwjohqlnirmx'" ] }, - "execution_count": 64, + "execution_count": 105, "metadata": {}, "output_type": "execute_result" } @@ -1326,16 +1329,16 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'buxphgtzqykfawvomcjresnldi'" + "'ypetfugkzdsacbvwjohqlnirmx'" ] }, - "execution_count": 65, + "execution_count": 106, "metadata": {}, "output_type": "execute_result" } @@ -1346,7 +1349,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 107, "metadata": {}, "outputs": [ { @@ -1355,7 +1358,7 @@ "[]" ] }, - "execution_count": 66, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } @@ -1366,16 +1369,16 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(10207, 9837)" + "(10207, 9811)" ] }, - "execution_count": 67, + "execution_count": 108, "metadata": {}, "output_type": "execute_result" } @@ -1386,7 +1389,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 109, "metadata": { "collapsed": true }, @@ -1404,8 +1407,10 @@ }, { "cell_type": "code", - "execution_count": 69, - "metadata": {}, + "execution_count": 110, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "simple_lnet = simplify(plnet)" @@ -1413,7 +1418,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 111, "metadata": {}, "outputs": [ { @@ -1422,7 +1427,7 @@ "True" ] }, - "execution_count": 70, + "execution_count": 111, "metadata": {}, "output_type": "execute_result" } @@ -1433,16 +1438,16 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 112, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'buxphgtzqykfawvomcjresnldi'" + "'ypetfugkzdsacbvwjohqlnirmx'" ] }, - "execution_count": 71, + "execution_count": 112, "metadata": {}, "output_type": "execute_result" } @@ -1453,16 +1458,16 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'buxphgtzqykfawvomcjresnldi'" + "'ypetfugkzdsacbvwjohqlnirmx'" ] }, - "execution_count": 72, + "execution_count": 113, "metadata": {}, "output_type": "execute_result" } @@ -1473,16 +1478,16 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 114, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "9835" + "9809" ] }, - "execution_count": 73, + "execution_count": 114, "metadata": {}, "output_type": "execute_result" } @@ -1493,7 +1498,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 115, "metadata": { "collapsed": true }, @@ -1518,7 +1523,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 116, "metadata": { "collapsed": true }, @@ -1544,7 +1549,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 117, "metadata": {}, "outputs": [ { @@ -1553,7 +1558,7 @@ "[]" ] }, - "execution_count": 76, + "execution_count": 117, "metadata": {}, "output_type": "execute_result" } @@ -1566,7 +1571,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 118, "metadata": { "scrolled": true }, @@ -1577,7 +1582,7 @@ "[]" ] }, - "execution_count": 91, + "execution_count": 118, "metadata": {}, "output_type": "execute_result" } @@ -1593,7 +1598,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 119, "metadata": { "scrolled": true }, @@ -1601,49 +1606,49 @@ { "data": { "text/plain": [ - "[(Link(height=195, left=5, right=10),\n", - " Link(height=197, left=1, right=5),\n", - " Link(height=198, left=5, right=10),\n", - " Link(height=199, left=1, right=5)),\n", - " (Link(height=359, left=6, right=16),\n", - " Link(height=360, left=16, right=20),\n", - " Link(height=361, left=6, right=16),\n", - " Link(height=362, left=16, right=20)),\n", - " (Link(height=409, left=0, right=9),\n", - " Link(height=410, left=9, right=16),\n", - " Link(height=411, left=0, right=9),\n", - " Link(height=412, left=9, right=16)),\n", - " (Link(height=606, left=0, right=7),\n", - " Link(height=607, left=0, right=5),\n", - " Link(height=608, left=0, right=7),\n", - " Link(height=609, left=0, right=5)),\n", - " (Link(height=967, left=7, right=19),\n", - " Link(height=968, left=19, right=23),\n", - " Link(height=969, left=7, right=19),\n", - " Link(height=970, left=19, right=23)),\n", - " (Link(height=973, left=9, right=18),\n", - " Link(height=975, left=9, right=15),\n", - " Link(height=976, left=9, right=18),\n", - " Link(height=977, left=9, right=15)),\n", - " (Link(height=1193, left=1, right=11),\n", - " Link(height=1194, left=1, right=19),\n", - " Link(height=1195, left=1, right=11),\n", - " Link(height=1196, left=1, right=19)),\n", - " (Link(height=1388, left=17, right=21),\n", - " Link(height=1389, left=6, right=17),\n", - " Link(height=1390, left=17, right=21),\n", - " Link(height=1391, left=6, right=17)),\n", - " (Link(height=1700, left=5, right=24),\n", - " Link(height=1701, left=11, right=24),\n", - " Link(height=1702, left=5, right=24),\n", - " Link(height=1703, left=11, right=24)),\n", - " (Link(height=1923, left=12, right=19),\n", - " Link(height=1924, left=19, right=24),\n", - " Link(height=1925, left=12, right=19),\n", - " Link(height=1926, left=19, right=24))]" + "[(Link(height=301, left=7, right=23),\n", + " Link(height=302, left=16, right=23),\n", + " Link(height=303, left=7, right=23),\n", + " Link(height=304, left=16, right=23)),\n", + " (Link(height=362, left=11, right=23),\n", + " Link(height=363, left=3, right=23),\n", + " Link(height=364, left=11, right=23),\n", + " Link(height=365, left=3, right=23)),\n", + " (Link(height=363, left=3, right=23),\n", + " Link(height=364, left=11, right=23),\n", + " Link(height=365, left=3, right=23),\n", + " Link(height=366, left=11, right=23)),\n", + " (Link(height=595, left=12, right=15),\n", + " Link(height=596, left=10, right=15),\n", + " Link(height=597, left=12, right=15),\n", + " Link(height=598, left=10, right=15)),\n", + " (Link(height=796, left=12, right=21),\n", + " Link(height=797, left=4, right=12),\n", + " Link(height=798, left=12, right=21),\n", + " Link(height=799, left=4, right=12)),\n", + " (Link(height=879, left=0, right=18),\n", + " Link(height=880, left=0, right=8),\n", + " Link(height=881, left=0, right=18),\n", + " Link(height=882, left=0, right=8)),\n", + " (Link(height=930, left=3, right=17),\n", + " Link(height=931, left=3, right=21),\n", + " Link(height=932, left=3, right=17),\n", + " Link(height=933, left=3, right=21)),\n", + " (Link(height=1120, left=5, right=19),\n", + " Link(height=1121, left=18, right=19),\n", + " Link(height=1122, left=5, right=19),\n", + " Link(height=1123, left=18, right=19)),\n", + " (Link(height=2040, left=9, right=21),\n", + " Link(height=2041, left=9, right=15),\n", + " Link(height=2042, left=9, right=21),\n", + " Link(height=2043, left=9, right=15)),\n", + " (Link(height=2110, left=13, right=21),\n", + " Link(height=2111, left=13, right=24),\n", + " Link(height=2112, left=13, right=21),\n", + " Link(height=2113, left=13, right=24))]" ] }, - "execution_count": 92, + "execution_count": 119, "metadata": {}, "output_type": "execute_result" } @@ -1659,7 +1664,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 120, "metadata": { "scrolled": true }, @@ -1667,217 +1672,209 @@ { "data": { "text/plain": [ - "[(Link(height=8, left=1, right=5),\n", - " Link(height=9, left=1, right=21),\n", - " Link(height=10, left=1, right=5),\n", - " Link(height=11, left=1, right=21)),\n", - " (Link(height=40, left=16, right=23),\n", - " Link(height=41, left=16, right=19),\n", - " Link(height=42, left=16, right=23),\n", - " Link(height=43, left=16, right=19)),\n", - " (Link(height=62, left=0, right=10),\n", - " Link(height=63, left=10, right=13),\n", - " Link(height=64, left=0, right=10),\n", - " Link(height=65, left=10, right=13)),\n", - " (Link(height=137, left=23, right=24),\n", - " Link(height=139, left=0, right=24),\n", - " Link(height=140, left=23, right=24),\n", - " Link(height=141, left=0, right=24)),\n", - " (Link(height=138, left=10, right=21),\n", - " Link(height=139, left=2, right=10),\n", - " Link(height=140, left=10, right=21),\n", - " Link(height=141, left=2, right=10)),\n", - " (Link(height=139, left=2, right=10),\n", - " Link(height=140, left=10, right=21),\n", - " Link(height=141, left=2, right=10),\n", - " Link(height=142, left=10, right=21)),\n", - " (Link(height=156, left=6, right=11),\n", - " Link(height=157, left=3, right=6),\n", - " Link(height=158, left=6, right=11),\n", - " Link(height=159, left=3, right=6)),\n", - " (Link(height=184, left=2, right=21),\n", - " Link(height=185, left=5, right=21),\n", - " Link(height=186, left=2, right=21),\n", - " Link(height=187, left=5, right=21)),\n", - " (Link(height=274, left=7, right=13),\n", - " Link(height=275, left=7, right=11),\n", - " Link(height=276, left=7, right=13),\n", - " Link(height=277, left=7, right=11)),\n", - " (Link(height=292, left=14, right=15),\n", - " Link(height=293, left=5, right=15),\n", - " Link(height=294, left=14, right=15),\n", - " Link(height=295, left=5, right=15)),\n", - " (Link(height=389, left=1, right=8),\n", - " Link(height=391, left=8, right=15),\n", - " Link(height=392, left=1, right=8),\n", - " Link(height=393, left=8, right=15)),\n", - " (Link(height=422, left=14, right=22),\n", - " Link(height=424, left=14, right=18),\n", - " Link(height=425, left=14, right=22),\n", - " Link(height=426, left=14, right=18)),\n", - " (Link(height=434, left=5, right=19),\n", - " Link(height=435, left=1, right=19),\n", - " Link(height=436, left=5, right=19),\n", - " Link(height=437, left=1, right=19)),\n", - " (Link(height=456, left=0, right=15),\n", - " Link(height=457, left=14, right=15),\n", - " Link(height=458, left=0, right=15),\n", - " Link(height=459, left=14, right=15)),\n", - " (Link(height=550, left=13, right=21),\n", - " Link(height=551, left=6, right=21),\n", - " Link(height=552, left=13, right=21),\n", - " Link(height=553, left=6, right=21)),\n", - " (Link(height=624, left=17, right=23),\n", - " Link(height=625, left=1, right=23),\n", - " Link(height=626, left=17, right=23),\n", - " Link(height=627, left=1, right=23)),\n", - " (Link(height=703, left=8, right=15),\n", - " Link(height=704, left=3, right=15),\n", - " Link(height=705, left=8, right=15),\n", - " Link(height=706, left=3, right=15)),\n", - " (Link(height=794, left=7, right=24),\n", - " Link(height=795, left=8, right=24),\n", - " Link(height=796, left=7, right=24),\n", - " Link(height=797, left=8, right=24)),\n", - " (Link(height=800, left=8, right=13),\n", - " Link(height=801, left=4, right=8),\n", - " Link(height=802, left=8, right=13),\n", - " Link(height=803, left=4, right=8)),\n", - " (Link(height=814, left=16, right=17),\n", - " Link(height=815, left=3, right=16),\n", - " Link(height=816, left=16, right=17),\n", - " Link(height=817, left=3, right=16)),\n", - " (Link(height=905, left=2, right=15),\n", - " Link(height=906, left=13, right=15),\n", - " Link(height=907, left=2, right=15),\n", - " Link(height=908, left=13, right=15)),\n", - " (Link(height=926, left=2, right=15),\n", - " Link(height=927, left=15, right=16),\n", - " Link(height=928, left=2, right=15),\n", - " Link(height=929, left=15, right=16)),\n", - " (Link(height=967, left=2, right=15),\n", - " Link(height=968, left=2, right=14),\n", - " Link(height=969, left=2, right=15),\n", - " Link(height=970, left=2, right=14)),\n", - " (Link(height=982, left=13, right=18),\n", - " Link(height=985, left=18, right=19),\n", - " Link(height=986, left=13, right=18),\n", - " Link(height=987, left=18, right=19)),\n", - " (Link(height=993, left=5, right=16),\n", - " Link(height=994, left=2, right=5),\n", - " Link(height=995, left=5, right=16),\n", - " Link(height=996, left=2, right=5)),\n", - " (Link(height=1058, left=9, right=24),\n", - " Link(height=1062, left=9, right=18),\n", - " Link(height=1063, left=9, right=24),\n", - " Link(height=1064, left=9, right=18)),\n", - " (Link(height=1171, left=11, right=21),\n", - " Link(height=1172, left=11, right=14),\n", - " Link(height=1173, left=11, right=21),\n", - " Link(height=1174, left=11, right=14)),\n", - " (Link(height=1294, left=0, right=11),\n", - " Link(height=1295, left=0, right=14),\n", - " Link(height=1296, left=0, right=11),\n", - " Link(height=1297, left=0, right=14)),\n", - " (Link(height=1341, left=4, right=9),\n", - " Link(height=1343, left=4, right=10),\n", - " Link(height=1344, left=4, right=9),\n", - " Link(height=1345, left=4, right=10)),\n", - " (Link(height=1342, left=12, right=18),\n", - " Link(height=1343, left=12, right=24),\n", - " Link(height=1344, left=12, right=18),\n", - " Link(height=1345, left=12, right=24)),\n", - " (Link(height=1353, left=0, right=17),\n", - " Link(height=1354, left=0, right=23),\n", - " Link(height=1355, left=0, right=17),\n", - " Link(height=1356, left=0, right=23)),\n", - " (Link(height=1367, left=4, right=16),\n", - " Link(height=1368, left=16, right=17),\n", - " Link(height=1369, left=4, right=16),\n", - " Link(height=1370, left=16, right=17)),\n", - " (Link(height=1441, left=11, right=24),\n", - " Link(height=1442, left=18, right=24),\n", - " Link(height=1443, left=11, right=24),\n", - " Link(height=1444, left=18, right=24)),\n", - " (Link(height=1451, left=6, right=20),\n", - " Link(height=1453, left=16, right=20),\n", - " Link(height=1454, left=6, right=20),\n", - " Link(height=1455, left=16, right=20)),\n", - " (Link(height=1474, left=17, right=23),\n", - " Link(height=1475, left=3, right=17),\n", - " Link(height=1476, left=17, right=23),\n", - " Link(height=1477, left=3, right=17)),\n", - " (Link(height=1550, left=8, right=23),\n", - " Link(height=1551, left=7, right=23),\n", - " Link(height=1552, left=8, right=23),\n", - " Link(height=1553, left=7, right=23)),\n", - " (Link(height=1574, left=4, right=14),\n", - " Link(height=1575, left=14, right=23),\n", - " Link(height=1576, left=4, right=14),\n", - " Link(height=1577, left=14, right=23)),\n", - " (Link(height=1580, left=0, right=1),\n", - " Link(height=1581, left=1, right=21),\n", - " Link(height=1582, left=0, right=1),\n", - " Link(height=1583, left=1, right=21)),\n", - " (Link(height=1612, left=15, right=22),\n", - " Link(height=1617, left=7, right=15),\n", - " Link(height=1618, left=15, right=22),\n", - " Link(height=1619, left=7, right=15)),\n", - " (Link(height=1644, left=12, right=18),\n", - " Link(height=1646, left=12, right=20),\n", - " Link(height=1647, left=12, right=18),\n", - " Link(height=1648, left=12, right=20)),\n", - " (Link(height=1716, left=13, right=24),\n", - " Link(height=1719, left=14, right=24),\n", - " Link(height=1720, left=13, right=24),\n", - " Link(height=1721, left=14, right=24)),\n", - " (Link(height=1735, left=3, right=24),\n", - " Link(height=1736, left=3, right=21),\n", - " Link(height=1737, left=3, right=24),\n", - " Link(height=1738, left=3, right=21)),\n", - " (Link(height=1736, left=3, right=21),\n", - " Link(height=1737, left=3, right=24),\n", - " Link(height=1738, left=3, right=21),\n", - " Link(height=1739, left=3, right=24)),\n", - " (Link(height=1776, left=0, right=21),\n", - " Link(height=1777, left=13, right=21),\n", - " Link(height=1778, left=0, right=21),\n", - " Link(height=1779, left=13, right=21)),\n", - " (Link(height=1783, left=7, right=9),\n", - " Link(height=1784, left=7, right=12),\n", - " Link(height=1785, left=7, right=9),\n", - " Link(height=1786, left=7, right=12)),\n", - " (Link(height=1929, left=10, right=24),\n", - " Link(height=1930, left=8, right=24),\n", - " Link(height=1931, left=10, right=24),\n", - " Link(height=1932, left=8, right=24)),\n", - " (Link(height=1935, left=4, right=23),\n", - " Link(height=1936, left=3, right=4),\n", - " Link(height=1937, left=4, right=23),\n", - " Link(height=1938, left=3, right=4)),\n", - " (Link(height=2043, left=4, right=7),\n", - " Link(height=2044, left=7, right=15),\n", - " Link(height=2045, left=4, right=7),\n", - " Link(height=2046, left=7, right=15)),\n", - " (Link(height=2045, left=8, right=19),\n", - " Link(height=2051, left=8, right=15),\n", - " Link(height=2052, left=8, right=19),\n", - " Link(height=2053, left=8, right=15)),\n", - " (Link(height=2172, left=10, right=15),\n", - " Link(height=2173, left=10, right=16),\n", - " Link(height=2174, left=10, right=15),\n", - " Link(height=2175, left=10, right=16)),\n", - " (Link(height=2214, left=22, right=24),\n", - " Link(height=2215, left=7, right=22),\n", - " Link(height=2216, left=22, right=24),\n", - " Link(height=2217, left=7, right=22)),\n", - " (Link(height=2231, left=5, right=6),\n", - " Link(height=2232, left=6, right=14),\n", - " Link(height=2233, left=5, right=6),\n", - " Link(height=2234, left=6, right=14))]" + "[(Link(height=49, left=10, right=20),\n", + " Link(height=50, left=2, right=20),\n", + " Link(height=51, left=10, right=20),\n", + " Link(height=52, left=2, right=20)),\n", + " (Link(height=54, left=2, right=24),\n", + " Link(height=55, left=3, right=24),\n", + " Link(height=56, left=2, right=24),\n", + " Link(height=57, left=3, right=24)),\n", + " (Link(height=62, left=2, right=15),\n", + " Link(height=63, left=0, right=15),\n", + " Link(height=64, left=2, right=15),\n", + " Link(height=65, left=0, right=15)),\n", + " (Link(height=114, left=14, right=18),\n", + " Link(height=115, left=3, right=18),\n", + " Link(height=116, left=14, right=18),\n", + " Link(height=117, left=3, right=18)),\n", + " (Link(height=138, left=13, right=19),\n", + " Link(height=139, left=8, right=19),\n", + " Link(height=140, left=13, right=19),\n", + " Link(height=141, left=8, right=19)),\n", + " (Link(height=160, left=12, right=13),\n", + " Link(height=161, left=4, right=12),\n", + " Link(height=162, left=12, right=13),\n", + " Link(height=163, left=4, right=12)),\n", + " (Link(height=315, left=23, right=24),\n", + " Link(height=320, left=20, right=23),\n", + " Link(height=321, left=23, right=24),\n", + " Link(height=322, left=20, right=23)),\n", + " (Link(height=324, left=3, right=18),\n", + " Link(height=325, left=16, right=18),\n", + " Link(height=326, left=3, right=18),\n", + " Link(height=327, left=16, right=18)),\n", + " (Link(height=342, left=21, right=22),\n", + " Link(height=345, left=1, right=22),\n", + " Link(height=346, left=21, right=22),\n", + " Link(height=347, left=1, right=22)),\n", + " (Link(height=405, left=8, right=19),\n", + " Link(height=406, left=4, right=8),\n", + " Link(height=407, left=8, right=19),\n", + " Link(height=408, left=4, right=8)),\n", + " (Link(height=468, left=11, right=22),\n", + " Link(height=469, left=15, right=22),\n", + " Link(height=470, left=11, right=22),\n", + " Link(height=471, left=15, right=22)),\n", + " (Link(height=549, left=1, right=2),\n", + " Link(height=550, left=1, right=6),\n", + " Link(height=551, left=1, right=2),\n", + " Link(height=552, left=1, right=6)),\n", + " (Link(height=568, left=16, right=21),\n", + " Link(height=569, left=11, right=21),\n", + " Link(height=570, left=16, right=21),\n", + " Link(height=571, left=11, right=21)),\n", + " (Link(height=608, left=17, right=20),\n", + " Link(height=609, left=2, right=17),\n", + " Link(height=610, left=17, right=20),\n", + " Link(height=611, left=2, right=17)),\n", + " (Link(height=613, left=18, right=21),\n", + " Link(height=618, left=18, right=19),\n", + " Link(height=619, left=18, right=21),\n", + " Link(height=620, left=18, right=19)),\n", + " (Link(height=635, left=2, right=4),\n", + " Link(height=636, left=4, right=20),\n", + " Link(height=637, left=2, right=4),\n", + " Link(height=638, left=4, right=20)),\n", + " (Link(height=681, left=7, right=20),\n", + " Link(height=682, left=20, right=22),\n", + " Link(height=683, left=7, right=20),\n", + " Link(height=684, left=20, right=22)),\n", + " (Link(height=750, left=23, right=24),\n", + " Link(height=751, left=18, right=24),\n", + " Link(height=752, left=23, right=24),\n", + " Link(height=753, left=18, right=24)),\n", + " (Link(height=760, left=12, right=18),\n", + " Link(height=761, left=17, right=18),\n", + " Link(height=762, left=12, right=18),\n", + " Link(height=763, left=17, right=18)),\n", + " (Link(height=765, left=0, right=9),\n", + " Link(height=766, left=0, right=14),\n", + " Link(height=767, left=0, right=9),\n", + " Link(height=768, left=0, right=14)),\n", + " (Link(height=805, left=16, right=22),\n", + " Link(height=806, left=0, right=16),\n", + " Link(height=807, left=16, right=22),\n", + " Link(height=808, left=0, right=16)),\n", + " (Link(height=834, left=1, right=6),\n", + " Link(height=835, left=3, right=6),\n", + " Link(height=836, left=1, right=6),\n", + " Link(height=837, left=3, right=6)),\n", + " (Link(height=881, left=2, right=12),\n", + " Link(height=882, left=2, right=23),\n", + " Link(height=883, left=2, right=12),\n", + " Link(height=884, left=2, right=23)),\n", + " (Link(height=904, left=12, right=23),\n", + " Link(height=905, left=12, right=14),\n", + " Link(height=906, left=12, right=23),\n", + " Link(height=907, left=12, right=14)),\n", + " (Link(height=936, left=7, right=17),\n", + " Link(height=937, left=15, right=17),\n", + " Link(height=938, left=7, right=17),\n", + " Link(height=939, left=15, right=17)),\n", + " (Link(height=1010, left=4, right=6),\n", + " Link(height=1011, left=6, right=17),\n", + " Link(height=1012, left=4, right=6),\n", + " Link(height=1013, left=6, right=17)),\n", + " (Link(height=1030, left=1, right=12),\n", + " Link(height=1031, left=1, right=20),\n", + " Link(height=1032, left=1, right=12),\n", + " Link(height=1033, left=1, right=20)),\n", + " (Link(height=1197, left=2, right=9),\n", + " Link(height=1198, left=9, right=22),\n", + " Link(height=1199, left=2, right=9),\n", + " Link(height=1200, left=9, right=22)),\n", + " (Link(height=1222, left=2, right=3),\n", + " Link(height=1223, left=2, right=5),\n", + " Link(height=1224, left=2, right=3),\n", + " Link(height=1225, left=2, right=5)),\n", + " (Link(height=1318, left=12, right=23),\n", + " Link(height=1319, left=4, right=12),\n", + " Link(height=1320, left=12, right=23),\n", + " Link(height=1321, left=4, right=12)),\n", + " (Link(height=1341, left=17, right=22),\n", + " Link(height=1342, left=11, right=17),\n", + " Link(height=1343, left=17, right=22),\n", + " Link(height=1344, left=11, right=17)),\n", + " (Link(height=1396, left=4, right=9),\n", + " Link(height=1397, left=3, right=9),\n", + " Link(height=1398, left=4, right=9),\n", + " Link(height=1399, left=3, right=9)),\n", + " (Link(height=1426, left=18, right=24),\n", + " Link(height=1427, left=17, right=18),\n", + " Link(height=1428, left=18, right=24),\n", + " Link(height=1429, left=17, right=18)),\n", + " (Link(height=1456, left=2, right=15),\n", + " Link(height=1457, left=3, right=15),\n", + " Link(height=1458, left=2, right=15),\n", + " Link(height=1459, left=3, right=15)),\n", + " (Link(height=1505, left=13, right=18),\n", + " Link(height=1506, left=13, right=21),\n", + " Link(height=1507, left=13, right=18),\n", + " Link(height=1508, left=13, right=21)),\n", + " (Link(height=1551, left=10, right=12),\n", + " Link(height=1552, left=4, right=12),\n", + " Link(height=1553, left=10, right=12),\n", + " Link(height=1554, left=4, right=12)),\n", + " (Link(height=1622, left=4, right=11),\n", + " Link(height=1623, left=11, right=16),\n", + " Link(height=1624, left=4, right=11),\n", + " Link(height=1625, left=11, right=16)),\n", + " (Link(height=1653, left=8, right=24),\n", + " Link(height=1654, left=4, right=8),\n", + " Link(height=1655, left=8, right=24),\n", + " Link(height=1656, left=4, right=8)),\n", + " (Link(height=1688, left=0, right=5),\n", + " Link(height=1689, left=0, right=23),\n", + " Link(height=1690, left=0, right=5),\n", + " Link(height=1691, left=0, right=23)),\n", + " (Link(height=1724, left=10, right=23),\n", + " Link(height=1725, left=10, right=11),\n", + " Link(height=1726, left=10, right=23),\n", + " Link(height=1727, left=10, right=11)),\n", + " (Link(height=1863, left=1, right=12),\n", + " Link(height=1864, left=1, right=13),\n", + " Link(height=1865, left=1, right=12),\n", + " Link(height=1866, left=1, right=13)),\n", + " (Link(height=1873, left=10, right=22),\n", + " Link(height=1874, left=10, right=15),\n", + " Link(height=1875, left=10, right=22),\n", + " Link(height=1876, left=10, right=15)),\n", + " (Link(height=1879, left=18, right=20),\n", + " Link(height=1880, left=17, right=20),\n", + " Link(height=1881, left=18, right=20),\n", + " Link(height=1882, left=17, right=20)),\n", + " (Link(height=1916, left=18, right=19),\n", + " Link(height=1917, left=7, right=18),\n", + " Link(height=1918, left=18, right=19),\n", + " Link(height=1919, left=7, right=18)),\n", + " (Link(height=1961, left=11, right=20),\n", + " Link(height=1962, left=7, right=20),\n", + " Link(height=1963, left=11, right=20),\n", + " Link(height=1964, left=7, right=20)),\n", + " (Link(height=1962, left=9, right=18),\n", + " Link(height=1963, left=18, right=19),\n", + " Link(height=1964, left=9, right=18),\n", + " Link(height=1965, left=18, right=19)),\n", + " (Link(height=2031, left=3, right=6),\n", + " Link(height=2032, left=3, right=4),\n", + " Link(height=2033, left=3, right=6),\n", + " Link(height=2034, left=3, right=4)),\n", + " (Link(height=2077, left=2, right=9),\n", + " Link(height=2078, left=2, right=23),\n", + " Link(height=2079, left=2, right=9),\n", + " Link(height=2080, left=2, right=23)),\n", + " (Link(height=2165, left=1, right=8),\n", + " Link(height=2166, left=4, right=8),\n", + " Link(height=2167, left=1, right=8),\n", + " Link(height=2168, left=4, right=8)),\n", + " (Link(height=2185, left=6, right=21),\n", + " Link(height=2186, left=11, right=21),\n", + " Link(height=2187, left=6, right=21),\n", + " Link(height=2188, left=11, right=21))]" ] }, - "execution_count": 93, + "execution_count": 120, "metadata": {}, "output_type": "execute_result" } @@ -1895,7 +1892,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 121, "metadata": {}, "outputs": [ { @@ -1904,7 +1901,7 @@ "True" ] }, - "execution_count": 94, + "execution_count": 121, "metadata": {}, "output_type": "execute_result" } @@ -1915,7 +1912,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 122, "metadata": { "scrolled": true }, @@ -1923,10 +1920,10 @@ { "data": { "text/plain": [ - "9931" + "9909" ] }, - "execution_count": 95, + "execution_count": 122, "metadata": {}, "output_type": "execute_result" } @@ -1938,16 +1935,16 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(9835, 10135, 9931)" + "(9809, 10109, 9909)" ] }, - "execution_count": 96, + "execution_count": 123, "metadata": {}, "output_type": "execute_result" } @@ -1958,7 +1955,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 124, "metadata": {}, "outputs": [ { @@ -1967,7 +1964,7 @@ "True" ] }, - "execution_count": 97, + "execution_count": 124, "metadata": {}, "output_type": "execute_result" } @@ -1978,7 +1975,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 125, "metadata": {}, "outputs": [ { @@ -1987,7 +1984,7 @@ "True" ] }, - "execution_count": 98, + "execution_count": 125, "metadata": {}, "output_type": "execute_result" } @@ -1998,16 +1995,16 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 126, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "2286" + "2285" ] }, - "execution_count": 99, + "execution_count": 126, "metadata": {}, "output_type": "execute_result" } @@ -2018,7 +2015,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 127, "metadata": { "collapsed": true }, @@ -2059,7 +2056,7 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 128, "metadata": { "scrolled": true }, @@ -2162,10 +2159,6 @@ "triple ok\n", "pairs ok\n", "triple ok\n", - "pairs ok\n", - "triple ok\n", - "pairs ok\n", - "triple ok\n", "** done\n" ] } @@ -2176,7 +2169,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 129, "metadata": {}, "outputs": [ { @@ -2185,7 +2178,7 @@ "True" ] }, - "execution_count": 102, + "execution_count": 129, "metadata": {}, "output_type": "execute_result" } @@ -2196,16 +2189,16 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "10135" + "10109" ] }, - "execution_count": 103, + "execution_count": 130, "metadata": {}, "output_type": "execute_result" } @@ -2216,42 +2209,275 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 131, + "metadata": {}, + "outputs": [], + "source": [ + "# open('04-lines.txt', 'w').write(show_net(lnettp, randomise=True, pair_sep='\\n'))" + ] + }, + { + "cell_type": "code", + "execution_count": 114, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "83459" + "139" ] }, - "execution_count": 113, + "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "open('04-lines.txt', 'w').write(show_net(lnettp, randomise=True, pair_sep='\\n'))" + "# open('04-small.txt', 'w').write(show_net(make_net(20), randomise=True, pair_sep='\\n'))" ] }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8 [(2, 4), (0, 4), (2, 4), (0, 4)]\n", + "10 [(1, 2), (1, 2)]\n" + ] + }, + { + "data": { + "text/plain": [ + "[Link(height=0, left=2, right=5),\n", + " Link(height=1, left=1, right=4),\n", + " Link(height=2, left=0, right=3),\n", + " Link(height=3, left=0, right=3),\n", + " Link(height=4, left=0, right=5),\n", + " Link(height=5, left=3, right=5),\n", + " Link(height=6, left=0, right=2),\n", + " Link(height=7, left=3, right=4),\n", + " Link(height=8, left=2, right=4),\n", + " Link(height=9, left=1, right=2),\n", + " Link(height=10, left=0, right=4),\n", + " Link(height=11, left=1, right=2),\n", + " Link(height=12, left=2, right=4),\n", + " Link(height=13, left=1, right=2),\n", + " Link(height=14, left=0, right=4),\n", + " Link(height=15, left=1, right=4)]" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net = make_net(10, lines=6)\n", + "net = add_triple_pair(net, trace=True)\n", + "net = add_pair(net, trace=True)\n", + "net = read_net(show_net(net, randomise=True))\n", + "net" + ] + }, + { + "cell_type": "code", + "execution_count": 147, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "139" + "'(2, 5), (1, 4), (0, 3), (0, 3), (0, 5), (3, 5), (0, 2), (3, 4), (2, 4), (1, 2), (0, 4), (1, 2), (2, 4), (1, 2), (0, 4), (1, 4)'" ] }, - "execution_count": 114, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "show_net(net)" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Link(height=0, left=2, right=5),\n", + " Link(height=1, left=1, right=4),\n", + " Link(height=2, left=0, right=3),\n", + " Link(height=3, left=0, right=3),\n", + " Link(height=4, left=0, right=5),\n", + " Link(height=5, left=3, right=5),\n", + " Link(height=6, left=0, right=2),\n", + " Link(height=7, left=3, right=4),\n", + " Link(height=8, left=2, right=4),\n", + " Link(height=9, left=1, right=2),\n", + " Link(height=10, left=0, right=4),\n", + " Link(height=11, left=1, right=2),\n", + " Link(height=12, left=2, right=4),\n", + " Link(height=13, left=0, right=4),\n", + " Link(height=14, left=1, right=4)]" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net = read_net('(2, 5), (1, 4), (0, 3), (0, 3), (0, 5), (3, 5), (0, 2), (3, 4), (2, 4), (1, 2), (0, 4), (1, 2), (2, 4), (0, 4), (1, 4)')\n", + "net" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Link(height=0, left=0, right=3),\n", + " Link(height=0, left=1, right=4),\n", + " Link(height=0, left=2, right=5),\n", + " Link(height=1, left=0, right=3),\n", + " Link(height=2, left=0, right=5),\n", + " Link(height=3, left=0, right=2),\n", + " Link(height=3, left=3, right=5),\n", + " Link(height=4, left=3, right=4),\n", + " Link(height=5, left=2, right=4),\n", + " Link(height=6, left=0, right=4),\n", + " Link(height=6, left=1, right=2),\n", + " Link(height=7, left=1, right=2),\n", + " Link(height=8, left=2, right=4),\n", + " Link(height=9, left=0, right=4),\n", + " Link(height=10, left=1, right=4)]" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pack(net)" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Link(height=0, left=1, right=4),\n", + " Link(height=0, left=2, right=5),\n", + " Link(height=1, left=0, right=5),\n", + " Link(height=2, left=0, right=2),\n", + " Link(height=2, left=3, right=5),\n", + " Link(height=3, left=3, right=4),\n", + " Link(height=4, left=2, right=4),\n", + " Link(height=5, left=0, right=4),\n", + " Link(height=6, left=2, right=4),\n", + " Link(height=7, left=0, right=4),\n", + " Link(height=8, left=1, right=4)]" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "epnet = eliminate_pairs(net)\n", + "pack(epnet)" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "11\n", + "11\n" + ] + }, + { + "data": { + "text/plain": [ + "[Link(height=0, left=1, right=4),\n", + " Link(height=0, left=2, right=5),\n", + " Link(height=1, left=0, right=5),\n", + " Link(height=2, left=0, right=2),\n", + " Link(height=2, left=3, right=5),\n", + " Link(height=3, left=3, right=4),\n", + " Link(height=4, left=0, right=4),\n", + " Link(height=5, left=2, right=4),\n", + " Link(height=6, left=1, right=4)]" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "eptnet = eliminate_triple_pairs(epnet)\n", + "pack(eptnet)" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "''.join(follow_many(string.ascii_lowercase, net)) == ''.join(follow_many(string.ascii_lowercase, eptnet))" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "104" + ] + }, + "execution_count": 155, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "open('04-small.txt', 'w').write(show_net(make_net(20), randomise=True, pair_sep='\\n'))" + "open('04-small.txt', 'w').write(show_net(net, pair_sep='\\n'))" ] }, { diff --git a/04-08-amidakuji/amidakuji-solution-1.ipynb b/04-08-amidakuji/amidakuji-solution-1.ipynb index d9a9249..7f149b4 100644 --- a/04-08-amidakuji/amidakuji-solution-1.ipynb +++ b/04-08-amidakuji/amidakuji-solution-1.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 27, "metadata": { "collapsed": true }, @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -39,7 +39,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 30, "metadata": { "collapsed": true }, @@ -51,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 31, "metadata": { "collapsed": true }, @@ -67,35 +67,30 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Link(height=0, left=2, right=3),\n", - " Link(height=1, left=2, right=6),\n", - " Link(height=2, left=3, right=7),\n", - " Link(height=3, left=5, right=6),\n", - " Link(height=4, left=0, right=1),\n", - " Link(height=5, left=0, right=1),\n", - " Link(height=6, left=6, right=7),\n", - " Link(height=7, left=2, right=5),\n", - " Link(height=8, left=6, right=9),\n", - " Link(height=9, left=4, right=8),\n", - " Link(height=10, left=0, right=2),\n", - " Link(height=11, left=5, right=7),\n", - " Link(height=12, left=4, right=8),\n", - " Link(height=13, left=1, right=5),\n", - " Link(height=14, left=6, right=8),\n", - " Link(height=15, left=6, right=9),\n", - " Link(height=16, left=2, right=5),\n", - " Link(height=17, left=1, right=8),\n", - " Link(height=18, left=5, right=7),\n", - " Link(height=19, left=2, right=9)]" + "[Link(height=0, left=2, right=5),\n", + " Link(height=1, left=1, right=4),\n", + " Link(height=2, left=0, right=3),\n", + " Link(height=3, left=0, right=3),\n", + " Link(height=4, left=0, right=5),\n", + " Link(height=5, left=3, right=5),\n", + " Link(height=6, left=0, right=2),\n", + " Link(height=7, left=3, right=4),\n", + " Link(height=8, left=2, right=4),\n", + " Link(height=9, left=1, right=2),\n", + " Link(height=10, left=0, right=4),\n", + " Link(height=11, left=1, right=2),\n", + " Link(height=12, left=2, right=4),\n", + " Link(height=13, left=0, right=4),\n", + " Link(height=14, left=1, right=4)]" ] }, - "execution_count": 6, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -107,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -116,7 +111,7 @@ "10135" ] }, - "execution_count": 7, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -128,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 34, "metadata": { "collapsed": true }, @@ -140,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 35, "metadata": { "collapsed": true }, @@ -152,7 +147,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 36, "metadata": { "collapsed": true }, @@ -171,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 37, "metadata": { "collapsed": true }, @@ -190,16 +185,16 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "19" + "14" ] }, - "execution_count": 12, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -210,16 +205,16 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "7" + "10" ] }, - "execution_count": 13, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -230,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -239,7 +234,7 @@ "10134" ] }, - "execution_count": 14, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -250,8 +245,10 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, + "execution_count": 41, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "pnet = pack(net)" @@ -259,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -268,7 +265,7 @@ "2286" ] }, - "execution_count": 16, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -279,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -291,7 +288,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -308,34 +305,34 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'djihegcafb'" + "'acfbed'" ] }, - "execution_count": 19, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "''.join(follow_many('abcdefghij', small_net))" + "''.join(follow_many('abcdef', small_net))" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10000 loops, best of 3: 50.4 µs per loop\n" + "10000 loops, best of 3: 39.5 µs per loop\n" ] } ], @@ -346,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -355,7 +352,7 @@ "'doqzmbishkwunvltpcexyjgfra'" ] }, - "execution_count": 21, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -366,14 +363,14 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 21 ms per loop\n" + "10 loops, best of 3: 19.7 ms per loop\n" ] } ], @@ -382,6 +379,24 @@ "follow_many(string.ascii_lowercase, net)" ] }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100 loops, best of 3: 18.6 ms per loop\n" + ] + } + ], + "source": [ + "%%timeit\n", + "follow_many(string.ascii_lowercase, pnet)" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/04-08-amidakuji/amidakuji-solution-2.ipynb b/04-08-amidakuji/amidakuji-solution-2.ipynb index 8fc722f..3bc37db 100644 --- a/04-08-amidakuji/amidakuji-solution-2.ipynb +++ b/04-08-amidakuji/amidakuji-solution-2.ipynb @@ -73,26 +73,21 @@ { "data": { "text/plain": [ - "[Link(height=0, left=2, right=3),\n", - " Link(height=1, left=2, right=6),\n", - " Link(height=2, left=3, right=7),\n", - " Link(height=3, left=5, right=6),\n", - " Link(height=4, left=0, right=1),\n", - " Link(height=5, left=0, right=1),\n", - " Link(height=6, left=6, right=7),\n", - " Link(height=7, left=2, right=5),\n", - " Link(height=8, left=6, right=9),\n", - " Link(height=9, left=4, right=8),\n", - " Link(height=10, left=0, right=2),\n", - " Link(height=11, left=5, right=7),\n", - " Link(height=12, left=4, right=8),\n", - " Link(height=13, left=1, right=5),\n", - " Link(height=14, left=6, right=8),\n", - " Link(height=15, left=6, right=9),\n", - " Link(height=16, left=2, right=5),\n", - " Link(height=17, left=1, right=8),\n", - " Link(height=18, left=5, right=7),\n", - " Link(height=19, left=2, right=9)]" + "[Link(height=0, left=2, right=5),\n", + " Link(height=1, left=1, right=4),\n", + " Link(height=2, left=0, right=3),\n", + " Link(height=3, left=0, right=3),\n", + " Link(height=4, left=0, right=5),\n", + " Link(height=5, left=3, right=5),\n", + " Link(height=6, left=0, right=2),\n", + " Link(height=7, left=3, right=4),\n", + " Link(height=8, left=2, right=4),\n", + " Link(height=9, left=1, right=2),\n", + " Link(height=10, left=0, right=4),\n", + " Link(height=11, left=1, right=2),\n", + " Link(height=12, left=2, right=4),\n", + " Link(height=13, left=0, right=4),\n", + " Link(height=14, left=1, right=4)]" ] }, "execution_count": 6, @@ -196,7 +191,7 @@ { "data": { "text/plain": [ - "19" + "14" ] }, "execution_count": 12, @@ -216,7 +211,7 @@ { "data": { "text/plain": [ - "7" + "10" ] }, "execution_count": 13, @@ -305,7 +300,7 @@ { "data": { "text/plain": [ - "'djihegcafb'" + "'acfbedghij'" ] }, "execution_count": 18, @@ -326,7 +321,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "10000 loops, best of 3: 50.2 µs per loop\n" + "10000 loops, best of 3: 38.1 µs per loop\n" ] } ], @@ -364,7 +359,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 20.7 ms per loop\n" + "100 loops, best of 3: 19 ms per loop\n" ] } ], @@ -488,7 +483,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 26.4 ms per loop\n" + "10 loops, best of 3: 23.5 ms per loop\n" ] } ], @@ -564,7 +559,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "1 loop, best of 3: 2.37 s per loop\n" + "1 loop, best of 3: 2.35 s per loop\n" ] } ], diff --git a/04-08-amidakuji/small-expanded-trace.svg b/04-08-amidakuji/small-expanded-trace.svg new file mode 100644 index 0000000..3bed4a4 --- /dev/null +++ b/04-08-amidakuji/small-expanded-trace.svg @@ -0,0 +1,555 @@ + +image/svg+xml0 +1 +2 +3 +4 +5 + \ No newline at end of file diff --git a/04-08-amidakuji/small-expanded-trace.svg.png b/04-08-amidakuji/small-expanded-trace.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..732887893bf49552735ddb66401b9d22e8dcaef6 GIT binary patch literal 31000 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
u-hOMhyA%8MB)60 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 J{bhUi{{jCpA|?O; literal 0 HcmV?d00001 diff --git a/04-08-amidakuji/small-expanded.svg b/04-08-amidakuji/small-expanded.svg new file mode 100644 index 0000000..2c4b4be --- /dev/null +++ b/04-08-amidakuji/small-expanded.svg @@ -0,0 +1,520 @@ + +image/svg+xml0 +1 +2 +3 +4 +5 + \ No newline at end of file diff --git a/04-08-amidakuji/small-expanded.svg.png b/04-08-amidakuji/small-expanded.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..b720b6177827cda3233ed98b70f1c9f335a22409 GIT binary patch literal 16576 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 J(mS>h{{s(1vCsej literal 0 HcmV?d00001 diff --git a/04-08-amidakuji/small-packed.svg b/04-08-amidakuji/small-packed.svg new file mode 100644 index 0000000..b5c3808 --- /dev/null +++ b/04-08-amidakuji/small-packed.svg @@ -0,0 +1,522 @@ + +image/svg+xml0 +1 +2 +3 +4 +5 + \ No newline at end of file diff --git a/04-08-amidakuji/small-packed.svg.png b/04-08-amidakuji/small-packed.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..eff606c37cc6d3fdd913c2f6d9fa4303f6be0334 GIT binary patch literal 20900 zcmdSBbx>PTv@e_xT#GvtFJ7d$l;Xu&DDF@QPH>l0Xi~Je(^6X8ihEiDv}kdM6pFhA z4Sean^UeG3oB8J5d*8fFGMSyd&&oRItiASHzxCS({!Cw!jF^cS0059_YpEFm0Ki-T z0OUo8kNt)7O&1RK3)k<7_6tJnE1d8p4BIAxXqo!~0BraEeSohXc)!E`$mp+b=5OTf z>>p(B>jVf23KDVka`$tzhd7CN`+{@!6_@~k`v7eMoi!`VsUxIu?3>!v~C= zf1r~+*ozQBSRimvHYiTi6T9aDliS)7(1>Vy97~)Xs*PO{6bnidad6~qv?$+-SavQpe>t#S2vFh|bbpNThTPSAlFS&G$k_J|R?fZ>7zb z^$AQWN)j;Ztk`jug4l6cDm&BW5p9+8uOD@)h~Rti+92=P&M~(4{uIIWfJ)sne$FU_ zBx*c#fq~ux`6TUx7Y`ts-K(+DVB_bbY;__K zG6aXhr1JM+%eY@C&mk$Bz1;C&%2!3#9B%4^C`I zbKxFCn<28_DqdIUFGN>Fl`TM$G3mTshEsy|?&h@H5(MICJzudyKNK5j?$K9D*5}!m zgpLOrB@M3`!bCM4h4uV3%yq5)?7qjIwKapHDEt1`kIn^2fdpTtI&bNH&cr|TL2V!1 zM2&a}NIssr|AZOEi+U6%rQ%kBr&eb!ap!gs8c($&u0j@IBeDV*!u-PXXlNOp+5D*o%Q=QwVk*YwPQONEHq-x|Rr9OT zP<%J~iS1o{*q~r8JnzTfRWCZKI&+WdJry>W2d5#zXzNHT9;rPv3N(n|_j;2lS9+vp zxA)Y2B8QhGw-0vGFM7C9sRw(U^$K9bp?j$#yF zUu@vs`JS@Dg1&3`L6lDM+og$TKg%t4+m4!FS1pB~e{x3EOFhvAm?;~aL@NqZKEIpA zX-*yW3+C@ud=RFtK@fOrpBzD&iyq=!e_T<}6t-3Kx}S%}pb{*(+m^&5YW%1l;p&BZ zLF_0xd0twtfpHh^O~{XOYM3mY_!F1^4s7r(5jvhV$q+`e9+0v(vr9cPiBvHCef9o} zPwK_c%#Lc_HTUPmL;8CXYIp6e+ouil@FSjs3d|i3;@6~cvA6`BzxjT)^Ro1>NF(M> zo2=1Vzb;UMXt5jUj~7ZhZg{;@_^=xu=s_oADiz*g91HRqJv>{hbmP-=uyr72hUKeW z+t2v#Y{yhj=lEBDZ^Zwc@>E1;#}fCRsr(tnV(8VU+HpO-Q0SNt$uX=9;Yw5?2&AMckoBZ^-U&zNu*7uk!JvYFX5qq#>fsBYt17k zZ2I7@_k=Ca{LYuw+YG9Fp1v-J2M%c%!OdOre2Zj2VC^=sQ2nazNypgC$xwQ7r_**3 zPPuazU;N=@i;iIphPIl&;dZa}DWp=Gb3Jw~TKJAME?IhGhCU;l^VnQq3^F=bz|R{m zzcIHmJ)#XxazQH*&JfMy1}iG&Y#N8sIldFPX@376&4~S{4XU9J>>PCJ;Q~i;^XX;} zj>3C8hg)rewippytHgOOp`f-ZI!BbyR%mutC-2;FNzvC1d%-z*(=NwdkNNCOsKnG5 z5>s7RU1v*GC+qL&$GOHU_fxn&AO83=X)cfAd+2yV@jc}`h3taQP3v zhgV8{E25ucegA7PDWm+-pW92bLl*z{IfFcY zAxzNnK)gnTFMZVpY8K_DQz*Fo4GCzUk3Mm`7B0iC94^4x1X`IkDP;YlFltk|k^7;C zmD&rA5lIXi0V0Rq;d$E0-2cDdOoUu`=awL|reCY3Ac`Q{Jm@#M8k>~9Y9L$xi;T!x zro%V9iMAvPnWZ8a2f7*+Y!AWyh*4T+Epd%~N}o4if8gIRsu~|`17}}5poRhvo8!?| zB=;L2o3y^+(X?GQRY(5uQg;4xYuQ=FtfVqH%+#cAsX=sTWHxfrxDwp)YJFpONS!## z&}5HW+wCPvEBV_)2)DL5gG_Rf5GjkcAsv1KH$MqTGdcAwluNt+2jT;_ll_0wFx~Q2 zoMim|Z-_DKaBHL^Vqp$#wh~%OfK}!zPPvpvIj|fg2oeMc;tWW82!aMCJ8j4_fkH-4 zI@SRv(VEehi0+0vWx#^+udcJ|1Dt&XYMUQFL2||fKcB1uR6$Z1^~QPo(v zpw37EXaWV{G*PM4Yn&S!@sYBWb~UtqyD&+&IIT)^n|Jn9*lEP_DCg z4NzfdWi%hipaRq8oR-G)th&lGpb2OS$e6yZjEac5EjyD2X>JRTLxvWQV6MHf zgW8PLs&@v!l&w#MIn_zI`hJY4QbV)@f(;ucvnH$x%MY!QeEU~{=gkL-TDZNc4b}9< z&u57y`aqLmpB_ba5c`Zc4b3%5iB*-*XA5XDbSR&**#QrwQKpDe1R2)I!toO(I%uJa z(H&5F!{Pfs^)a*;@`tu7G3X&=aB8IYR7g={gI`MI*<2$#M2j(P8yk4FH0(lchJs|pgx{)OM0H_Sy7d*=RA`U528;x!$|La)RKmhytt1I#P_6i||kZ_-ufbmXEG?sd5QtEjvgCaE#7K{Xu zh!4C{PZlns5)JQD(GO zietV1ItpPL?frX|or#o%UzbA;5Kc40Y2R|kf%BD3+;1-Yme6O!&QhbeW%j*qw&(p; zn(8OvPYVWLBbm3;kP{;Glz+As9H`sk2@662m72OKbp$@N9ab4@)kNX=7Y`3TQCgv= zs!-@>d+8^-6Tu8ey-SsE)lC1UM32MrU+&Gl+PrL(@WGQ1ROv9ZpbR$gboU2A*eEN& zl&sA4MV7Dxwq>4dxgb0=H%>{;7its0lBU0#EY1a|*ispoL59gW2gjB#Teh_}iQ!Qs z6@++i`ELQf!n;l94gxWG73H~_#y!jHyUMtP66M&;eOt#N9;M7&4J#*alJ-{&g7qfv zoJ1(XiG!IT4L`?y`t?_22Y3`UfrD>7Rbw z=@qnKS^ejE$DDYIB2PG1I=eslOC_vxtmyfMv!K=10#w7)ueV%6^My- zDKsMpCZMF-GfQhW@aOVz3@RtzeyC-FZ)0$y9@K?hu!vue(Y_$(u+?Rj1+1SPJ(`jQ6HZGu;CDX@_)2X{2CXb(h zzo?IlzX=Qr#k^%$J}f3rl+SCXl1n`;4_MM2e0=C#C|hNIeOc?Tlri@WsdaS*Td(1x za#WV$s-hZbrl>RWY)fIVJPrsA_s~|qRkiYA*9gxHq3_8VNay4wUZf1>+6$T#&CA1| z0~bTlU-l&rndZ9wgaSudTbSo5?UPnCu31(D)*vg+*8-~vkJ@@p&i9YOS%Zei%#YHP z)Nk@ttv(d(yByv>lpPy3pQ6ADYETjznd6+3@4DmeJ*rPG8h`v8U;i2#(taV$#lRXg z=0Y6hllHyrsvn07*v|C&@Xb~6gjOqNOqo*FS*9ABpmbl#I)ubMeMP z9N%l%+mTZw@V{W8n!YjBTsvTbt31x{s)jtfE#|MIrkB zS4r0mignI0ee0#_DPE=8z~iqcdMoi!Zy27L{gquVzU~=M=ju(WH=2H{cCv_X&DOS` zg?yT%uDbug;RXvFJkfo5>5jD`>*ZTLf4j`VMr1^7V1GND;Y9pFzP6Br&0p}{qtEOy zrW{j?TYt}enMM~olPFhst@%V>k!YW5PEsgoZAiao=bmeMHz`MRr<&<;Ei6`2`LnY? z=h?=ji}L*_)j10K>v8ky8h7}lK-efR!pC1~?YC8-EVx~I^m5{1qMo61mqkYNEB@oU zsOSrbukm*b-~8|wJL-9gR)ycJrw80`_JV~M^NO$7b(;KG&pv;FtiYoc~btgLwOV`!hxSiRyG9Bm*pRxj3-@ItVv8>U!a|h)OzRHPnQ09 zhTT2lnrDk3qO&S~ReIj*!6&cMN`mlrXw}sWwZ!u4x$vcz^NapUetx1BaE7Rq9dB`IZ2IoHydp-VjcVbW4DG%c}-Vo7V$3ngGUZsZ}!86h18G2q)yAq!Kj5p+mz9Ao<(r+sVi#U}!&{h<` zA54119zqymvw5N=!T(p9gzdn_!7W`p{EHpydoL20Y|GVmLb2wDlg2u2^Q%bO>HD+E zo4Uz6EK1(tcv3|t`J6+I27ystp~KS;HZqP|bCuQJ&asj$ZUy?kYVB-A)p~K=!Uk$s z@)pNk8X`K1uF{?K#+rm^7L_vpYz$PofOBZ(r+e9NJ|>f&CgSpaonCk%yHU1A)(EU& zSv0sad>IzEzkv!Buf^9dceK`PF+C2WDN*H{XFXjGl{A7~N6Ff##?Q;jMm7&>z!*pU za=Y&0lrO5E%Kd(_qUZdq;&DhXUGhK$6)kX?)(<{?As>imR?WyvIzbfDPT-=nS;IWSwM4kj<6JAUldITObhUBlUr290 z>zy78Usmt3CZjX<{wj1*<^w;AH`FU#@@UJr?V2;sQ4l@sgTq+}^s+Xpm%`h`7ln(j z(Kvk;T5)F&y33FYCbBkQQPC~%PbZy~h%dJ%sb{Vcz}NDulln-7pq=qq#60J`^(sYZ zpf&+hS47dyxKZVoUw-*?AaGJ=nCE2r*OSrZ%EkiTlI8LTQs~bW!w-$15+p3jljw!y z$b{T{)dlx3zO_Z$4*7Wlqe?F@eWpj7%MDatXzTH6(>qus3bQMI+`-W{6E4Q z3xc9-1kQ+#^U7ONg9<(hc;Cl_WE%w4adyQ!m`XJnE&V*ntrHdEb!K6ZJSfWbJByNy zf)RJbVP#0IQq&W#ot_nV%okt#8D)|2gS8ibHQrHmOyl<$)+@jEF0UN_aAM@z5&1mA z@^OgXv(m4rZeaOuMFn4;x_|KMFTFzFdp+;&-_DQ39poQb-b!KJ-9!?&H7aUF*$zj& zZuch7cxZM~`6ctBzH`X_xaV`W`D?SinoS?_Z4`rgcyqj5(Hxu8p~lE`L`?n0c1`((OYM-W3*>i?rj9M_3M4QB)0{TPc!kSQDfIBB8{u^MY2(K@-k>a7&K8m z@o1JjVYL4RsvIxz?xAZNfZ})|LP9&}5~=)6TAX3#M{UYMMI` zq7u@v_y8V{NGz9!t$!=j6UZ136O;*b!>_$^mfkop@?`T1aFAUHOgPdTJEybyu#(5O z4ie>9KhzoZJY#9KeN#2<`Q)5EpB+bP!1{y#Pguf_F?H!24w<)s>$3`=V2xse zxo9)q`kzn{F8rbRC{V7(5p!Ksao62_n89GmdixU2WK!exTSsqSfo?(GEoD)lv>}K7k>}12yvOR~OX~jlKwH(UB_9U$=KSw0=)3 zYXG=K;8OFE*S6?prc;N){w(8P1h#YzrO8jVp zf1$yjEkjNY$|7iyiW%mtseW8ylpFJK-VB;ExfmDc$mcm{GjKwF*N-p6PPXun^*iTu z3wQBq<66qLd;Y8Bh0+#n?rk2rLf#OP(Sb7CX@#tx*+>jb0_N(Rz!S<9;GhJdsloFR zt*{)2=iE%+GpZ1p?Df0TwX$wF0jh2@8|yV-MD0uqGxR9ku~1~!OPR2QL5{h+W%X-4 zE^S;P-X)1}~B@M|4#e)58as$3s>mar2S}$F`Ru@~n(?-kE_>Ex# zC5;;e9o;`7WbXy01DoGmya)|p9+|CcybIe}7L#ARVDcGG&s=Z&SWIOUX{GHycp+Cq zkCE^@7liYRx9;IbiuiD0c>JTPokKW(S98&MSauC<*giSUzoHox)MGL;7UlH^jap3% z*Dnj=*g6DzC)jGWtFY>lhVM?qAcK>PV9sqju%#GwZv1bJ*S)iFbG7JU-d8o|^eCEJ zl?By>e3yis-ZCVjkr~cA5Xfg@{rJsb9n5Qf46*Z8dWQgRkj-B1sXonMp4cpV%Yj-| zySuW#eA67g86O}n#y(ZPb!&8|(NI~dv&mAp`a>A$G1)}*`SgI#*(6gnPCC@z%3K1z zyy}Z2{VOI%|RT6;HfrJLp3dIktc6fkTy(;r>m0eq^=_Ba#=-Q3*rOi{)d;6zk5jraYfsaP{SMRmv zOk``GGWMsZUfAcA@hZWG+ zH~2R0s3Inq6XB(0RweoDiU+bS!rl9PS1WFQrZo23*NOZt>QU!ATh3s8J`;hxz`r5Y zZErX24#(&2im9pfy!1)$EvC98TPAJ}=N>D~up%*E?x=?HOs5;cI0ZWXab)o6U;4-w zPo0F8AriHag<2Wa=n2CvJpIL4WKnt>)uL`t@%8od9jaBqC5;7`QeyL+pOl!`-)`&l z<(+j(Q;G~q$807&J`J9m}qc0mzRoOn*e&vFuKS^gD8Uy!l zP4A`QeA%Ck@e_|#r3kpU2DG)c?xV@*3wD&9-a-&7>*-c|tC`JKavRCyXomqEq*at=!6 ziIiN3WxY8ffnqA1uS%~+*CM^So@_ceunelJc^3utQIs}w!OZLYgj*o;VmaM#Bu1&) zxk!ZcDQZITiLTZqS)tChJKU?ZJRMTe;6A@kwj2f{{5Sx=W)pBGTUi<%7Dmr2s9NuH zKUv>EPF8Sm@rb)XjhZqq)UJY7*hak6E_SsyPHbt#Qfl>lh7_2a-!T{&`e(&NN{xQk zb-HI-oA*&$e#eUkw$6B*{Gy+v!s{=Xvz{-+_1vKwqKEbQ)ugVnfLvy z9qzj-qj8wM#URp@4}vK5Y?>Z2iAV#bzr8f51-Ybpw7|sZ^_rOGM{L=?!(-1XmqckW2#vd_+3ds#Z5xIp;iGB zVlIkrzEXXEp|;wbM*vZh(dKyw!5?vKAanSNqrFYESjEAmZOHLISO)p8t-a8Y3c9uQXKe&#e3ti%C(qTCUh7Q5%#C^=Lf;uQBRd165q1woMrqr)g5 zj-JaV>?~glACctdVM!Z703(vr2092SM5IP#`caBxRxyws$X;wV@MCbUlOAZmUu$D% zl!7;`geZuflzVWpg}A)oyI%Ed*|Jfa&MGd}gVMS*b?xnH8Gp-$AP7;cmxQU3>AE`$NpoT%S|`oiRu zZ&4$504SP|Pv|Z{jXI}je;3aqr>1=oy1^}E;8t2Y>wzmH<8#TSCYn9ME7HX7F}8A4 z300RB7}Jz;Ke{kMEU?gSsT7EO8hj1yN_|!(`KcE%OJ~;f#!;cV(Y1oBtm-lQ)yqj* zhKC~rCcypjR!%1Jcs;i^V-pf>W3%^!to*UPh}!A*lHpTjtvF0<@zB)=FI_KW{8eTp z@rPB@CZ8A@vsL|PkDsYiL(+>h`SPmh7)?ji&8Ke`T4g^t9f$?7LcB(!2)y_(dPtIJ zZ$6Pab_I%Hy_CK#QmYUD>V9CmF5bi_vSvvm>(HS;MR)TG1s6FP-&{y@)e#xdBYaA| zZO{{{j9H5GPa&w>1k<$D_}>bUNQxV|e+ST@nBfBo;yxjUMyth*viQxy_Lp4_GTjsDu@CJYG0B>Ne$Is71{hjyQ`5ciBVEv5jm!$3QGdZ$4G8xpImA`L@kUd!k`7du&M@|CGY z+897EFptc!nIf1HVll>~jrYjX;i?$#=pQX6F2}f8H9ml)eK1+t9yKH%^TOwt>6;vP`GTjLod$ z*J?L<3Cl#laTS#VDCsVgT^3LlnpzaI;&E$d|HMN^VD1=!A_P*^MRLhSDh-*M=@3oTg=QG2zo}Au%;O76*6E~2- zkMJ%pjpcTYwgxOrU&Om2v~|S=>UE}p6sga=y3AP3s(-Cc11OySsTI#a@i5E1mMFO0 z9O=)Q(!$oPY+!uVD}ac>o)px_I~C-`@9=GXVigi8I}3{97Kt+SG#w4E%(I8w9~v3; z`d606CggsNnph@}c^x(vKv!YQPwuwZ1lvA0dk1&S8G+G#c-Vn0ifFpafAM`#bKgEB zx#*Y$Um?Awoy&zG%E*)=*AIR#_0iQ+t`=$9ir5Zsn4e6)CWu-zVt&-I|bG1oRE@Y-5sX zng7At_5*tZ`2T0P2miHG_J2tm&sLDao1vaz4OY+JcF|H~pCJi0o}}HP=0e0mGgg+r z_BT);F$tb|`-!4_?R>uPSt7=qOiCzNwXh~&i8TR6dC6P1@oR57=&@)bw3-Y2Pd&lZ87hw%XYLS!uvLLSy6 zp>4sYpq#a8-?dg*uqjT?dbRI}I3#u!0I#OVDBGOkW#N%B^mKA;0!1wk}!Ppp}VE6aRktxV> zqeLswj667EMZ6evM-cwNr=`O|*scKSq|X(amY?3d5c$nGw(lG;HT3)gTP@8|Q0f>B zY7sHd)Fq3m{VxmmH8#*-B;jZl6O*Qn)0_k@#?-zl! zgQfO=?2I|6ZpAUo=)LjO2YOYOa2g6U8Cye>FPcgt&zF1ebUAuaT9|DId})aOzk&2# zoX)tH1+G}eg;-I+-sJ#kknLRt=)mRpf&=-cxZAtB!u)MPXl5%!;vV+t25jMt!_0e(x`y>R@S!4q7{(IBJIK6)<;D@oosZ|HXEBJ1 z3T2hZ0#1yqCC`q*@334~JMGf-u?lZLSMm8l3xp~W1saXZ_i-6}A1vN7kfv`3NR>#C zN?H&#=lE~zCbdr0J9wMWJ~Oxw>`+cF$jdFv*$U?PeHdsKb<8dEYC(HtTX_ z*nOJq7s%V~H=Hd7;YE9l>C%LW;CYXRR}6siMo-{-f=nRA4|xhy$x@~JIxal?VV8djZC9lE+RcP z;6A&Q-=WB5=TU=Cn)cM^!T9>_b+E1>S(>oCh=R?%sWdVeIUu86W=3R@%>}?H(^Cn= zhAn(p-W8j%aScHws2xux5lbUDC=;0J#%53^cs2w#Z~v2w<({S`O*Q^m)WF|0tslZy z8#!i(kfNRbV!QA(uGpN=!_voEvUwjEskPudi*=J<{jFKGlZpS&(YF4Vv-{slk}#eo zv3<&f?L?XRpRfzRGqwR}2bn3UTF1P{a<7WhqD4WP^)mp<`+%D&5SaJcQT~Gp@rX;fVibHf&Iq0$8vG%;yz!b}nGS!Wi)#Mt!7U7gM(?WQS~Vs&lO zeU0Doa zPRvZu==f9r@7P^B;j?!IKv4s$^>7pqA_6|JM=N?C-|cHXq0A$nEY)u8)#%nnr1>kk zZm4w<<$kDXxA7A@ltb|o4JZJcmFz=Qdw3s}DhuI~>zOU7BEVGX)3J0o1bjjVl&Dpr z0cJU@KFazWboe_{4yYl-9#Q{xKo_tx^J8ug!ZJFCI`vWgKPDavZthag2|eY2enIY6 zxrje@D0*v!D6vB^2Uo&??^q=U!ck8C=u!;OLBH{H@>I#WFaXW_#L+%yB#&g5AY3ls zOUwuCg)exExQ2p388kCdY=^>y-QQ~hx2#FAaWl?^CKR&)QU>Hd6&k3-#r|g$1|-wk zqohe$Zq0^3iKzZg5QK_0&1|?MuT;GeY_8gjGGlh~6u~vyPfxS_;Ipi$ng8va$p50r z_5Vfd{A^Q8Q)3+)u|%MttcrCl8qwg!nTGuqsq)lp-{Jc$kDhSeSSu_p6D-yY6 z+Q(|O;8pQ&ZTBi^#liF=o_lrS&>343m8$wdl})VSkxor6Yk`7?(hloOsR;y1NzH?i zhZYW!n3vAf9LjN#&7i3a4^nq{!FwGZ*!*oMNY;A8Fy z%;4LY8k&#pd}rzlvR-QY74&o2f@Z~ONEp476>&RNu!45HB#e#M2E1qmv?bXkQphgS zP#r`(PZI&=s|#JvSFuy?pcc~WHJH>)fg`w))8G9@?x*K=iaEWFNy7@m&<9H$YM}OU zuJ6(||1`3r=?s0&aYXUaAI*ZTo(e6YpRjCZ#dSF0@^J-mJ3%mijd4%F7QG3Gzp0OPs$_@pz z^NHPCMx2zDIvZpXhtmYZrZ&ntt??Ba-uI(nl-LkvKLt+Fv)4H_jB8T*v9qJ39ue~BNOSR5&UXh?xZM|h ziY4$@Ab9i=D?^BL__8LG_$Fb0c-CPh-UMG?a0HL7=wy2K5h8TfeKG7QQEoBN&w|G4 zbS)v7o#M(OvIl%0^SbH6)w!`urCH;p!YQ=l(6vqwQYihnD>g-VoFvpvwEX zi~Kx+Jm%LGQVKb#U3PLd{V%UDihhgDE5I9-kp@_0B|cE1*o(p{Blx|~!t{?3vd!wy zJueDCo!rfztM6Gwing)P#kyPE%RJpHKlBPV?mfu*cT|V=wOkm>%mZxrYnhCz-(h*` zk5YvTHgk@WY#k!k(67j%t+9^94AoB6zlS#t%}9H;KM!3_e^zxh{|P>jqhCLFW4q$} z?x`XqUsJY2%;tw3{_uc~K#*d)%4`)qjs#p}i^)p|=nWj^*w-vZ3#_P~zM|@9BRd;dhBCpAVl0AU?P!1qZ*PENExIF5M`4NjsZbbdGH0TnMf!xA^T|Pe&ftbqplxWMk`__m6&U_{uWoOw_#Y5 z?QJgJCVmi03r}jHyI`b#r#H)1iOK|hW|Ij5%PoN!gy+SCTWtrOww?&t5xHLdAw{;>{@Rro6INs;6FzcI>EgB<)aGY2>d&JVXoa z^rz}c(1z*Xo$YfX3j@{Vom&-IQ`v+2a|Hwef~&chiZ|lMd0-q{kQXQtXIJB(V*bq3 zL*HOMtcV>?X*Q6g#w)#`OyT+iI(I?M|A_VFbuv14QTwbQv|K9Zw!qbn6%~O@X63h` z2LqLLUzn^mnrbUYDQhV;3|;w4>-e|Le>pv$kT%kiHyw9BG3lb>Lf(K&hs{mhA*8U` zQ!uJRQ!*t_ul4fmR-F_#W-}zryU>@OS|XbCh9L1XqKDptC zL+eUeV^iIi&tqR%dL{zp0R%J)cNSOI87+#7deBHtF@y1kA-tm+%UiP7vCtKkiQo$-Vep8xSiO-Z`);#J%M4&e|0!K`T?J{wKxr4ljT4*_0@;(t$lH zEzhKxz(cDdYjn6JTk~{=d1~Oa!6oXb^(_LtnV0jk!%nJ$Rz?EewYIvsuiEo+z60rQ zw}}c)z#`|cc4!46|3ZGMmD34 zx5P8`-Hv31V;};Dr1eOo**j+f_rUHjG6y@GQQOlqHPfGwXzs$&irJCb17$}y=HIR0 zQEd8E^=^na3gtoCPJ1B+35#6~s#|RlwD66!vj_7ZYNPJGKmTpPCX-26z)nehiD`=?ehTs+u2uUf)!->#XnACq zl@O&YCO!8{?WfGiaZ;(n`ubahCXBMTZ*&PU@&(@bLwY*@PH#p0rWP5Hir<4q3Z%{7 zb98WaR=VXuc*CP*-(6f!Czbh@Mvp^0F#sYX%ij5TEk|2Z1%KOYDC!f<6$ zMw2eR*H_Em8Fxqxbs*efl--&Vt!f_fCLE#CtbhgGHzVHBT_3#hJ@_*wqlMk)=@5S9 zmE_kRMAyS9ub7;Gaz9il{x>2k4qvj~-Pv>8KLo+j7PIBi0MGl{Rc{GOD z>_L>a#b@^4+)2uz@oiyf3YCb+1~Akqb`RR0=qr215b_bjUen7 z&z<_4-()k?UNb_f;WM)(jg@*<4HI`=O0KqvPAz$()5l$~@*8=9$`3J5m2veKpA@#O zWg*!wnPIYta$B<|NJ)+5XEt+(m@w$wy`2jy9bH|EyQ|ye?LuE&p8d26RotI)NWIGd z_hs8^^qGLM@k3||tmT);eG9Up{!=5AWNUt=IvV2eY~CHJh$Y}S<@C&4tHkd+O1`-E?$^+=sHpK03 z%m_t-B>Dspb#9h|?0nmye521-Y&dK7-7n@!m3u?UN6#X73g-`>s%1_zJ#t%Seh~!B zkn+f&tRo0->wl`PPWA+=Q$=G$dN3%I^62aBlhA{Bm+QHyLB}|Lx#Dy8FXAOJ2yO9+f5<=LZWF8hW9cgoYCxA45 z7D4=>64o%6QB@SUO^`@!y|FW|r`B{C+V?@eygYj%EJha6+m@Kgylp_XoTCwkUrq2k z9U02Gv)aOpUuH%d3;<9P{d+Dz5VfPJSDB}D;`KQ>O9~I|dXBRn3CuZZ09qg!9>wJI zI_xu1qu$ouhqd?Dd`*=0;!NefPJw934>=WyEm~<%3TDK_=~_Yms-Z3HrOy{ zkip?y8=SW)4AyeW?c|IqY9efY>oVZ&EQ)d~yhaN&c$#!~)%8Yr(^>=>?`xiU%_ZJ@ zEtNBr98Oak*8^(UyPfN*x)3-6f{L-MOs|?f3;3o;hmcr|6JsHfxAWf48r(6PEzY){Hv|$z@>okMg{0X^3ER+Qls;0Q5=8 zqHSRf@!V$|pyE4)-=Xx{+lm;a#8mE5ga3gf{J(2&8Cn0;@@%=)QTGISk%X@L-C- z3ATUbd-eTKk?Yf&2Q`|ne7VzpBD5WiP#@Kt^njf}p}dlIn+BjyK=Kd5Lu0$p!ej0< z1VVeYuE;Zg;a;%&kK@qMKSgA)GiVc*3Sj84)V;MNg!;mhdhKdg{Vymtiq6AE=$^>Q zPep7mQU2Zr{j!OII3uE;7E~G^)rdi?Cuu*_bLUL7HU&)5{${vUDq?fO4m0`JD1TuM z)TWkzNV??mYHedT|D0o~0XR&n`DKFlT^+E^TcZFx$(SyRQq5VN%CKU9EeD3hg#`Kz zTca1$fY}6>j?Bg*c;Ex6sW9kxhb2@wxs&AN6Ji6~uQPlfBYW+$a?H*1GR1=F9ZoED zdXV(t*_*Yq!ikMtAgbien)cH{?5T!3Os&2k2eRp#*@(&&m^~9tOSB^(FD=I2z;?1` z1r=FkK!U+DedP;f2fPt43`24KhtPaz$}ks_=F&9qd9MK!GybAjbP&&m+zPu9wwTIZ zw6u>=#&r?kL2y$zw4q4co@ge1Sv!%o?IR7Er#21PTNuyM6k5X&uiR*F`{3(`Qs7kM zc3RmjU&BQvnL)M!b%u&wBDM91Vv^l!!b58Zvchf{ts&1DuuVN<pWMW}4U64MA;p#xppJD?lbD!wafQ_YD?7>i^HgILm= z2kEIg7K&OaQPl8(1>lS@78Z80z|M}}Awbvcv0i!F=HfTLVT;7rN07uc6Nq_WA2D)O zjOImA@TAJqkg}|yza{tQna@j3F=1T;qWukFU0->Xmhv}ky%taNe@Iycz~fl}&lMIj zT5vZ0S1{|0k$;H=+0?OF?{@M*4(l=AydzsQ}iQE2OQu>kt z_crT4kxYRmkSN~m{GXEzN_)R2-HOMd{jfkb0j8ue|zQ5s}GxOs;_ue1B-+RtI-}8C(TsG$s zY_3yfmnoP!_ale6>^OgB>n_?B`xDH_Pa1m}A`W8Mk(QJ2Yx{*ZygARuMUcTXUU=r| zF%mXs29m5BZ?>j><6?bbM)E9IU`nSOV z{%<$e+5iX1XCFW66Qg;@ufa4BsesVpvsDBg7yRjTR6Polx$%_KGP!Cm?0YB((>l8! zXU;pQ7T+{O|M1%><2C>e7(fV=qHJT6gt2bRH&J zV#^)3%m-{fxZ3@+m0rlyI(+_iw72h@yC}O6S1-?Ei|yhcH#7Xt8jemZ_SbZ%)@QCF z+bcu_Q8HiT@_JRNS)^Jo6Ls*1Unp-?$jXx7zk-KMKDE~Z&H=O0eBVa#?I=6(_;*2- z=3P$30*FsXRzKNGdTcHbdz6WeX4#D2ucawd0isNXO{$kj93Zp8rBPz z+-g=jMU3i;3jDVAazyCN53PvikiG>LDhIEl5) z3r#fW9}PnMLdmDpt60&CeMK0KD{yPC!c@jhS=%Md%X%FGa@2hH9tj0zTyWV&iye}r zjwZN9b$);zciBzfrn0J>f6+K1^qtvZb4@dmKy^Qrz9-6NT)8;3;$|3VS2s(c#2owZ zhU6wE*vV@bkoh~xz=74s{<_&?$l)vZ>-`PXR!vx-JFlMsGr8+Y!jYly;0Fm^^Ikf` zP`3Xc?eJ8UQM~0SiRsWdNN*~c;3DF2qolsgwRGwBDeiR8`P4pt^`;yloQFv|wJsHe zmd~G!vly3nWV~FexUsD(R!}nqH<%8j70a2Hwv~= zt}PC8&$f{@eod^VVrl5LWnF%PiNbGo>Ih%UsPx$mW#CvxIzHEcvH&78P9RBbs2VQT8gKW@m| z`7aH)I8lo@N}7}d9-?sx?|`=eoxn>+$%b|Uw}Ui1JINLm={BynEG!|*utb9}Or1LOeas8Mx#`eiPK;8YE`@uviBx~sin zCXb!iPq(61XC%*F5(;=a?NHm2Ug`>rjJ5Arlx>)G^=*t76bQ_OM@kQHyY&>o6*sTY zN=Lj6Yb0X~II=2%{t)@df6p*T@v_ zY{`UeX>a{1jU2d$?SUsBl$H8W7lCv9&c#d~wM1}exbZRcVWd}e0veX3GBT1wi zb2$vm4u6usnioRa_gIhmH$lgDpx~?65&A>m8(5k58oOfb1 zIxB%Ue7ZvJs6L#UDmooBte+S8tXgU7nbx7%r! z+3_At-5d093@1T*t#T;*%)=@8mc6VrjtQ@?2d0erC%2I0xZgdH({TYM1NdJ&9P!?H1AcXJSsC*OlQhBr2Tsbgjd!qX=wReWG=WC z%)iR=(BnC?`9%`r^hpn{Qnb(xu`TZ%Sg;Uk2qWLyHIx*ac1c4twz?j+v)||BSIIEs zXz5@vf<)lgpg6!Pd~#dw{W#^=bC)7t?seWDY>CM%tP@LChSNDd zE4fzB`-Q)69HQ-6s|HSY8Q5pDXM)XViltB0m9D+#{ePt3{%#YP-&tZ!wf=sRYNjSC O0*I%*Pdz?CzWraQ7p~U; literal 0 HcmV?d00001 diff --git a/04-08-amidakuji/small-unpaired.svg b/04-08-amidakuji/small-unpaired.svg new file mode 100644 index 0000000..2dfe663 --- /dev/null +++ b/04-08-amidakuji/small-unpaired.svg @@ -0,0 +1,405 @@ + +image/svg+xml0 +1 +2 +3 +4 +5 + \ No newline at end of file diff --git a/04-08-amidakuji/small-untriple-1.svg b/04-08-amidakuji/small-untriple-1.svg new file mode 100644 index 0000000..e7554c3 --- /dev/null +++ b/04-08-amidakuji/small-untriple-1.svg @@ -0,0 +1,405 @@ + +image/svg+xml0 +1 +2 +3 +4 +5 + \ No newline at end of file diff --git a/04-08-amidakuji/small-untriple-2.svg b/04-08-amidakuji/small-untriple-2.svg new file mode 100644 index 0000000..97413e4 --- /dev/null +++ b/04-08-amidakuji/small-untriple-2.svg @@ -0,0 +1,373 @@ + +image/svg+xml0 +1 +2 +3 +4 +5 + \ No newline at end of file diff --git a/04-08-amidakuji/untriple-general.svg b/04-08-amidakuji/untriple-general.svg new file mode 100644 index 0000000..c560e76 --- /dev/null +++ b/04-08-amidakuji/untriple-general.svg @@ -0,0 +1,310 @@ + +image/svg+xml \ No newline at end of file -- 2.34.1