From 6e7b6852899587da39b6d2945bec1a8182923ef1 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Wed, 16 Aug 2017 21:25:28 -0700 Subject: [PATCH] Add files via upload --- Ghost.ipynb | 136 ++++++++++++++++++++++++++-------------------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/Ghost.ipynb b/Ghost.ipynb index 2802890..78b96c5 100644 --- a/Ghost.ipynb +++ b/Ghost.ipynb @@ -479,11 +479,10 @@ "def play(vocab, *strategies, verbose=True):\n", " \"Return (winner, final_fragment) for a game of Ghost between these strategies.\"\n", " fragment = ''\n", - " for strategy in cycle(strategies):\n", + " for (p, strategy) in cycle(enumerate(strategies)): # p is the player number\n", " play = strategy(vocab, fragment)\n", " if verbose:\n", - " print('Player {}, given \"{}\", plays \"{}\".'\n", - " .format(strategies.index(strategy), fragment, play))\n", + " print('Player {}, given \"{}\", plays \"{}\".'.format(p, fragment, play))\n", " if play not in vocab.legal_plays(fragment):\n", " return (winner(fragment + '?'), play) # Player loses for making an illegal play\n", " elif play in vocab.words:\n", @@ -503,19 +502,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "Player 0, given \"\", plays \"s\".\n", - "Player 0, given \"s\", plays \"sq\".\n", - "Player 0, given \"sq\", plays \"squ\".\n", - "Player 0, given \"squ\", plays \"squo\".\n", - "Player 0, given \"squo\", plays \"squoo\".\n", - "Player 0, given \"squoo\", plays \"squoos\".\n", - "Player 0, given \"squoos\", plays \"squoosh\".\n" + "Player 0, given \"\", plays \"z\".\n", + "Player 1, given \"z\", plays \"zu\".\n", + "Player 0, given \"zu\", plays \"zuc\".\n", + "Player 1, given \"zuc\", plays \"zucc\".\n", + "Player 0, given \"zucc\", plays \"zucch\".\n", + "Player 1, given \"zucch\", plays \"zucche\".\n", + "Player 0, given \"zucche\", plays \"zucchet\".\n", + "Player 1, given \"zucchet\", plays \"zucchett\".\n", + "Player 0, given \"zucchett\", plays \"zucchetto\".\n" ] }, { "data": { "text/plain": [ - "(1, 'squoosh')" + "(1, 'zucchetto')" ] }, "execution_count": 19, @@ -538,16 +539,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Player 0, given \"\", plays \"h\".\n", - "Player 0, given \"h\", plays \"ha\".\n", - "Player 0, given \"ha\", plays \"haa\".\n", - "Player 0, given \"haa\", plays \"haaf\".\n" + "Player 0, given \"\", plays \"n\".\n", + "Player 1, given \"n\", plays \"no\".\n", + "Player 0, given \"no\", plays \"nog\".\n", + "Player 1, given \"nog\", plays \"nogs\".\n" ] }, { "data": { "text/plain": [ - "(0, 'haaf')" + "(0, 'nogs')" ] }, "execution_count": 20, @@ -572,21 +573,18 @@ "text": [ "Player 0, given \"\", plays? d\n", "Player 0, given \"\", plays \"d\".\n", - "Player 1, given \"d\", plays \"dw\".\n", - "Player 0, given \"dw\", plays? dwa\n", - "Player 0, given \"dw\", plays \"dwa\".\n", - "Player 1, given \"dwa\", plays \"dwar\".\n", - "Player 0, given \"dwar\", plays? dwarv\n", - "Player 0, given \"dwar\", plays \"dwarv\".\n", - "Player 1, given \"dwarv\", plays \"dwarve\".\n", - "Player 0, given \"dwarve\", plays? dwarves\n", - "Player 0, given \"dwarve\", plays \"dwarves\".\n" + "Player 1, given \"d\", plays \"dr\".\n", + "Player 0, given \"dr\", plays? dro\n", + "Player 0, given \"dr\", plays \"dro\".\n", + "Player 1, given \"dro\", plays \"drov\".\n", + "Player 0, given \"drov\", plays? drove\n", + "Player 0, given \"drov\", plays \"drove\".\n" ] }, { "data": { "text/plain": [ - "(1, 'dwarves')" + "(1, 'drove')" ] }, "execution_count": 21, @@ -730,10 +728,10 @@ " 'aas',\n", " 'bwana',\n", " 'cwm',\n", - " 'drave',\n", + " 'drank',\n", " 'dreck',\n", - " 'drink',\n", - " 'droit',\n", + " 'drift',\n", + " 'droll',\n", " 'druid',\n", " 'dry',\n", " 'ewe',\n", @@ -744,11 +742,11 @@ " 'ihram',\n", " 'jnana',\n", " 'kwashiorkor',\n", - " 'llano',\n", + " 'llama',\n", " 'mho',\n", " 'nth',\n", " 'oquassa',\n", - " 'prase',\n", + " 'prawn',\n", " 'prequel',\n", " 'prill',\n", " 'pro',\n", @@ -757,7 +755,7 @@ " 'qua',\n", " 'quell',\n", " 'quiff',\n", - " 'quomodo',\n", + " 'quondam',\n", " 'qursh',\n", " 'rhamnus',\n", " 'rheum',\n", @@ -765,12 +763,12 @@ " 'rho',\n", " 'rhumb',\n", " 'rhyolitic',\n", - " 'squoosh',\n", + " 'sjambok',\n", " 'tchotchke',\n", " 'uhlan',\n", " 'vroom',\n", - " 'wrack',\n", - " 'wrest',\n", + " 'wrath',\n", + " 'wreck',\n", " 'wrick',\n", " 'wrong',\n", " 'wrung',\n", @@ -837,12 +835,12 @@ " 'aquiver',\n", " 'bwana',\n", " 'cnidarian',\n", - " 'drave',\n", + " 'drank',\n", " 'dreck',\n", - " 'drink',\n", - " 'droit',\n", + " 'drift',\n", + " 'droll',\n", " 'druid',\n", - " 'drywall',\n", + " 'dryness',\n", " 'eschatologies',\n", " 'eschatology',\n", " 'escheat',\n", @@ -860,7 +858,7 @@ " 'fjord',\n", " 'gjetost',\n", " 'hyaenic',\n", - " 'hybrid',\n", + " 'hybris',\n", " 'hydatid',\n", " 'hyena',\n", " 'hyenine',\n", @@ -880,7 +878,7 @@ " 'ihram',\n", " 'jnana',\n", " 'kwashiorkor',\n", - " 'llano',\n", + " 'llama',\n", " 'mbira',\n", " 'ngultrum',\n", " 'ngwee',\n", @@ -891,10 +889,10 @@ " 'plonk',\n", " 'pluck',\n", " 'plyer',\n", - " 'quaff',\n", + " 'quack',\n", " 'quell',\n", " 'quiff',\n", - " 'quomodo',\n", + " 'quondam',\n", " 'qursh',\n", " 'rhamnus',\n", " 'rheum',\n", @@ -902,12 +900,12 @@ " 'rhomb',\n", " 'rhumb',\n", " 'rhyolitic',\n", - " 'squoosh',\n", + " 'sjambok',\n", " 'tchotchke',\n", " 'uhlan',\n", " 'vroom',\n", - " 'wrack',\n", - " 'wrest',\n", + " 'wrath',\n", + " 'wreck',\n", " 'wrick',\n", " 'wrong',\n", " 'wrung',\n", @@ -937,7 +935,7 @@ { "data": { "text/plain": [ - "(85, ['hyphen', 'ngultrum', 'hybrid', 'hyte'])" + "(85, ['ngultrum', 'hyphen', 'hyte', 'hybris'])" ] }, "execution_count": 28, @@ -1126,23 +1124,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "Peter's fragment, given ''? q\n", + "0's fragment, given ''? q\n", "Player 0, given \"\", plays \"q\".\n", - "Player 1, given \"q\", plays \"mq\".\n", - "Peter's fragment, given 'mq'? mqu\n", - "Player 0, given \"mq\", plays \"mqu\".\n", - "Player 1, given \"mqu\", plays \"umqu\".\n", - "Peter's fragment, given 'umqu'? umqua\n", - "Player 0, given \"umqu\", plays \"umqua\".\n", - "Player 1, given \"umqua\", plays \"kumqua\".\n", - "Peter's fragment, given 'kumqua'? kumquat\n", - "Player 0, given \"kumqua\", plays \"kumquat\".\n" + "Player 1, given \"q\", plays \"zq\".\n", + "0's fragment, given 'zq'? zqu\n", + "Player 0, given \"zq\", plays \"zqu\".\n", + "Player 1, given \"zqu\", plays \"zqui\".\n", + "0's fragment, given 'zqui'? ezqui\n", + "Player 0, given \"zqui\", plays \"ezqui\".\n", + "Player 1, given \"ezqui\", plays \"mezqui\".\n", + "0's fragment, given 'mezqui'? mezquit\n", + "Player 0, given \"mezqui\", plays \"mezquit\".\n" ] }, { "data": { "text/plain": [ - "(1, 'kumquat')" + "(1, 'mezquit')" ] }, "execution_count": 35, @@ -1151,7 +1149,7 @@ } ], "source": [ - "play(enable1s, ask('Peter'), rational)" + "play(enable1s, ask(0), rational)" ] }, { @@ -1321,20 +1319,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "Player 0, given \"\", plays \"b\".\n", - "Player 0, given \"b\", plays \"sb\".\n", - "Player 0, given \"sb\", plays \"msb\".\n", - "Player 0, given \"msb\", plays \"msbu\".\n", - "Player 0, given \"msbu\", plays \"emsbu\".\n", - "Player 0, given \"emsbu\", plays \"gemsbu\".\n", - "Player 0, given \"gemsbu\", plays \"gemsbuc\".\n", - "Player 0, given \"gemsbuc\", plays \"gemsbuck\".\n" + "Player 0, given \"\", plays \"s\".\n", + "Player 1, given \"s\", plays \"is\".\n", + "Player 0, given \"is\", plays \"isq\".\n", + "Player 1, given \"isq\", plays \"misq\".\n", + "Player 0, given \"misq\", plays \"misqu\".\n", + "Player 1, given \"misqu\", plays \"misquo\".\n", + "Player 0, given \"misquo\", plays \"misquot\".\n", + "Player 1, given \"misquot\", plays \"misquoti\".\n", + "Player 0, given \"misquoti\", plays \"misquotin\".\n", + "Player 1, given \"misquotin\", plays \"misquoting\".\n" ] }, { "data": { "text/plain": [ - "(0, 'gemsbuck')" + "(0, 'misquoting')" ] }, "execution_count": 42,