Add files via upload

This commit is contained in:
Peter Norvig
2017-08-16 00:51:36 -07:00
committed by GitHub
parent 8880ffaa99
commit 9232bdb195

View File

@@ -42,7 +42,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"class Vocabulary:\n", "class Vocabulary:\n",
" \"Holds a set of legal words and set of legal prefix fragments for those words; provides legal_plays(fragment).\"\n", " \"Holds a set of legal words and a set of legal prefix fragments of those words.\"\n",
" def __init__(self, words, minlength=3):\n", " def __init__(self, words, minlength=3):\n",
" self.words = {word for word in words if len(word) >= minlength}\n", " self.words = {word for word in words if len(word) >= minlength}\n",
" self.fragments = {word[:i] for word in self.words for i in range(len(word) + 1)}\n", " self.fragments = {word[:i] for word in self.words for i in range(len(word) + 1)}\n",
@@ -288,7 +288,7 @@
} }
], ],
"source": [ "source": [
"win(Vocabulary(words('cat camel'))) # All words have odd number of letters; first player can never win" "win(Vocabulary(words('cat camel'))) # All words have odd number of letters; first player loses"
] ]
}, },
{ {
@@ -332,7 +332,7 @@
} }
], ],
"source": [ "source": [
"win(Vocabulary(words('cat camel goat gar'))) # Second player can avoid 'goat' with 'ga'." "win(Vocabulary(words('cat camel goat gar'))) # Second player can avoid 'goat' with 'ga'"
] ]
}, },
{ {
@@ -354,7 +354,7 @@
} }
], ],
"source": [ "source": [
"win(Vocabulary(words('cat camel goat gar gannet'))) # First player counters 'ga' with 'gan' to win." "win(Vocabulary(words('cat camel goat gar gannet'))) # First player plays 'gan' after 'ga' to win"
] ]
}, },
{ {
@@ -587,7 +587,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"def outcomes(vocab, fragment, player):\n", "def outcomes(vocab, fragment, player):\n",
" \"The smallest set of outcomes, if player tries to win, and also tries to make the set of outcomes small.\"\n", " \"The smallest set of outcome words, if player tries to win, and make the set small.\"\n",
" if fragment in vocab.words:\n", " if fragment in vocab.words:\n",
" return {fragment}\n", " return {fragment}\n",
" else:\n", " else:\n",
@@ -940,7 +940,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"class SuperVocabulary(Vocabulary):\n", "class SuperVocabulary(Vocabulary):\n",
" \"Holds a set of legal words and set of legal infix fragments of those words; provides legal_plays(fragment).\" \n", " \"Holds a set of legal words and a set of legal infix fragments of those words.\"\n",
" def __init__(self, words, minlength=3):\n", " def __init__(self, words, minlength=3):\n",
" self.words = {word for word in words if len(word) >= minlength}\n", " self.words = {word for word in words if len(word) >= minlength}\n",
" self.fragments = {word[i:j] for word in self.words \n", " self.fragments = {word[i:j] for word in self.words \n",