Skip to content

Instantly share code, notes, and snippets.

@alanzchen
Created April 28, 2017 06:03
Show Gist options
  • Save alanzchen/04672548fcfce68ad5c5c298c95168d1 to your computer and use it in GitHub Desktop.
Save alanzchen/04672548fcfce68ad5c5c298c95168d1 to your computer and use it in GitHub Desktop.
The hangman solution to Strikingly's hangman game.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Hangman Game Strategy for Strikingly\n",
"\n",
"## Alan Chen, Feb 2017\n",
"\n",
"This notebook is a brief explanation of the rationale behind the hangman algorithm.\n",
"\n",
"The average score is around 1000. I will introduce some potential ways for further improvements."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"from nltk.corpus import words as nltkwords\n",
"import re\n",
"import operator\n",
"import requests\n",
"import json\n",
"from word_forms.word_forms import get_word_forms\n",
"from copy import copy\n",
"\n",
"# For testing purpose only, please keep it confidential\n",
"wordnik_api_key = '33dc2f1ea3580f2ea40a00c145706ba4e333cda9d9dfac5d4'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Building Vocabulary\n",
"\n",
"A **right** vocabulary is crucial to the score. In most of the cases, the corpus shipped with NLTK is a good starting point.\n",
"\n",
"But after some tests, I found that Strikingly's testing vocabulary seems to include some variants of words, e.g. plural forms, which aren't included in our original corpus. Thus, I used a library to generate possible variants for each of the words in the original corpus.\n",
"\n",
"The whole corpus is stored in a dictionary called `words`, indexed by the length of words.\n",
"\n",
"### Caching\n",
"\n",
"For each stage of the game, my algorithm calculates the best letter to guess on-the-fly. By caching the instance, I will not need to recalcuate some common situations like \"\\*\\*\\*\\*\\*\" for multiple times.\n",
"\n",
"The cached instances are stored and indexed in the `cache` dictionary."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"alphabet = set(\"qwertyuiopasdfghjklzxcvbnm\")\n",
"\n",
"def get_variants(word):\n",
" nested_variants = get_word_forms(word)\n",
" variants = set([])\n",
" for i in nested_variants:\n",
" variants.update(nested_variants[i])\n",
" return list(variants.difference(set([word])))\n",
"\n",
"temp_dict = []\n",
"for word in nltkwords.words('en'):\n",
" temp_dict += get_variants(word)\n",
"temp_dict = set(temp_dict)\n",
"\n",
"words = {i: [] for i in range(50)}\n",
"\n",
"for word in temp_dict:\n",
" words[len(word)].append(word)\n",
"\n",
"cache = {}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Algorithm\n",
"\n",
"A fair assumption I made is that Strikingly selects random words from its dictionary in an **unweigted** manner.\n",
"\n",
"For each stage, for example \"c\\*\\*ed\", the algorithm:\n",
"\n",
"1. Lists all the words in the dictionary that comply with this pattern. In this case we have:\n",
"```\n",
"['cawed', 'cowed', 'caned', 'caved', 'coned', 'cried', 'cited', 'cared', 'coxed', 'cubed', 'cered', 'coked', 'cured', 'cored', 'creed', 'cased', 'ceded', 'coded', 'coped', 'clued', 'caked', 'cooed', 'caged']\n",
"```\n",
"\n",
"2. Calculates the possibilities that guessing each letter of the alphabet and sort it descendingly. In this case, guessing \"o\" is the optimal choice.\n",
"\n",
"3. Iterates over the most possible letter and make a guess.\n",
"\n",
"4. Starts from step one."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"[('o', 9),\n",
" ('a', 7),\n",
" ('r', 6),\n",
" ('u', 3),\n",
" ('k', 2),\n",
" ('w', 2),\n",
" ('n', 2),\n",
" ('i', 2),\n",
" ('g', 1),\n",
" ('s', 1),\n",
" ('b', 1),\n",
" ('t', 1),\n",
" ('x', 1),\n",
" ('p', 1),\n",
" ('v', 1),\n",
" ('l', 1),\n",
" ('f', 0),\n",
" ('h', 0),\n",
" ('j', 0),\n",
" ('z', 0),\n",
" ('q', 0),\n",
" ('m', 0),\n",
" ('y', 0)]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example = Corpus(\"c**ed\")\n",
"example.calc_prob()\n",
"example.prob"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def known_filter(word, known):\n",
" pattern = re.compile(known.replace(\"*\", \"\\w\"))\n",
" match = pattern.match(word)\n",
" return bool(match)\n",
"\n",
"def wordnik(known):\n",
" length = len(known)\n",
" print(\"No result found for \" + known + \" in our dictionary, asked Wordnik for help:\")\n",
" results = []\n",
" try:\n",
" response = requests.get(\n",
" url=\"http://api.wordnik.com:80/v4/words.json/search/\" + known.replace(\"*\", \"%3F\"),\n",
" params={\n",
" \"caseSensitive\": \"false\",\n",
" \"minCorpusCount\": \"0\",\n",
" \"maxCorpusCount\": \"-1\",\n",
" \"minDictionaryCount\": \"1\",\n",
" \"maxDictionaryCount\": \"-1\",\n",
" \"minLength\": length,\n",
" \"maxLength\": length,\n",
" \"skip\": \"0\",\n",
" \"limit\": \"-1\",\n",
" \"api_key\": wordnik_api_key,\n",
" },\n",
" )\n",
" try:\n",
" results = [word['word'] for word in response.json()['searchResults']]\n",
" print(results)\n",
" except KeyError:\n",
" pass\n",
" except requests.exceptions.RequestException:\n",
" print('HTTP Request failed')\n",
" return results\n",
"\n",
"class Corpus:\n",
" def __init__(self, known, use_wordnik = True):\n",
" self.dict = [word for word in words[len(known)] \n",
" if known_filter(word, known)]\n",
" if len(self.dict) < 2 and use_wordnik:\n",
" words[len(known)] += [word for word in wordnik(known) if known_filter(word, known)]\n",
" self.unknown_pos = [i for i in range(len(known)) if known[i] == \"*\"]\n",
" self.prob = []\n",
" self.corpora = {}\n",
" self.known = known\n",
" \n",
" def calc_prob(self):\n",
" temp_prob = {}\n",
" for letter in alphabet:\n",
" alphabet_prob = 0\n",
" if letter in self.known:\n",
" continue\n",
" for pos in self.unknown_pos:\n",
" guess = self.known\n",
" guess = guess[:pos] + letter + guess[pos+1:]\n",
" temp_corpus = Corpus(guess, False)\n",
" prob = len(temp_corpus.dict)\n",
" cache[guess] = temp_corpus\n",
" if prob > 0:\n",
" self.corpora[guess] = temp_corpus\n",
" alphabet_prob += prob\n",
" temp_prob[letter] = alphabet_prob\n",
" self.prob = sorted(temp_prob.items(), key=operator.itemgetter(1), reverse=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"source": [
"But the corpus form NLTK does not seem to be enough. Thus, I use *Wordnik* as a last resort. When the algorithm comes to a stage where it does not have any matching in its own corpus, it asks the *Wordnik* for matchings and adds it temporarily into the corpus."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Game\n",
"\n",
"It is a wrapper of the alogrithm and the RESTful API, nothing is really interesting here. A few features to be noted:\n",
"\n",
"1. The game will retry for a limited times if it encountered any network failure.\n",
"2. Easy-to-read debug messages.\n",
"3. Non-hardcoded parameters.\n",
"\n",
"The following gameplay has a score of 978."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"headers = {\"Content-Type\": \"application/json; charset=utf-8\",}\n",
"retry_limit = 5\n",
"class Game:\n",
" def __init__(self,\n",
" seed=None,\n",
" player_id='[email protected]',\n",
" url='https://strikingly-hangman.herokuapp.com/game/on'):\n",
" self.player_id = player_id\n",
" self.url = url\n",
" self.session_id, self.properties = self.startGame()\n",
" self.result = None\n",
" \n",
" def startGame(self):\n",
" # POST https://strikingly-hangman.herokuapp.com/game/on\n",
" try:\n",
" response = requests.post(\n",
" url=self.url,\n",
" headers=headers,\n",
" data=json.dumps({\n",
" \"playerId\": self.player_id,\n",
" \"action\": \"startGame\"\n",
" })\n",
" )\n",
" print(\"Game initiated.\")\n",
" return response.json()['sessionId'], response.json()['data']\n",
" except requests.exceptions.RequestException:\n",
" print('HTTP Request failed: startGame')\n",
" \n",
" def play(self):\n",
" for i in range(self.properties[\"numberOfWordsToGuess\"]):\n",
" self.nextWord()\n",
" print(str(i+1) + \" words guessed.\")\n",
" # get the result\n",
" try:\n",
" response = requests.post(\n",
" url=self.url,\n",
" headers=headers,\n",
" data=json.dumps({\n",
" \"sessionId\": self.session_id,\n",
" \"action\": \"getResult\"\n",
" })\n",
" )\n",
" self.result = response.json()\n",
" print(\"Game ended with result:\")\n",
" print(self.result)\n",
" print(\"Please submitResult() to get the final score.\")\n",
" except requests.exceptions.RequestException:\n",
" print('HTTP Request failed: getResult')\n",
" \n",
" def nextWord(self, retries = 0):\n",
" try:\n",
" response = requests.post(\n",
" url=self.url,\n",
" headers=headers,\n",
" data=json.dumps({\n",
" \"sessionId\": self.session_id,\n",
" \"action\": \"nextWord\"\n",
" })\n",
" )\n",
" word_to_guess = response.json()['data']['word']\n",
" if word_to_guess in cache:\n",
" guess_corpus = cache[word_to_guess]\n",
" else:\n",
" guess_corpus = Corpus(word_to_guess)\n",
" cache[word_to_guess] = guess_corpus\n",
" return self.guess_word(guess_corpus) # return True if it is successfully guessed\n",
" except requests.exceptions.RequestException:\n",
" print('HTTP Request failed: nextWord')\n",
" if retries < retry_limit:\n",
" retries += 1\n",
" return self.nextWord(retries)\n",
" else:\n",
" print(\"Maximum retry limit reached.\")\n",
" raise\n",
"\n",
"\n",
" def guess_word(self, corpus, guess_count = 0, guessed = None):\n",
" corpus.calc_prob()\n",
" print(\" \" * guess_count + \"Guessing: \" + corpus.known)\n",
" if sum([i[1] in corpus.prob]) < 3 or guess_count > 6:\n",
" words[len(corpus.known)] += [word for word in wordnik(corpus.known)\n",
" if known_filter(word, corpus.known)]\n",
" if not guessed:\n",
" guessed = []\n",
" for letter in corpus.prob:\n",
" if guess_count == self.properties['numberOfGuessAllowedForEachWord']:\n",
" # used up all the trials\n",
" print(\" \" * guess_count + \"Give up, current candidates:\")\n",
" print(corpus.corpora)\n",
" return False # give up\n",
" if letter[0] in corpus.known or letter[0] in guessed:\n",
" continue\n",
" result = self.guess(letter[0]).lower()\n",
" guessed.append(letter[0])\n",
" print(\" \" * guess_count + letter[0] + \"?\")\n",
" if result == corpus.known:\n",
" # Wrong guess!\n",
" guess_count += 1\n",
" print(\" \" * guess_count + \"Wrong! \" + str(guess_count))\n",
" continue\n",
" else:\n",
" print(\" \" * guess_count + \"Correct!\" + result)\n",
" # Correct!\n",
" if '*' in result: # not finished yet\n",
" if result in cache: # check if the corpus is cached\n",
" corpus = cache[result]\n",
" else:\n",
" corpus = Corpus(result)\n",
" cache[result] = corpus\n",
" return self.guess_word(corpus, guess_count, guessed)\n",
" else:\n",
" print(\"Guessed: \" + result)\n",
" return True\n",
" return False\n",
" \n",
" def guess(self, letter, retries = 0):\n",
" try:\n",
" response = requests.post(\n",
" url=self.url,\n",
" headers=headers,\n",
" data=json.dumps({\n",
" \"guess\": letter.upper(),\n",
" \"sessionId\": self.session_id,\n",
" \"action\": \"guessWord\"\n",
" })\n",
" )\n",
" return response.json()['data']['word']\n",
" except requests.exceptions.RequestException:\n",
" print('HTTP Request failed: guessWord')\n",
" if retries < retry_limit:\n",
" retries += 1\n",
" return self.guess(letter, retries)\n",
" else:\n",
" print(\"Maximum retry limit reached.\")\n",
" raise\n",
" \n",
" def submitResult(self):\n",
" try:\n",
" response = requests.post(\n",
" url=self.url,\n",
" headers=headers,\n",
" data=json.dumps({\n",
" \"sessionId\": self.session_id,\n",
" \"action\": \"submitResult\"\n",
" })\n",
" )\n",
" print('Final Result:')\n",
" self.final_result = response.json()\n",
" print(self.final_result)\n",
" except requests.exceptions.RequestException:\n",
" print('HTTP Request failed')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Game initiated.\n",
"Guessing: ***\n",
"a?\n",
" Wrong! 1\n",
" s?\n",
" Wrong! 2\n",
" e?\n",
" Wrong! 3\n",
" t?\n",
" Wrong! 4\n",
" o?\n",
" Correct!*o*\n",
" Guessing: *o*\n",
" w?\n",
" Correct!*ow\n",
" Guessing: *ow\n",
" m?\n",
" Wrong! 5\n",
" c?\n",
" Wrong! 6\n",
" l?\n",
" Wrong! 7\n",
" v?\n",
" Wrong! 8\n",
" r?\n",
" Wrong! 9\n",
" b?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'sow': <__main__.Corpus object at 0x1265efe10>, 'cow': <__main__.Corpus object at 0x1265efc50>, 'vow': <__main__.Corpus object at 0x1265efba8>, 'low': <__main__.Corpus object at 0x1265efd30>, 'tow': <__main__.Corpus object at 0x1265efac8>, 'row': <__main__.Corpus object at 0x1265ef7b8>, 'mow': <__main__.Corpus object at 0x1265b7550>}\n",
"1 words guessed.\n",
"Guessing: *****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" a?\n",
" Correct!*a***\n",
" Guessing: *a***\n",
" r?\n",
" Correct!*ar**\n",
" Guessing: *ar**\n",
" d?\n",
" Correct!*ard*\n",
" Guessing: *ard*\n",
" y?\n",
" Correct!*ardy\n",
" Guessing: *ardy\n",
" t?\n",
" Correct!tardy\n",
"Guessed: tardy\n",
"2 words guessed.\n",
"Guessing: ****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" a?\n",
" Wrong! 3\n",
" o?\n",
" Correct!*oo*\n",
" Guessing: *oo*\n",
" l?\n",
" Wrong! 4\n",
" t?\n",
" Correct!*oot\n",
" Guessing: *oot\n",
" b?\n",
" Wrong! 5\n",
" f?\n",
" Wrong! 6\n",
" h?\n",
" Wrong! 7\n",
" r?\n",
" Wrong! 8\n",
" m?\n",
" Correct!moot\n",
"Guessed: moot\n",
"3 words guessed.\n",
"Guessing: ****\n",
"s?\n",
"Correct!***s\n",
"Guessing: ***s\n",
"a?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" o?\n",
" Correct!*o*s\n",
" Guessing: *o*s\n",
" b?\n",
" Wrong! 3\n",
" t?\n",
" Wrong! 4\n",
" d?\n",
" Wrong! 5\n",
" w?\n",
" Correct!*ows\n",
" Guessing: *ows\n",
" m?\n",
" Wrong! 6\n",
" l?\n",
" Wrong! 7\n",
" v?\n",
" Wrong! 8\n",
" r?\n",
" Correct!rows\n",
"Guessed: rows\n",
"4 words guessed.\n",
"Guessing: ****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!**e*\n",
" Guessing: **e*\n",
" d?\n",
" Wrong! 2\n",
" r?\n",
" Wrong! 3\n",
" o?\n",
" Wrong! 4\n",
" l?\n",
" Wrong! 5\n",
" w?\n",
" Wrong! 6\n",
" t?\n",
" Wrong! 7\n",
" a?\n",
" Correct!a*e*\n",
" Guessing: a*e*\n",
" p?\n",
" Correct!ape*\n",
" Guessing: ape*\n",
" x?\n",
" Correct!apex\n",
"Guessed: apex\n",
"5 words guessed.\n",
"Guessing: *****\n",
"s?\n",
"Correct!s****\n",
"Guessing: s****\n",
"e?\n",
" Wrong! 1\n",
" a?\n",
" Correct!s*a**\n",
" Guessing: s*a**\n",
" t?\n",
" Wrong! 2\n",
" l?\n",
" Correct!s*all\n",
" Guessing: s*all\n",
" m?\n",
" Wrong! 3\n",
" b?\n",
" Wrong! 4\n",
" f?\n",
" Wrong! 5\n",
" z?\n",
" Wrong! 6\n",
" q?\n",
" Wrong! 7\n",
" d?\n",
" Wrong! 8\n",
" g?\n",
" Wrong! 9\n",
" v?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'small': <__main__.Corpus object at 0x1266468d0>, 'stall': <__main__.Corpus object at 0x126654438>}\n",
"6 words guessed.\n",
"Guessing: *****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" a?\n",
" Correct!**a**\n",
" Guessing: **a**\n",
" r?\n",
" Correct!*ra**\n",
" Guessing: *ra**\n",
" t?\n",
" Wrong! 3\n",
" c?\n",
" Wrong! 4\n",
" g?\n",
" Wrong! 5\n",
" b?\n",
" Correct!bra**\n",
" Guessing: bra**\n",
" n?\n",
" Correct!bra*n\n",
" Guessing: bra*n\n",
" i?\n",
" Wrong! 6\n",
" w?\n",
" Correct!brawn\n",
"Guessed: brawn\n",
"7 words guessed.\n",
"Guessing: ****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" a?\n",
" Correct!a***\n",
" Guessing: a***\n",
" r?\n",
" Correct!ar**\n",
" Guessing: ar**\n",
" t?\n",
" Wrong! 3\n",
" c?\n",
" Wrong! 4\n",
" m?\n",
" Correct!arm*\n",
" Guessing: arm*\n",
" b?\n",
" Wrong! 5\n",
" f?\n",
" Wrong! 6\n",
" l?\n",
" Wrong! 7\n",
" z?\n",
" Wrong! 8\n",
" q?\n",
" Wrong! 9\n",
" d?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'arms': <__main__.Corpus object at 0x12668bdd8>}\n",
"8 words guessed.\n",
"Guessing: *****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!***e*\n",
" Guessing: ***e*\n",
" d?\n",
" Correct!***ed\n",
" Guessing: ***ed\n",
" a?\n",
" Wrong! 2\n",
" o?\n",
" Wrong! 3\n",
" i?\n",
" Wrong! 4\n",
" r?\n",
" Wrong! 5\n",
" t?\n",
" Wrong! 6\n",
" p?\n",
" Wrong! 7\n",
" l?\n",
" Wrong! 8\n",
" w?\n",
" Wrong! 9\n",
" c?\n",
" Correct!c**ed\n",
" Guessing: c**ed\n",
"['cawed', 'cowed', 'caned', 'caved', 'coned', 'cried', 'cited', 'cared', 'coxed', 'cubed', 'cered', 'coked', 'cured', 'cored', 'creed', 'cased', 'ceded', 'coded', 'coped', 'clued', 'caked', 'cooed', 'caged']\n",
" u?\n",
" Correct!cu*ed\n",
" Guessing: cu*ed\n",
"['cubed', 'cured']\n",
" b?\n",
" Correct!cubed\n",
"Guessed: cubed\n",
"9 words guessed.\n",
"Guessing: *****\n",
"s?\n",
"Correct!****s\n",
"Guessing: ****s\n",
"a?\n",
"Correct!**a*s\n",
"Guessing: **a*s\n",
"r?\n",
" Wrong! 1\n",
" l?\n",
" Wrong! 2\n",
" e?\n",
" Correct!*ea*s\n",
" Guessing: *ea*s\n",
" t?\n",
" Correct!*eats\n",
" Guessing: *eats\n",
" m?\n",
" Wrong! 3\n",
" b?\n",
" Wrong! 4\n",
" f?\n",
" Correct!feats\n",
"Guessed: feats\n",
"10 words guessed.\n",
"Guessing: *****\n",
"s?\n",
"Correct!***ss\n",
"Guessing: ***ss\n",
"a?\n",
" Wrong! 1\n",
" r?\n",
" Wrong! 2\n",
" l?\n",
" Correct!l**ss\n",
" Guessing: l**ss\n",
" e?\n",
" Correct!l*ess\n",
" Guessing: l*ess\n",
" u?\n",
" Wrong! 3\n",
" m?\n",
" Wrong! 4\n",
" t?\n",
" Wrong! 5\n",
" b?\n",
" Wrong! 6\n",
" f?\n",
" Wrong! 7\n",
" z?\n",
" Wrong! 8\n",
" q?\n",
" Wrong! 9\n",
" d?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'luess': <__main__.Corpus object at 0x1267004a8>}\n",
"11 words guessed.\n",
"Guessing: ****\n",
"s?\n",
"Correct!***s\n",
"Guessing: ***s\n",
"a?\n",
"Correct!a**s\n",
"Guessing: a**s\n",
"e?\n",
" Wrong! 1\n",
" l?\n",
" Correct!al*s\n",
" Guessing: al*s\n",
" b?\n",
" Wrong! 2\n",
" p?\n",
" Wrong! 3\n",
" m?\n",
" Wrong! 4\n",
" t?\n",
" Correct!alts\n",
"Guessed: alts\n",
"12 words guessed.\n",
"Guessing: ****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" a?\n",
" Wrong! 3\n",
" o?\n",
" Correct!*oo*\n",
" Guessing: *oo*\n",
" l?\n",
" Correct!*ool\n",
" Guessing: *ool\n",
" f?\n",
" Wrong! 4\n",
" c?\n",
" Correct!cool\n",
"Guessed: cool\n",
"13 words guessed.\n",
"Guessing: *****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" a?\n",
" Correct!**a**\n",
" Guessing: **a**\n",
" r?\n",
" Correct!*ra**\n",
" Guessing: *ra**\n",
" t?\n",
" Wrong! 3\n",
" c?\n",
" Correct!cra**\n",
" Guessing: cra**\n",
" z?\n",
" Wrong! 4\n",
" k?\n",
" Wrong! 5\n",
" w?\n",
" Correct!craw*\n",
" Guessing: craw*\n",
" l?\n",
" Correct!crawl\n",
"Guessed: crawl\n",
"14 words guessed.\n",
"Guessing: ****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" a?\n",
" Correct!**a*\n",
" Guessing: **a*\n",
" r?\n",
" Wrong! 3\n",
" l?\n",
" Wrong! 4\n",
" p?\n",
" Wrong! 5\n",
" t?\n",
" Correct!t*a*\n",
" Guessing: t*a*\n",
" m?\n",
" Wrong! 6\n",
" b?\n",
" Wrong! 7\n",
" f?\n",
" Wrong! 8\n",
" c?\n",
" Wrong! 9\n",
" z?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'t*as': <__main__.Corpus object at 0x12670e978>, 'tra*': <__main__.Corpus object at 0x12671c940>, 't*am': <__main__.Corpus object at 0x126717c88>, 't*ap': <__main__.Corpus object at 0x12671c3c8>, 't*ar': <__main__.Corpus object at 0x12671c9e8>, 'tea*': <__main__.Corpus object at 0x126714390>}\n",
"15 words guessed.\n",
"Guessing: *****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!*e***\n",
" Guessing: *e***\n",
" a?\n",
" Wrong! 2\n",
" r?\n",
" Correct!*e**r\n",
" Guessing: *e**r\n",
" d?\n",
" Correct!de**r\n",
" Guessing: de**r\n",
" m?\n",
" Wrong! 3\n",
" t?\n",
" Wrong! 4\n",
" b?\n",
" Wrong! 5\n",
" f?\n",
" Wrong! 6\n",
" o?\n",
" Correct!de*or\n",
" Guessing: de*or\n",
" c?\n",
" Correct!decor\n",
"Guessed: decor\n",
"16 words guessed.\n",
"Guessing: *****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!****e\n",
" Guessing: ****e\n",
" a?\n",
" Wrong! 2\n",
" r?\n",
" Wrong! 3\n",
" l?\n",
" Correct!***le\n",
" Guessing: ***le\n",
" t?\n",
" Wrong! 4\n",
" i?\n",
" Correct!**ile\n",
" Guessing: **ile\n",
" h?\n",
" Wrong! 5\n",
" m?\n",
" Wrong! 6\n",
" g?\n",
" Correct!g*ile\n",
" Guessing: g*ile\n",
" b?\n",
" Wrong! 7\n",
" f?\n",
" Wrong! 8\n",
" z?\n",
" Wrong! 9\n",
" j?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{}\n",
"17 words guessed.\n",
"Guessing: *****\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!*e***\n",
" Guessing: *e***\n",
" a?\n",
" Wrong! 2\n",
" r?\n",
" Wrong! 3\n",
" t?\n",
" Correct!*e*t*\n",
" Guessing: *e*t*\n",
" n?\n",
" Wrong! 4\n",
" h?\n",
" Correct!he*t*\n",
" Guessing: he*t*\n",
" f?\n",
" Correct!heft*\n",
" Guessing: heft*\n",
" y?\n",
" Correct!hefty\n",
"Guessed: hefty\n",
"18 words guessed.\n",
"Guessing: *****\n",
"s?\n",
"Correct!****s\n",
"Guessing: ****s\n",
"a?\n",
"Correct!*a**s\n",
"Guessing: *a**s\n",
"e?\n",
" Wrong! 1\n",
" l?\n",
" Correct!*al*s\n",
" Guessing: *al*s\n",
" t?\n",
" Correct!tal*s\n",
" Guessing: tal*s\n",
" k?\n",
" Correct!talks\n",
"Guessed: talks\n",
"19 words guessed.\n",
"Guessing: *****\n",
"s?\n",
"Correct!***ss\n",
"Guessing: ***ss\n",
"a?\n",
"Correct!a**ss\n",
"Guessing: a**ss\n",
"m?\n",
" Wrong! 1\n",
" b?\n",
" Correct!ab*ss\n",
" Guessing: ab*ss\n",
" y?\n",
" Correct!abyss\n",
"Guessed: abyss\n",
"20 words guessed.\n",
"Guessing: ********\n",
"e?\n",
"Correct!******e*\n",
"Guessing: ******e*\n",
"s?\n",
" Wrong! 1\n",
" r?\n",
" Wrong! 2\n",
" d?\n",
" Correct!**d***ed\n",
" Guessing: **d***ed\n",
" i?\n",
" Wrong! 3\n",
" a?\n",
" Correct!a*d***ed\n",
" Guessing: a*d***ed\n",
" t?\n",
" Correct!a*d**ted\n",
" Guessing: a*d**ted\n",
" c?\n",
" Correct!a*d*cted\n",
" Guessing: a*d*cted\n",
" u?\n",
" Correct!a*ducted\n",
" Guessing: a*ducted\n",
" b?\n",
" Correct!abducted\n",
"Guessed: abducted\n",
"21 words guessed.\n",
"Guessing: ******\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Wrong! 2\n",
" a?\n",
" Correct!a***a*\n",
" Guessing: a***a*\n",
" l?\n",
" Correct!a***al\n",
" Guessing: a***al\n",
" o?\n",
" Correct!a*o*al\n",
" Guessing: a*o*al\n",
" n?\n",
" Correct!a*onal\n",
" Guessing: a*onal\n",
" t?\n",
" Correct!atonal\n",
"Guessed: atonal\n",
"22 words guessed.\n",
"Guessing: ******\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!s*****\n",
" Guessing: s*****\n",
" a?\n",
" Wrong! 2\n",
" r?\n",
" Correct!s*r***\n",
" Guessing: s*r***\n",
" t?\n",
" Wrong! 3\n",
" i?\n",
" Wrong! 4\n",
" p?\n",
" Correct!spr***\n",
" Guessing: spr***\n",
" u?\n",
" Correct!spru**\n",
" Guessing: spru**\n",
" g?\n",
" Correct!spru*g\n",
" Guessing: spru*g\n",
" n?\n",
" Correct!sprung\n",
"Guessed: sprung\n",
"23 words guessed.\n",
"Guessing: *******\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Wrong! 2\n",
" a?\n",
" Correct!*a*****\n",
" Guessing: *a*****\n",
" n?\n",
" Wrong! 3\n",
" r?\n",
" Correct!*ar****\n",
" Guessing: *ar****\n",
" i?\n",
" Wrong! 4\n",
" t?\n",
" Wrong! 5\n",
" g?\n",
" Wrong! 6\n",
" c?\n",
" Correct!*ar**c*\n",
" Guessing: *ar**c*\n",
" m?\n",
" Wrong! 7\n",
" l?\n",
" Correct!*arl*c*\n",
" Guessing: *arl*c*\n",
" b?\n",
" Wrong! 8\n",
" f?\n",
" Wrong! 9\n",
" z?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'*arl*cs': <__main__.Corpus object at 0x1267551d0>, 'garl*c*': <__main__.Corpus object at 0x1267e5a20>, '*arlic*': <__main__.Corpus object at 0x1267557b8>}\n",
"24 words guessed.\n",
"Guessing: ********\n",
"e?\n",
"Correct!*******e\n",
"Guessing: *******e\n",
"a?\n",
"Correct!a****a*e\n",
"Guessing: a****a*e\n",
"t?\n",
"Correct!a****ate\n",
"Guessing: a****ate\n",
"r?\n",
" Wrong! 1\n",
" o?\n",
" Correct!a**o*ate\n",
" Guessing: a**o*ate\n",
" n?\n",
" Wrong! 2\n",
" s?\n",
" Wrong! 3\n",
" l?\n",
" Wrong! 4\n",
" g?\n",
" Wrong! 5\n",
" c?\n",
" Correct!a**ocate\n",
" Guessing: a**ocate\n",
" v?\n",
" Correct!a*vocate\n",
" Guessing: a*vocate\n",
" d?\n",
" Correct!advocate\n",
"Guessed: advocate\n",
"25 words guessed.\n",
"Guessing: *******\n",
"e?\n",
"Correct!**e**e*\n",
"Guessing: **e**e*\n",
"s?\n",
"Correct!**e*se*\n",
"Guessing: **e*se*\n",
"r?\n",
"Correct!*re*se*\n",
"Guessing: *re*se*\n",
"d?\n",
"Correct!*re*sed\n",
"Guessing: *re*sed\n",
"a?\n",
"Correct!*reased\n",
"Guessing: *reased\n",
"c?\n",
"Correct!creased\n",
"Guessed: creased\n",
"26 words guessed.\n",
"Guessing: *******\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!***s***\n",
" Guessing: ***s***\n",
" a?\n",
" Correct!*a*s***\n",
" Guessing: *a*s***\n",
" i?\n",
" Correct!*a*s*i*\n",
" Guessing: *a*s*i*\n",
" c?\n",
" Wrong! 2\n",
" t?\n",
" Wrong! 3\n",
" l?\n",
" Wrong! 4\n",
" w?\n",
" Correct!wa*s*i*\n",
" Guessing: wa*s*i*\n",
" m?\n",
" Wrong! 5\n",
" b?\n",
" Wrong! 6\n",
" f?\n",
" Wrong! 7\n",
" z?\n",
" Wrong! 8\n",
" q?\n",
" Wrong! 9\n",
" d?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'wa*s*il': <__main__.Corpus object at 0x126862240>}\n",
"27 words guessed.\n",
"Guessing: ********\n",
"e?\n",
"Correct!***e**e*\n",
"Guessing: ***e**e*\n",
"s?\n",
" Wrong! 1\n",
" d?\n",
" Correct!***e**ed\n",
" Guessing: ***e**ed\n",
" t?\n",
" Correct!t**e*ted\n",
"No result found for t**e*ted in our dictionary, asked Wordnik for help:\n",
"['talented']\n",
" Guessing: t**e*ted\n",
" a?\n",
" Correct!ta*e*ted\n",
" Guessing: ta*e*ted\n",
" l?\n",
" Correct!tale*ted\n",
" Guessing: tale*ted\n",
" n?\n",
" Correct!talented\n",
"Guessed: talented\n",
"28 words guessed.\n",
"Guessing: ********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!s*******\n",
" Guessing: s*******\n",
" i?\n",
" Wrong! 2\n",
" n?\n",
" Correct!s***n***\n",
" Guessing: s***n***\n",
" r?\n",
" Wrong! 3\n",
" a?\n",
" Wrong! 4\n",
" t?\n",
" Wrong! 5\n",
" g?\n",
" Wrong! 6\n",
" p?\n",
" Correct!sp**n***\n",
" Guessing: sp**n***\n",
" l?\n",
" Correct!sp**n**l\n",
" Guessing: sp**n**l\n",
" m?\n",
" Wrong! 7\n",
" b?\n",
" Wrong! 8\n",
" f?\n",
" Correct!sp**nf*l\n",
" Guessing: sp**nf*l\n",
"[]\n",
" k?\n",
" Wrong! 9\n",
" w?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{}\n",
"29 words guessed.\n",
"Guessing: ******\n",
"e?\n",
"Correct!*****e\n",
"Guessing: *****e\n",
"a?\n",
" Wrong! 1\n",
" l?\n",
" Correct!****le\n",
" Guessing: ****le\n",
" b?\n",
" Wrong! 2\n",
" i?\n",
" Wrong! 3\n",
" d?\n",
" Wrong! 4\n",
" t?\n",
" Wrong! 5\n",
" u?\n",
" Correct!*u**le\n",
" Guessing: *u**le\n",
" m?\n",
" Correct!mu**le\n",
" Guessing: mu**le\n",
" f?\n",
" Wrong! 6\n",
" z?\n",
" Correct!muzzle\n",
"Guessed: muzzle\n",
"30 words guessed.\n",
"Guessing: ********\n",
"e?\n",
"Correct!*e******\n",
"Guessing: *e******\n",
"s?\n",
"Correct!*e*****s\n",
"Guessing: *e*****s\n",
"r?\n",
" Wrong! 1\n",
" n?\n",
" Correct!*e***n*s\n",
" Guessing: *e***n*s\n",
" i?\n",
" Correct!*e**in*s\n",
" Guessing: *e**in*s\n",
" g?\n",
" Correct!*e**ings\n",
" Guessing: *e**ings\n",
" l?\n",
" Wrong! 2\n",
" t?\n",
" Correct!*e*tings\n",
" Guessing: *e*tings\n",
" a?\n",
" Correct!*eatings\n",
" Guessing: *eatings\n",
" b?\n",
" Correct!beatings\n",
"Guessed: beatings\n",
"31 words guessed.\n",
"Guessing: *******\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Wrong! 2\n",
" a?\n",
" Correct!*****a*\n",
" Guessing: *****a*\n",
" i?\n",
" Wrong! 3\n",
" l?\n",
" Correct!l****a*\n",
" Guessing: l****a*\n",
" r?\n",
" Wrong! 4\n",
" n?\n",
" Wrong! 5\n",
" c?\n",
" Correct!l*c**a*\n",
" Guessing: l*c**a*\n",
" h?\n",
" Wrong! 6\n",
" o?\n",
" Correct!loc**a*\n",
" Guessing: loc**a*\n",
" m?\n",
" Wrong! 7\n",
" t?\n",
" Wrong! 8\n",
" b?\n",
" Wrong! 9\n",
" f?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'loch*a*': <__main__.Corpus object at 0x1299e1860>, 'loc**as': <__main__.Corpus object at 0x1299f5518>, 'loc*ia*': <__main__.Corpus object at 0x1299f5b00>}\n",
"32 words guessed.\n",
"Guessing: ********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!*******s\n",
" Guessing: *******s\n",
" a?\n",
" Correct!*a*a*a*s\n",
" Guessing: *a*a*a*s\n",
" r?\n",
" Correct!*ara*a*s\n",
" Guessing: *ara*a*s\n",
" c?\n",
" Correct!cara*a*s\n",
" Guessing: cara*a*s\n",
" b?\n",
" Wrong! 2\n",
" l?\n",
" Wrong! 3\n",
" v?\n",
" Correct!carava*s\n",
" Guessing: carava*s\n",
" n?\n",
" Correct!caravans\n",
"Guessed: caravans\n",
"33 words guessed.\n",
"Guessing: *******\n",
"e?\n",
"Correct!*****e*\n",
"Guessing: *****e*\n",
"s?\n",
"Correct!s****e*\n",
"Guessing: s****e*\n",
"d?\n",
"Correct!s****ed\n",
"Guessing: s****ed\n",
"t?\n",
"Correct!st***ed\n",
"Guessing: st***ed\n",
"a?\n",
" Wrong! 1\n",
" r?\n",
" Wrong! 2\n",
" o?\n",
" Correct!sto**ed\n",
" Guessing: sto**ed\n",
" p?\n",
" Correct!sto*ped\n",
" Guessing: sto*ped\n",
" m?\n",
" Correct!stomped\n",
"Guessed: stomped\n",
"34 words guessed.\n",
"Guessing: ******\n",
"e?\n",
"Correct!*ee**e\n",
"Guessing: *ee**e\n",
"t?\n",
"Correct!teet*e\n",
"No result found for teet*e in our dictionary, asked Wordnik for help:\n",
"['teethe', 'teetee']\n",
"Guessing: teet*e\n",
"h?\n",
"Correct!teethe\n",
"Guessed: teethe\n",
"35 words guessed.\n",
"Guessing: ********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Wrong! 2\n",
" i?\n",
" Correct!**i*****\n",
" Guessing: **i*****\n",
" n?\n",
" Wrong! 3\n",
" r?\n",
" Wrong! 4\n",
" t?\n",
" Correct!**it****\n",
" Guessing: **it****\n",
" h?\n",
" Correct!**ith***\n",
" Guessing: **ith***\n",
" l?\n",
" Correct!**ith**l\n",
" Guessing: **ith**l\n",
" f?\n",
" Correct!f*ithf*l\n",
"No result found for f*ithf*l in our dictionary, asked Wordnik for help:\n",
"['faithful']\n",
" Guessing: f*ithf*l\n",
" a?\n",
" Correct!faithf*l\n",
" Guessing: faithf*l\n",
" u?\n",
" Correct!faithful\n",
"Guessed: faithful\n",
"36 words guessed.\n",
"Guessing: *******\n",
"e?\n",
"Correct!****e**\n",
"Guessing: ****e**\n",
"s?\n",
"Correct!****e*s\n",
"Guessing: ****e*s\n",
"r?\n",
" Wrong! 1\n",
" t?\n",
" Wrong! 2\n",
" a?\n",
" Wrong! 3\n",
" l?\n",
" Wrong! 4\n",
" n?\n",
" Correct!**n*e*s\n",
" Guessing: **n*e*s\n",
" d?\n",
" Wrong! 5\n",
" i?\n",
" Wrong! 6\n",
" g?\n",
" Wrong! 7\n",
" u?\n",
" Wrong! 8\n",
" c?\n",
" Correct!c*n*e*s\n",
" Guessing: c*n*e*s\n",
"['cinders', 'conveys', 'canters', 'cancels', 'confers', 'confess', 'cancers', 'conkers', 'congers', 'centers', 'cunners', 'congees', 'cankers', 'censers']\n",
" o?\n",
" Correct!con*e*s\n",
" Guessing: con*e*s\n",
"['conveys', 'confers', 'confess', 'conkers', 'congers', 'congees']\n",
" f?\n",
" Wrong! 9\n",
" k?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{'conve*s': <__main__.Corpus object at 0x129a8a0b8>, 'confe*s': <__main__.Corpus object at 0x1299c3c50>, 'con*ers': <__main__.Corpus object at 0x129a8a2e8>, 'conke*s': <__main__.Corpus object at 0x1299c34a8>, 'con*eys': <__main__.Corpus object at 0x129a8a3c8>, 'conge*s': <__main__.Corpus object at 0x1299c3ac8>}\n",
"37 words guessed.\n",
"Guessing: ******\n",
"e?\n",
"Correct!*e****\n",
"Guessing: *e****\n",
"s?\n",
" Wrong! 1\n",
" r?\n",
" Correct!*er***\n",
" Guessing: *er***\n",
" i?\n",
" Wrong! 2\n",
" a?\n",
" Wrong! 3\n",
" d?\n",
" Wrong! 4\n",
" m?\n",
" Wrong! 5\n",
" v?\n",
" Wrong! 6\n",
" l?\n",
" Correct!*er*l*\n",
" Guessing: *er*l*\n",
" y?\n",
" Correct!*er*ly\n",
" Guessing: *er*ly\n",
" t?\n",
" Correct!*ertly\n",
" Guessing: *ertly\n",
" p?\n",
" Correct!pertly\n",
"Guessed: pertly\n",
"38 words guessed.\n",
"Guessing: *******\n",
"e?\n",
"Correct!**e****\n",
"Guessing: **e****\n",
"s?\n",
" Wrong! 1\n",
" r?\n",
" Wrong! 2\n",
" a?\n",
" Wrong! 3\n",
" l?\n",
" Wrong! 4\n",
" t?\n",
" Correct!**et***\n",
" Guessing: **et***\n",
" i?\n",
" Correct!*ieti**\n",
" Guessing: *ieti**\n",
" m?\n",
" Wrong! 5\n",
" p?\n",
" Wrong! 6\n",
" d?\n",
" Correct!dieti**\n",
" Guessing: dieti**\n",
" n?\n",
" Correct!dietin*\n",
" Guessing: dietin*\n",
" g?\n",
" Correct!dieting\n",
"Guessed: dieting\n",
"39 words guessed.\n",
"Guessing: *******\n",
"e?\n",
"Correct!e**ee**\n",
"Guessing: e**ee**\n",
"s?\n",
"Correct!es*ee*s\n",
"No result found for es*ee*s in our dictionary, asked Wordnik for help:\n",
"['esteems']\n",
"Guessing: es*ee*s\n",
"m?\n",
"Correct!es*eems\n",
"Guessing: es*eems\n",
"t?\n",
"Correct!esteems\n",
"Guessed: esteems\n",
"40 words guessed.\n",
"Guessing: **********\n",
"e?\n",
"Correct!e*********\n",
"Guessing: e*********\n",
"i?\n",
"Correct!e*****i***\n",
"Guessing: e*****i***\n",
"s?\n",
"Correct!e*****i**s\n",
"Guessing: e*****i**s\n",
"n?\n",
"Correct!e*****i*ns\n",
"Guessing: e*****i*ns\n",
"o?\n",
"Correct!e*****ions\n",
"Guessing: e*****ions\n",
"t?\n",
"Correct!e****tions\n",
"Guessing: e****tions\n",
"a?\n",
"Correct!e***ations\n",
"Guessing: e***ations\n",
"l?\n",
"Correct!e**lations\n",
"Guessing: e**lations\n",
"m?\n",
"Correct!em*lations\n",
"Guessing: em*lations\n",
"u?\n",
"Correct!emulations\n",
"Guessed: emulations\n",
"41 words guessed.\n",
"Guessing: *********\n",
"e?\n",
"Correct!*******e*\n",
"Guessing: *******e*\n",
"s?\n",
"Correct!s******e*\n",
"Guessing: s******e*\n",
"r?\n",
"Correct!s**r*r*e*\n",
"No result found for s**r*r*e* in our dictionary, asked Wordnik for help:\n",
"['stirfried', 'stirfries']\n",
"Guessing: s**r*r*e*\n",
"i?\n",
"Correct!s*ir*rie*\n",
"Guessing: s*ir*rie*\n",
"t?\n",
"Correct!stir*rie*\n",
"Guessing: stir*rie*\n",
"f?\n",
"Correct!stirfrie*\n",
"Guessing: stirfrie*\n",
"d?\n",
"Correct!stirfried\n",
"Guessed: stirfried\n",
"42 words guessed.\n",
"Guessing: **********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Wrong! 2\n",
" i?\n",
" Correct!**i*******\n",
" Guessing: **i*******\n",
" t?\n",
" Correct!t*i*******\n",
" Guessing: t*i*******\n",
" r?\n",
" Correct!tri******r\n",
"No result found for tri******r in our dictionary, asked Wordnik for help:\n",
"['triangular', 'triphammer', 'trinocular']\n",
" Guessing: tri******r\n",
" a?\n",
" Correct!tria****ar\n",
" Guessing: tria****ar\n",
" l?\n",
" Correct!tria***lar\n",
" Guessing: tria***lar\n",
" g?\n",
" Correct!tria*g*lar\n",
" Guessing: tria*g*lar\n",
" u?\n",
" Correct!tria*gular\n",
" Guessing: tria*gular\n",
" n?\n",
" Correct!triangular\n",
"Guessed: triangular\n",
"43 words guessed.\n",
"Guessing: **********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!**s*s*****\n",
" Guessing: **s*s*****\n",
"HTTP Request failed: guessWord\n",
" i?\n",
" Correct!**s*s**i**\n",
" Guessing: **s*s**i**\n",
" m?\n",
" Wrong! 2\n",
" a?\n",
" Wrong! 3\n",
" t?\n",
" Correct!**sts**i*t\n",
"No result found for **sts**i*t in our dictionary, asked Wordnik for help:\n",
"['postscript']\n",
" Guessing: **sts**i*t\n",
" p?\n",
" Correct!p*sts**ipt\n",
"No result found for p*sts**ipt in our dictionary, asked Wordnik for help:\n",
"['postscript']\n",
" Guessing: p*sts**ipt\n",
" o?\n",
" Correct!posts**ipt\n",
" Guessing: posts**ipt\n",
" r?\n",
" Correct!posts*ript\n",
" Guessing: posts*ript\n",
" c?\n",
" Correct!postscript\n",
"Guessed: postscript\n",
"44 words guessed.\n",
"Guessing: **********\n",
"e?\n",
"Correct!e***e***e*\n",
"Guessing: e***e***e*\n",
"s?\n",
" Wrong! 1\n",
" a?\n",
" Correct!e***e*a*e*\n",
" Guessing: e***e*a*e*\n",
" t?\n",
" Correct!e***e*ate*\n",
" Guessing: e***e*ate*\n",
" r?\n",
" Correct!e***erate*\n",
" Guessing: e***erate*\n",
" x?\n",
" Correct!ex**erate*\n",
" Guessing: ex**erate*\n",
" o?\n",
" Correct!exo*erate*\n",
" Guessing: exo*erate*\n",
" n?\n",
" Correct!exonerate*\n",
" Guessing: exonerate*\n",
" d?\n",
" Correct!exonerated\n",
"Guessed: exonerated\n",
"45 words guessed.\n",
"Guessing: **********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!s*********\n",
" Guessing: s*********\n",
" i?\n",
" Correct!s*****i***\n",
" Guessing: s*****i***\n",
" n?\n",
" Wrong! 2\n",
" l?\n",
" Correct!s****li**l\n",
"No result found for s****li**l in our dictionary, asked Wordnik for help:\n",
"['symbolical']\n",
" Guessing: s****li**l\n",
" m?\n",
" Correct!s*m**li**l\n",
" Guessing: s*m**li**l\n",
" a?\n",
" Correct!s*m**li*al\n",
" Guessing: s*m**li*al\n",
" o?\n",
" Correct!s*m*oli*al\n",
" Guessing: s*m*oli*al\n",
" b?\n",
" Correct!s*mboli*al\n",
" Guessing: s*mboli*al\n",
" c?\n",
" Correct!s*mbolical\n",
" Guessing: s*mbolical\n",
" y?\n",
" Correct!symbolical\n",
"Guessed: symbolical\n",
"46 words guessed.\n",
"Guessing: **********\n",
"e?\n",
"Correct!*****e**e*\n",
"Guessing: *****e**e*\n",
"s?\n",
"Correct!*****esses\n",
"Guessing: *****esses\n",
"n?\n",
" Wrong! 1\n",
" i?\n",
" Wrong! 2\n",
" a?\n",
" Wrong! 3\n",
" r?\n",
" Correct!**r*resses\n",
" Guessing: **r*resses\n",
" t?\n",
" Correct!**rtresses\n",
" Guessing: **rtresses\n",
" f?\n",
" Correct!f*rtresses\n",
" Guessing: f*rtresses\n",
" o?\n",
" Correct!fortresses\n",
"Guessed: fortresses\n",
"47 words guessed.\n",
"Guessing: *********\n",
"e?\n",
"Correct!*******e*\n",
"Guessing: *******e*\n",
"s?\n",
"Correct!*******es\n",
"Guessing: *******es\n",
"i?\n",
" Wrong! 1\n",
" a?\n",
" Correct!*a*****es\n",
" Guessing: *a*****es\n",
" r?\n",
" Correct!*ar****es\n",
" Guessing: *ar****es\n",
" n?\n",
" Wrong! 2\n",
" c?\n",
" Wrong! 3\n",
" t?\n",
" Wrong! 4\n",
" b?\n",
" Wrong! 5\n",
" o?\n",
" Correct!*ar*o**es\n",
" Guessing: *ar*o**es\n",
" g?\n",
" Correct!gargo**es\n",
"No result found for gargo**es in our dictionary, asked Wordnik for help:\n",
"['gargoyles']\n",
" Guessing: gargo**es\n",
" l?\n",
" Correct!gargo*les\n",
" Guessing: gargo*les\n",
" y?\n",
" Correct!gargoyles\n",
"Guessed: gargoyles\n",
"48 words guessed.\n",
"Guessing: ***********\n",
"e?\n",
"Correct!********e**\n",
"Guessing: ********e**\n",
"s?\n",
" Wrong! 1\n",
" r?\n",
" Correct!***r****e**\n",
" Guessing: ***r****e**\n",
"HTTP Request failed: guessWord\n",
" t?\n",
" Correct!***r****e*t\n",
" Guessing: ***r****e*t\n",
" m?\n",
" Correct!*m*r****e*t\n",
" Guessing: *m*r****e*t\n",
" i?\n",
" Correct!im*r**i*e*t\n",
"No result found for im*r**i*e*t in our dictionary, asked Wordnik for help:\n",
"['improvident']\n",
" Guessing: im*r**i*e*t\n",
" v?\n",
" Correct!im*r*vi*e*t\n",
" Guessing: im*r*vi*e*t\n",
" o?\n",
" Correct!im*rovi*e*t\n",
" Guessing: im*rovi*e*t\n",
" d?\n",
" Correct!im*rovide*t\n",
" Guessing: im*rovide*t\n",
" n?\n",
" Correct!im*rovident\n",
" Guessing: im*rovident\n",
" p?\n",
" Correct!improvident\n",
"Guessed: improvident\n",
"49 words guessed.\n",
"Guessing: *********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!**s******\n",
" Guessing: **s******\n",
" i?\n",
" Wrong! 2\n",
" t?\n",
" Wrong! 3\n",
" a?\n",
" Correct!**sa*****\n",
" Guessing: **sa*****\n",
" d?\n",
" Wrong! 4\n",
" l?\n",
" Wrong! 5\n",
" r?\n",
" Correct!**sa***r*\n",
" Guessing: **sa***r*\n",
" m?\n",
" Wrong! 6\n",
" y?\n",
" Correct!**sa***ry\n",
" Guessing: **sa***ry\n",
" b?\n",
" Wrong! 7\n",
" f?\n",
" Wrong! 8\n",
" z?\n",
" Wrong! 9\n",
" q?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{}\n",
"50 words guessed.\n",
"Guessing: *********\n",
"e?\n",
"Correct!*e******e\n",
"Guessing: *e******e\n",
"t?\n",
" Wrong! 1\n",
" r?\n",
" Correct!re******e\n",
" Guessing: re******e\n",
" i?\n",
" Correct!re*i****e\n",
" Guessing: re*i****e\n",
" s?\n",
" Correct!re*is***e\n",
" Guessing: re*is***e\n",
" d?\n",
" Wrong! 2\n",
" o?\n",
" Wrong! 3\n",
" p?\n",
" Wrong! 4\n",
" v?\n",
" Correct!revis***e\n",
" Guessing: revis***e\n",
" k?\n",
" Wrong! 5\n",
" m?\n",
" Wrong! 6\n",
" a?\n",
" Correct!revisa**e\n",
" Guessing: revisa**e\n",
" b?\n",
" Correct!revisab*e\n",
" Guessing: revisab*e\n",
" w?\n",
" Wrong! 7\n",
" f?\n",
" Wrong! 8\n",
" q?\n",
" Wrong! 9\n",
" l?\n",
" Correct!revisable\n",
"Guessed: revisable\n",
"51 words guessed.\n",
"Guessing: ***********\n",
"e?\n",
"Correct!****e******\n",
"Guessing: ****e******\n",
"s?\n",
"Correct!****e*****s\n",
"Guessing: ****e*****s\n",
"r?\n",
"Correct!*r**e****rs\n",
"Guessing: *r**e****rs\n",
"o?\n",
"Correct!*ro*e***ors\n",
"Guessing: *ro*e***ors\n",
"t?\n",
"Correct!*ro*e**tors\n",
"Guessing: *ro*e**tors\n",
"p?\n",
"Correct!pro*e**tors\n",
"Guessing: pro*e**tors\n",
"c?\n",
" Wrong! 1\n",
" g?\n",
" Correct!proge**tors\n",
" Guessing: proge**tors\n",
" i?\n",
" Correct!proge*itors\n",
" Guessing: proge*itors\n",
" n?\n",
" Correct!progenitors\n",
"Guessed: progenitors\n",
"52 words guessed.\n",
"Guessing: *********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!**s*****s\n",
" Guessing: **s*****s\n",
" i?\n",
" Correct!i*s*i***s\n",
" Guessing: i*s*i***s\n",
" n?\n",
" Correct!ins*in**s\n",
"No result found for ins*in**s in our dictionary, asked Wordnik for help:\n",
"['instincts']\n",
" Guessing: ins*in**s\n",
" t?\n",
" Correct!instin*ts\n",
" Guessing: instin*ts\n",
" c?\n",
" Correct!instincts\n",
"Guessed: instincts\n",
"53 words guessed.\n",
"Guessing: ***********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!**ss*******\n",
" Guessing: **ss*******\n",
" i?\n",
" Correct!*issi***i**\n",
" Guessing: *issi***i**\n",
" a?\n",
" Correct!*issi*a*i**\n",
" Guessing: *issi*a*i**\n",
" t?\n",
" Correct!*issi*ati**\n",
" Guessing: *issi*ati**\n",
" d?\n",
" Correct!dissi*ati**\n",
" Guessing: dissi*ati**\n",
" n?\n",
" Correct!dissi*ati*n\n",
" Guessing: dissi*ati*n\n",
" o?\n",
" Correct!dissi*ation\n",
" Guessing: dissi*ation\n",
" p?\n",
" Correct!dissipation\n",
"Guessed: dissipation\n",
"54 words guessed.\n",
"Guessing: ***********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!****s******\n",
" Guessing: ****s******\n",
" i?\n",
" Correct!**i*s*i*i**\n",
"No result found for **i*s*i*i** in our dictionary, asked Wordnik for help:\n",
"['uninspiring']\n",
" Guessing: **i*s*i*i**\n",
" n?\n",
" Correct!*nins*i*in*\n",
"No result found for *nins*i*in* in our dictionary, asked Wordnik for help:\n",
"['uninspiring']\n",
" Guessing: *nins*i*in*\n",
" g?\n",
" Correct!*nins*i*ing\n",
" Guessing: *nins*i*ing\n",
" p?\n",
" Correct!*ninspi*ing\n",
" Guessing: *ninspi*ing\n",
" u?\n",
" Correct!uninspi*ing\n",
" Guessing: uninspi*ing\n",
" r?\n",
" Correct!uninspiring\n",
"Guessed: uninspiring\n",
"55 words guessed.\n",
"Guessing: *********\n",
"e?\n",
"Correct!e*******e\n",
"Guessing: e*******e\n",
"t?\n",
"Correct!e**t****e\n",
"Guessing: e**t****e\n",
"i?\n",
"Correct!e*it**i*e\n",
"Guessing: e*it**i*e\n",
"m?\n",
"Correct!e*it*mi*e\n",
"Guessing: e*it*mi*e\n",
"o?\n",
"Correct!e*itomi*e\n",
"Guessing: e*itomi*e\n",
"p?\n",
"Correct!epitomi*e\n",
"Guessing: epitomi*e\n",
"z?\n",
" Wrong! 1\n",
" s?\n",
" Correct!epitomise\n",
"Guessed: epitomise\n",
"56 words guessed.\n",
"Guessing: ************\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Wrong! 2\n",
" i?\n",
" Correct!*******i****\n",
" Guessing: *******i****\n",
" a?\n",
" Correct!*******i**a*\n",
" Guessing: *******i**a*\n",
" n?\n",
" Correct!*******i*na*\n",
" Guessing: *******i*na*\n",
" o?\n",
" Correct!**o*o**iona*\n",
"No result found for **o*o**iona* in our dictionary, asked Wordnik for help:\n",
"['proportional']\n",
" Guessing: **o*o**iona*\n",
" p?\n",
" Correct!p*opo**iona*\n",
" Guessing: p*opo**iona*\n",
" r?\n",
" Correct!propor*iona*\n",
" Guessing: propor*iona*\n",
" t?\n",
" Correct!proportiona*\n",
" Guessing: proportiona*\n",
" l?\n",
" Correct!proportional\n",
"Guessed: proportional\n",
"57 words guessed.\n",
"Guessing: **********\n",
"e?\n",
"Correct!e**e***e**\n",
"Guessing: e**e***e**\n",
"r?\n",
"Correct!e**e***er*\n",
"Guessing: e**e***er*\n",
"z?\n",
" Wrong! 1\n",
" m?\n",
" Wrong! 2\n",
" b?\n",
" Wrong! 3\n",
" l?\n",
" Correct!e**el**er*\n",
" Guessing: e**el**er*\n",
" a?\n",
" Wrong! 4\n",
" t?\n",
" Wrong! 5\n",
" f?\n",
" Wrong! 6\n",
" s?\n",
" Correct!e**el**ers\n",
" Guessing: e**el**ers\n",
" q?\n",
" Wrong! 7\n",
" d?\n",
" Wrong! 8\n",
" g?\n",
" Wrong! 9\n",
" o?\n",
" Correct!e**elo*ers\n",
" Guessing: e**elo*ers\n",
"[]\n",
" k?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{}\n",
"58 words guessed.\n",
"Guessing: ************\n",
"e?\n",
"Correct!**********e*\n",
"Guessing: **********e*\n",
"s?\n",
"Correct!**s*******e*\n",
"Guessing: **s*******e*\n",
"i?\n",
" Wrong! 1\n",
" t?\n",
" Correct!**st***t**e*\n",
" Guessing: **st***t**e*\n",
" a?\n",
" Wrong! 2\n",
" o?\n",
" Wrong! 3\n",
" m?\n",
" Wrong! 4\n",
" r?\n",
" Correct!**str**t*re*\n",
"No result found for **str**t*re* in our dictionary, asked Wordnik for help:\n",
"['restructured', 'unstructured', 'destructured', 'restructurer']\n",
" Guessing: **str**t*re*\n",
" u?\n",
" Correct!u*stru*ture*\n",
"No result found for u*stru*ture* in our dictionary, asked Wordnik for help:\n",
"['unstructured']\n",
" Guessing: u*stru*ture*\n",
" d?\n",
" Correct!u*stru*tured\n",
" Guessing: u*stru*tured\n",
" n?\n",
" Correct!unstru*tured\n",
" Guessing: unstru*tured\n",
" c?\n",
" Correct!unstructured\n",
"Guessed: unstructured\n",
"59 words guessed.\n",
"Guessing: **********\n",
"e?\n",
" Wrong! 1\n",
" s?\n",
" Correct!****s****s\n",
" Guessing: ****s****s\n",
" o?\n",
" Correct!****s*o**s\n",
" Guessing: ****s*o**s\n",
" t?\n",
" Correct!****sto**s\n",
" Guessing: ****sto**s\n",
" n?\n",
" Wrong! 2\n",
" a?\n",
" Correct!*a**sto**s\n",
" Guessing: *a**sto**s\n",
" l?\n",
" Correct!*a*lsto**s\n",
" Guessing: *a*lsto**s\n",
" i?\n",
" Correct!*ailsto**s\n",
" Guessing: *ailsto**s\n",
" h?\n",
" Correct!hailsto**s\n",
" Guessing: hailsto**s\n",
" m?\n",
" Correct!hailsto*ms\n",
" Guessing: hailsto*ms\n",
" r?\n",
" Correct!hailstorms\n",
"Guessed: hailstorms\n",
"60 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!************s\n",
"Guessing: ************s\n",
"e?\n",
" Wrong! 1\n",
" i?\n",
" Correct!****i****i**s\n",
" Guessing: ****i****i**s\n",
" t?\n",
" Correct!****i***ti**s\n",
" Guessing: ****i***ti**s\n",
" n?\n",
" Correct!**n*i***ti*ns\n",
" Guessing: **n*i***ti*ns\n",
" o?\n",
" Correct!*on*i***tions\n",
" Guessing: *on*i***tions\n",
" c?\n",
" Correct!con*i***tions\n",
" Guessing: con*i***tions\n",
" a?\n",
" Correct!con*i**ations\n",
" Guessing: con*i**ations\n",
" f?\n",
" Correct!confi**ations\n",
" Guessing: confi**ations\n",
" m?\n",
" Correct!confi*mations\n",
" Guessing: confi*mations\n",
" r?\n",
" Correct!confirmations\n",
"Guessed: confirmations\n",
"61 words guessed.\n",
"Guessing: ***************\n",
"s?\n",
"Correct!s*****s********\n",
"No result found for s*****s******** in our dictionary, asked Wordnik for help:\n",
"['south-southwest', 'state-supported', 'south-southeast', 'sadomasochistic', 'self-assembling', 'state-socialist', 'short-sightedly', 'self-estimation', 'shillyshallying', 'self-assumption']\n",
"Guessing: s*****s********\n",
"i?\n",
"Correct!s*****s*****i**\n",
"Guessing: s*****s*****i**\n",
"l?\n",
"Correct!s*l***s*****i**\n",
"Guessing: s*l***s*****i**\n",
"m?\n",
" Wrong! 1\n",
" a?\n",
" Wrong! 2\n",
" t?\n",
" Correct!s*l***st***ti**\n",
"No result found for s*l***st***ti** in our dictionary, asked Wordnik for help:\n",
"['self-estimation']\n",
" Guessing: s*l***st***ti**\n",
" b?\n",
" Wrong! 3\n",
" f?\n",
" Correct!s*lf**st***ti**\n",
" Guessing: s*lf**st***ti**\n",
" k?\n",
" Wrong! 4\n",
" w?\n",
" Wrong! 5\n",
" r?\n",
" Correct!s*lf**str**ti**\n",
" Guessing: s*lf**str**ti**\n",
" e?\n",
" Correct!self*estr**ti**\n",
"No result found for self*estr**ti** in our dictionary, asked Wordnik for help:\n",
"[]\n",
" Guessing: self*estr**ti**\n",
" v?\n",
" Wrong! 6\n",
" q?\n",
" Wrong! 7\n",
" o?\n",
" Wrong! 8\n",
" z?\n",
" Wrong! 9\n",
" j?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{}\n",
"62 words guessed.\n",
"Guessing: **************\n",
"s?\n",
"Correct!***s*********s\n",
"Guessing: ***s*********s\n",
"e?\n",
" Wrong! 1\n",
" i?\n",
" Correct!***s**i***i**s\n",
" Guessing: ***s**i***i**s\n",
" n?\n",
" Correct!**ns**i***i*ns\n",
" Guessing: **ns**i***i*ns\n",
" o?\n",
" Correct!*onso*i***ions\n",
"No result found for *onso*i***ions in our dictionary, asked Wordnik for help:\n",
"['consolidations']\n",
" Guessing: *onso*i***ions\n",
" a?\n",
" Correct!*onso*i*a*ions\n",
" Guessing: *onso*i*a*ions\n",
" t?\n",
" Correct!*onso*i*ations\n",
" Guessing: *onso*i*ations\n",
" l?\n",
" Correct!*onsoli*ations\n",
" Guessing: *onsoli*ations\n",
" d?\n",
" Correct!*onsolidations\n",
" Guessing: *onsolidations\n",
" c?\n",
" Correct!consolidations\n",
"Guessed: consolidations\n",
"63 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!**s**********\n",
"Guessing: **s**********\n",
"i?\n",
"Correct!**s*i*i***i**\n",
"Guessing: **s*i*i***i**\n",
"t?\n",
"Correct!**sti*i**ti**\n",
"Guessing: **sti*i**ti**\n",
"a?\n",
"Correct!**sti*i*ati**\n",
"Guessing: **sti*i*ati**\n",
"f?\n",
"Correct!**stifi*ati**\n",
"Guessing: **stifi*ati**\n",
"c?\n",
"Correct!**stificati**\n",
"Guessing: **stificati**\n",
"o?\n",
"Correct!**stificatio*\n",
"Guessing: **stificatio*\n",
"n?\n",
"Correct!**stification\n",
"Guessing: **stification\n",
"m?\n",
"Correct!m*stification\n",
"Guessing: m*stification\n",
"y?\n",
"Correct!mystification\n",
"Guessed: mystification\n",
"64 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!************s\n",
"Guessing: ************s\n",
"e?\n",
"Correct!******e*****s\n",
"Guessing: ******e*****s\n",
"n?\n",
"Correct!******e*n***s\n",
"Guessing: ******e*n***s\n",
"i?\n",
"Correct!******ein***s\n",
"Guessing: ******ein***s\n",
"a?\n",
"Correct!****a*eina**s\n",
"No result found for ****a*eina**s in our dictionary, asked Wordnik for help:\n",
"[]\n",
"Guessing: ****a*eina**s\n",
"k?\n",
" Wrong! 1\n",
" m?\n",
" Correct!**m*a*eina*ms\n",
"No result found for **m*a*eina*ms in our dictionary, asked Wordnik for help:\n",
"[]\n",
" Guessing: **m*a*eina*ms\n",
" o?\n",
" Correct!*om*a*eina*ms\n",
" Guessing: *om*a*eina*ms\n",
" v?\n",
" Wrong! 2\n",
" t?\n",
" Wrong! 3\n",
" b?\n",
" Wrong! 4\n",
" f?\n",
" Wrong! 5\n",
" w?\n",
" Wrong! 6\n",
" q?\n",
" Wrong! 7\n",
" l?\n",
" Wrong! 8\n",
" z?\n",
" Wrong! 9\n",
" j?\n",
" Wrong! 10\n",
" Give up, current candidates:\n",
"{}\n",
"65 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!s************\n",
"Guessing: s************\n",
"e?\n",
" Wrong! 1\n",
" i?\n",
" Correct!s*****i***i**\n",
" Guessing: s*****i***i**\n",
" t?\n",
" Correct!s*****i**ti**\n",
" Guessing: s*****i**ti**\n",
" a?\n",
" Correct!s*****i*ati**\n",
" Guessing: s*****i*ati**\n",
" n?\n",
" Correct!s*****inati*n\n",
"No result found for s*****inati*n in our dictionary, asked Wordnik for help:\n",
"['subordination']\n",
" Guessing: s*****inati*n\n",
" o?\n",
" Correct!s**o**ination\n",
" Guessing: s**o**ination\n",
" b?\n",
" Correct!s*bo**ination\n",
" Guessing: s*bo**ination\n",
" d?\n",
" Correct!s*bo*dination\n",
" Guessing: s*bo*dination\n",
" r?\n",
" Correct!s*bordination\n",
" Guessing: s*bordination\n",
" u?\n",
" Correct!subordination\n",
"Guessed: subordination\n",
"66 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!************s\n",
"Guessing: ************s\n",
"e?\n",
"Correct!e***********s\n",
"Guessing: e***********s\n",
"t?\n",
"Correct!e*******t***s\n",
"Guessing: e*******t***s\n",
"i?\n",
"Correct!e**i****ti**s\n",
"Guessing: e**i****ti**s\n",
"a?\n",
"Correct!e**i***ati**s\n",
"Guessing: e**i***ati**s\n",
"o?\n",
"Correct!e**i*o*atio*s\n",
"No result found for e**i*o*atio*s in our dictionary, asked Wordnik for help:\n",
"['equivocations']\n",
"Guessing: e**i*o*atio*s\n",
"v?\n",
"Correct!e**ivo*atio*s\n",
"Guessing: e**ivo*atio*s\n",
"q?\n",
"Correct!eq*ivo*atio*s\n",
"Guessing: eq*ivo*atio*s\n",
"c?\n",
"Correct!eq*ivocatio*s\n",
"Guessing: eq*ivocatio*s\n",
"u?\n",
"Correct!equivocatio*s\n",
"Guessing: equivocatio*s\n",
"n?\n",
"Correct!equivocations\n",
"Guessed: equivocations\n",
"67 words guessed.\n",
"Guessing: *************\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!*****e*e*****\n",
" Guessing: *****e*e*****\n",
" i?\n",
" Wrong! 2\n",
" n?\n",
" Correct!*****e*en****\n",
" Guessing: *****e*en****\n",
" m?\n",
" Correct!**m**emen****\n",
" Guessing: **m**emen****\n",
" t?\n",
" Correct!**m**ement***\n",
" Guessing: **m**ement***\n",
" l?\n",
" Correct!**m*lement***\n",
" Guessing: **m*lement***\n",
" c?\n",
" Correct!c*m*lement***\n",
" Guessing: c*m*lement***\n",
" o?\n",
" Correct!com*lement***\n",
" Guessing: com*lement***\n",
" p?\n",
" Correct!complement***\n",
" Guessing: complement***\n",
" a?\n",
" Correct!complementa**\n",
" Guessing: complementa**\n",
" y?\n",
" Correct!complementa*y\n",
" Guessing: complementa*y\n",
" r?\n",
" Correct!complementary\n",
"Guessed: complementary\n",
"68 words guessed.\n",
"Guessing: **************\n",
"s?\n",
"Correct!*****ss****s*s\n",
"Guessing: *****ss****s*s\n",
"i?\n",
"Correct!*****ssi**is*s\n",
"Guessing: *****ssi**is*s\n",
"e?\n",
"Correct!e***essi**is*s\n",
"Guessing: e***essi**is*s\n",
"o?\n",
"Correct!e***essio*is*s\n",
"Guessing: e***essio*is*s\n",
"x?\n",
"Correct!ex**essio*is*s\n",
"Guessing: ex**essio*is*s\n",
"r?\n",
"Correct!ex*ressio*is*s\n",
"Guessing: ex*ressio*is*s\n",
"p?\n",
"Correct!expressio*is*s\n",
"Guessing: expressio*is*s\n",
"n?\n",
"Correct!expressionis*s\n",
"Guessing: expressionis*s\n",
"m?\n",
" Wrong! 1\n",
" t?\n",
" Correct!expressionists\n",
"Guessed: expressionists\n",
"69 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!**s****s*****\n",
"Guessing: **s****s*****\n",
"i?\n",
"Correct!**s***is**i**\n",
"No result found for **s***is**i** in our dictionary, asked Wordnik for help:\n",
"['visualisation', 'customisation', 'dissatisfying', 'casualisation', 'fossilisation', 'rasterisation']\n",
"Guessing: **s***is**i**\n",
"a?\n",
"Correct!**s***isa*i**\n",
"Guessing: **s***isa*i**\n",
"t?\n",
"Correct!**st**isati**\n",
"Guessing: **st**isati**\n",
"o?\n",
"Correct!**sto*isatio*\n",
"No result found for **sto*isatio* in our dictionary, asked Wordnik for help:\n",
"['customisation']\n",
"Guessing: **sto*isatio*\n",
"m?\n",
"Correct!**stomisatio*\n",
"Guessing: **stomisatio*\n",
"c?\n",
"Correct!c*stomisatio*\n",
"Guessing: c*stomisatio*\n",
"u?\n",
"Correct!customisatio*\n",
"Guessing: customisatio*\n",
"n?\n",
"Correct!customisation\n",
"Guessed: customisation\n",
"70 words guessed.\n",
"Guessing: **************\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!*********e**e*\n",
" Guessing: *********e**e*\n",
" n?\n",
" Correct!*n***n***e**e*\n",
" Guessing: *n***n***e**e*\n",
" i?\n",
" Wrong! 2\n",
" a?\n",
" Correct!*na**n***e**e*\n",
" Guessing: *na**n***e**e*\n",
" m?\n",
" Wrong! 3\n",
" t?\n",
" Wrong! 4\n",
" b?\n",
" Wrong! 5\n",
" f?\n",
" Wrong! 6\n",
" l?\n",
" Correct!*na**n**le**e*\n",
" Guessing: *na**n**le**e*\n",
" z?\n",
" Wrong! 7\n",
" q?\n",
" Wrong! 8\n",
" d?\n",
" Correct!*na**n**led*ed\n",
"No result found for *na**n**led*ed in our dictionary, asked Wordnik for help:\n",
"['unacknowledged']\n",
" Guessing: *na**n**led*ed\n",
"[]\n",
" k?\n",
" Correct!*na*kn**led*ed\n",
" Guessing: *na*kn**led*ed\n",
"['unacknowledged']\n",
" w?\n",
" Correct!*na*kn*wled*ed\n",
" Guessing: *na*kn*wled*ed\n",
"['unacknowledged']\n",
" o?\n",
" Correct!*na*knowled*ed\n",
" Guessing: *na*knowled*ed\n",
"['unacknowledged']\n",
" c?\n",
" Correct!*nacknowled*ed\n",
" Guessing: *nacknowled*ed\n",
"['unacknowledged']\n",
" g?\n",
" Correct!*nacknowledged\n",
" Guessing: *nacknowledged\n",
"['unacknowledged']\n",
" u?\n",
" Correct!unacknowledged\n",
"Guessed: unacknowledged\n",
"71 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!**s********s*\n",
"Guessing: **s********s*\n",
"e?\n",
"Correct!*es********s*\n",
"Guessing: *es********s*\n",
"n?\n",
" Wrong! 1\n",
" d?\n",
" Correct!des********s*\n",
" Guessing: des********s*\n",
" i?\n",
" Correct!des**i**i*is*\n",
"No result found for des**i**i*is* in our dictionary, asked Wordnik for help:\n",
"['descriptivist', 'descriptivism']\n",
" Guessing: des**i**i*is*\n",
" t?\n",
" Correct!des**i*ti*is*\n",
" Guessing: des**i*ti*is*\n",
" v?\n",
" Correct!des**i*tivis*\n",
" Guessing: des**i*tivis*\n",
" c?\n",
" Correct!desc*i*tivis*\n",
" Guessing: desc*i*tivis*\n",
" p?\n",
" Correct!desc*iptivis*\n",
" Guessing: desc*iptivis*\n",
" r?\n",
" Correct!descriptivis*\n",
" Guessing: descriptivis*\n",
" m?\n",
" Correct!descriptivism\n",
"Guessed: descriptivism\n",
"72 words guessed.\n",
"Guessing: **************\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!****e*********\n",
" Guessing: ****e*********\n",
" i?\n",
" Correct!****e**i*i*i**\n",
" Guessing: ****e**i*i*i**\n",
" t?\n",
" Correct!****e*ti*i*it*\n",
" Guessing: ****e*ti*i*it*\n",
" b?\n",
" Correct!****e*tibi*it*\n",
" Guessing: ****e*tibi*it*\n",
" l?\n",
" Correct!****e*tibilit*\n",
" Guessing: ****e*tibilit*\n",
" y?\n",
" Correct!****e*tibility\n",
" Guessing: ****e*tibility\n",
" c?\n",
" Correct!c***e*tibility\n",
" Guessing: c***e*tibility\n",
" r?\n",
" Correct!c***ertibility\n",
" Guessing: c***ertibility\n",
" v?\n",
" Correct!c**vertibility\n",
" Guessing: c**vertibility\n",
" o?\n",
" Correct!co*vertibility\n",
" Guessing: co*vertibility\n",
" n?\n",
" Correct!convertibility\n",
"Guessed: convertibility\n",
"73 words guessed.\n",
"Guessing: ***************\n",
"s?\n",
"Correct!****s**********\n",
"Guessing: ****s**********\n",
"i?\n",
"Correct!****s*****i*i**\n",
"Guessing: ****s*****i*i**\n",
"t?\n",
"Correct!t***s*****i*it*\n",
"Guessing: t***s*****i*it*\n",
"a?\n",
"Correct!t*a*s***a*i*it*\n",
"Guessing: t*a*s***a*i*it*\n",
"r?\n",
"Correct!tra*s**ra*i*it*\n",
"No result found for tra*s**ra*i*it* in our dictionary, asked Wordnik for help:\n",
"['transferability']\n",
"Guessing: tra*s**ra*i*it*\n",
"b?\n",
"Correct!tra*s**rabi*it*\n",
"Guessing: tra*s**rabi*it*\n",
"f?\n",
"Correct!tra*sf*rabi*it*\n",
"Guessing: tra*sf*rabi*it*\n",
"e?\n",
"Correct!tra*sferabi*it*\n",
"Guessing: tra*sferabi*it*\n",
"l?\n",
"Correct!tra*sferabilit*\n",
"Guessing: tra*sferabilit*\n",
"y?\n",
"Correct!tra*sferability\n",
"Guessing: tra*sferability\n",
"n?\n",
"Correct!transferability\n",
"Guessed: transferability\n",
"74 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!**s**********\n",
"Guessing: **s**********\n",
"i?\n",
"Correct!**s*i***i*i**\n",
"Guessing: **s*i***i*i**\n",
"t?\n",
"Correct!**s*it**i*it*\n",
"No result found for **s*it**i*it* in our dictionary, asked Wordnik for help:\n",
"['unsuitability']\n",
"Guessing: **s*it**i*it*\n",
"u?\n",
"Correct!u*suit**i*it*\n",
"Guessing: u*suit**i*it*\n",
"a?\n",
"Correct!u*suita*i*it*\n",
"Guessing: u*suita*i*it*\n",
"b?\n",
"Correct!u*suitabi*it*\n",
"Guessing: u*suitabi*it*\n",
"l?\n",
"Correct!u*suitabilit*\n",
"Guessing: u*suitabilit*\n",
"y?\n",
"Correct!u*suitability\n",
"Guessing: u*suitability\n",
"n?\n",
"Correct!unsuitability\n",
"Guessed: unsuitability\n",
"75 words guessed.\n",
"Guessing: *************\n",
"s?\n",
"Correct!*****s*****ss\n",
"Guessing: *****s*****ss\n",
"e?\n",
"Correct!*e*e*s**e*ess\n",
"No result found for *e*e*s**e*ess in our dictionary, asked Wordnik for help:\n",
"['defensiveness', 'recessiveness']\n",
"Guessing: *e*e*s**e*ess\n",
"n?\n",
"Correct!*e*ens**eness\n",
"No result found for *e*ens**eness in our dictionary, asked Wordnik for help:\n",
"['defensiveness']\n",
"Guessing: *e*ens**eness\n",
"f?\n",
"Correct!*efens**eness\n",
"Guessing: *efens**eness\n",
"d?\n",
"Correct!defens**eness\n",
"Guessing: defens**eness\n",
"v?\n",
"Correct!defens*veness\n",
"Guessing: defens*veness\n",
"i?\n",
"Correct!defensiveness\n",
"Guessed: defensiveness\n",
"76 words guessed.\n",
"Guessing: **************\n",
"s?\n",
"Correct!***s*********s\n",
"Guessing: ***s*********s\n",
"e?\n",
"Correct!***s**e******s\n",
"Guessing: ***s**e******s\n",
"i?\n",
"Correct!***si*e***i**s\n",
"No result found for ***si*e***i**s in our dictionary, asked Wordnik for help:\n",
"['considerations']\n",
"Guessing: ***si*e***i**s\n",
"o?\n",
"Correct!*o*si*e***io*s\n",
"Guessing: *o*si*e***io*s\n",
"n?\n",
"Correct!*onsi*e***ions\n",
"Guessing: *onsi*e***ions\n",
"a?\n",
"Correct!*onsi*e*a*ions\n",
"Guessing: *onsi*e*a*ions\n",
"t?\n",
"Correct!*onsi*e*ations\n",
"Guessing: *onsi*e*ations\n",
"d?\n",
"Correct!*onside*ations\n",
"Guessing: *onside*ations\n",
"r?\n",
"Correct!*onsiderations\n",
"Guessing: *onsiderations\n",
"c?\n",
"Correct!considerations\n",
"Guessed: considerations\n",
"77 words guessed.\n",
"Guessing: **************\n",
"s?\n",
"Correct!*****s********\n",
"Guessing: *****s********\n",
"e?\n",
"Correct!****es****e**e\n",
"No result found for ****es****e**e in our dictionary, asked Wordnik for help:\n",
"['correspondence', 'condescendence']\n",
"Guessing: ****es****e**e\n",
"c?\n",
"Correct!c***es****e*ce\n",
"Guessing: c***es****e*ce\n",
"n?\n",
"Correct!c***es**n*ence\n",
"Guessing: c***es**n*ence\n",
"o?\n",
"Correct!co**es*on*ence\n",
"Guessing: co**es*on*ence\n",
"r?\n",
"Correct!corres*on*ence\n",
"Guessing: corres*on*ence\n",
"d?\n",
"Correct!corres*ondence\n",
"Guessing: corres*ondence\n",
"p?\n",
"Correct!correspondence\n",
"Guessed: correspondence\n",
"78 words guessed.\n",
"Guessing: *************\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Correct!************e\n",
" Guessing: ************e\n",
" i?\n",
" Correct!******i***i*e\n",
" Guessing: ******i***i*e\n",
" t?\n",
" Correct!*****ti**ti*e\n",
" Guessing: *****ti**ti*e\n",
" a?\n",
" Correct!a****ti*ati*e\n",
"No result found for a****ti*ati*e in our dictionary, asked Wordnik for help:\n",
"['agglutinative']\n",
" Guessing: a****ti*ati*e\n",
" g?\n",
" Correct!agg**ti*ati*e\n",
" Guessing: agg**ti*ati*e\n",
" v?\n",
" Correct!agg**ti*ative\n",
" Guessing: agg**ti*ative\n",
" l?\n",
" Correct!aggl*ti*ative\n",
" Guessing: aggl*ti*ative\n",
" u?\n",
" Correct!aggluti*ative\n",
" Guessing: aggluti*ative\n",
" n?\n",
" Correct!agglutinative\n",
"Guessed: agglutinative\n",
"79 words guessed.\n",
"Guessing: *************\n",
"s?\n",
" Wrong! 1\n",
" e?\n",
" Wrong! 2\n",
" i?\n",
" Correct!**********i**\n",
" Guessing: **********i**\n",
" t?\n",
" Correct!t*********i**\n",
" Guessing: t*********i**\n",
" a?\n",
" Wrong! 3\n",
" r?\n",
" Correct!t**r******i**\n",
" Guessing: t**r******i**\n",
" o?\n",
" Correct!t*oro****oi**\n",
"No result found for t*oro****oi** in our dictionary, asked Wordnik for help:\n",
"['thoroughgoing']\n",
" Guessing: t*oro****oi**\n",
" g?\n",
" Correct!t*oro*g*goi*g\n",
"No result found for t*oro*g*goi*g in our dictionary, asked Wordnik for help:\n",
"['thoroughgoing']\n",
" Guessing: t*oro*g*goi*g\n",
" h?\n",
" Correct!thoro*ghgoi*g\n",
" Guessing: thoro*ghgoi*g\n",
" u?\n",
" Correct!thoroughgoi*g\n",
" Guessing: thoroughgoi*g\n",
" n?\n",
" Correct!thoroughgoing\n",
"Guessed: thoroughgoing\n",
"80 words guessed.\n",
"Game ended with result:\n",
"{'data': {'score': 978, 'correctWordCount': 65, 'totalWordCount': 80, 'totalWrongGuessCount': 322}, 'sessionId': 'c7dc542c788f5563b6a5806812aa33ab'}\n",
"Please submitResult() to get the final score.\n"
]
}
],
"source": [
"g = Game(seed=\"4\")\n",
"g.play()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Possible Improvements\n",
"\n",
"1. Better dictionary.\n",
"For the corpus, solely being \"big\" is not a good sign, instead, if it does not match the tester's corpus, it can be worse.\n",
"\n",
"2. Define a better fallback sequence if the algorithm run out of possible candidates.\n",
"When neither the algorithm's own corpus nor *Wordnik* has any candidates, there may exists a optimal sequence to guess the next letter.\n",
"\n",
"But this sequence could be extremely tricky. Instead of use the global distributon of the letter of the corpus, this sequence can very depends on the length, POS and even structure."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment