Add files via upload

This commit is contained in:
Peter Norvig
2017-08-16 21:25:28 -07:00
committed by GitHub
parent f335103e95
commit 6e7b685289

View File

@@ -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,