crosswords/data/data_tests_en.ipynb

2490 lines
114 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import re\n",
"import tqdm\n",
"from IPython.display import Markdown\n",
"import unidecode"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## prepare raw wikiextract"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%%bash\n",
"cat english.words| jq -s . > english.json"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"with open('english.json', 'r') as f:\n",
" english_vocab_db = json.load(f)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"cat\n20\n"
]
}
],
"source": [
"i = 14\n",
"print(english_vocab_db[i]['word'])\n",
"print(len(english_vocab_db[i]['translations']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## helper functions to filter senses, synonyms and antonyms"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def filter_senses(senses_list, word):\n",
" filtered_senses = []\n",
" for entry in senses_list:\n",
" if 'glosses' in entry:\n",
" glosses = entry['glosses']\n",
" for gloss_entry in glosses:\n",
" for gloss in gloss_entry.split(';'):\n",
" s = re.sub('\\s+', ' ', re.sub(\"[\\(\\[].*?[\\)\\]]\", \"\", gloss).replace(\".\", \"\")).strip()\n",
" if len(s) > 0 and word not in s:\n",
" filtered_senses.append(s)\n",
" return filtered_senses"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def filter_synonyms(synonyms_list):\n",
" filtered_synonyms = []\n",
" for entry in synonyms_list:\n",
" if 'word' in entry:\n",
" filtered_synonyms.append(entry['word'])\n",
" return filtered_synonyms"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def filter_antonyms(antonym_list):\n",
" filtered_antonyms = []\n",
" for entry in antonym_list:\n",
" if 'word' in entry:\n",
" filtered_antonyms.append(entry['word'])\n",
" return filtered_antonyms"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def add_wiktionary_item(item, db):\n",
" item = {}\n",
" if 'word' not in item.keys():\n",
" return\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## build a dictionary_database from the raw extract\n",
"using words as keys, enumerate those keys (e.g. `house`, `house1`, `house2` etc.) on duplicates"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"100%|██████████| 1023195/1023195 [00:01<00:00, 818107.07it/s]\n"
]
}
],
"source": [
"dictionary_database = {}\n",
"for item in tqdm.tqdm(english_vocab_db):\n",
" if 'word' in item:\n",
" word = item['word']\n",
" i = 0\n",
" while word in dictionary_database:\n",
" i += 1\n",
" word = f\"{item['word']}{i}\"\n",
" dictionary_database[word] = item\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"class NoDataException(Exception):\n",
" pass\n",
"\n",
"def get_attribute(word:str, attr:str, db = dictionary_database):\n",
" if word not in db:\n",
" raise NoDataException\n",
" item = db[word]\n",
" if attr not in item:\n",
" raise NoDataException\n",
" return item[attr]\n",
"\n",
"def get_senses(word: str):\n",
" \n",
" senses = get_attribute(word, 'senses')\n",
" \n",
" return filter_senses(senses, word)\n",
"\n",
"def get_synonyms(word: str):\n",
" syns = get_attribute(word, 'synonyms')\n",
" \n",
" return filter_synonyms(syns)\n",
"\n",
"def get_antonyms(word: str):\n",
" ants = get_attribute(word, 'antonyms')\n",
" \n",
" return filter_antonyms(ants)\n",
"\n",
"def display_info(word: str):\n",
" \n",
" if word not in dictionary_database:\n",
" raise NoDataException\n",
" \n",
" try:\n",
" senses = get_senses(word)\n",
" except NoDataException:\n",
" senses = []\n",
" \n",
" try:\n",
" synonyms = get_synonyms(word)\n",
" except NoDataException:\n",
" synonyms = []\n",
" \n",
" try:\n",
" antonyms = get_antonyms(word)\n",
" except NoDataException:\n",
" antonyms = []\n",
" \n",
" senses_str = '\\n'.join([f\"* {sense}\" for sense in senses])\n",
" \n",
" synonyms_str = '\\n'.join([f\"* {syn}\" for syn in synonyms])\n",
" \n",
" antonyms_str = '\\n'.join([f\"* {ant}\" for ant in antonyms])\n",
" \n",
" markdown_string = f\"\"\"\n",
"## {word}\n",
"\n",
"### Senses:\n",
"\n",
"{senses_str}\n",
"\n",
"### Synonyms:\n",
"\n",
"{synonyms_str}\n",
"\n",
"### Antonyms:\n",
"\n",
"{antonyms_str}\n",
" \n",
" \"\"\"\n",
" \n",
" return Markdown(markdown_string)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"100%|██████████| 1023195/1023195 [00:12<00:00, 84975.89it/s]\n"
]
}
],
"source": [
"import random\n",
"list_words = []\n",
"for word in tqdm.tqdm(dictionary_database.keys()):\n",
" item = dictionary_database[word]\n",
" try:\n",
" senses = get_senses(word)\n",
" if len(senses) > 4:\n",
" list_words.append(word)\n",
" continue\n",
" try:\n",
" if len(get_antonyms(word)) >= 1:\n",
" list_words.append(word)\n",
" continue\n",
" except NoDataException:\n",
" if len(get_synonyms(word)) >= 1:\n",
" list_words.append(word)\n",
" \n",
" except NoDataException:\n",
" pass\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Markdown object>",
"text/markdown": "\n## cat\n\n### Senses:\n\n* An animal of the family Felidae:\n* A person:\n* A sturdy merchant sailing vessel\n* The game of \"trap and ball\"\n* A vagina, a vulva\n* the female external genitalia\n* A double tripod with six feet, of which three rest on the ground, in whatever position it is placed\n* A wheeled shelter, used in the Middle Ages as a siege weapon to allow assailants to approach enemy defences\n\n### Synonyms:\n\n* feliform\n* feline cat\n* pantherine cat\n* panther\n* Thesaurus:man\n* Thesaurus:cat\n\n### Antonyms:\n\n\n \n "
},
"metadata": {}
}
],
"source": [
"display(display_info(\"cat\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"----\n",
"## algorithm to build a grid of words"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"100%|██████████| 68842/68842 [00:01<00:00, 37266.20it/s]\n"
]
}
],
"source": [
"## store an optimized library version for production\n",
"optimized_lib = {}\n",
"for word in tqdm.tqdm(list_words):\n",
" item = {}\n",
" senses = None\n",
" antonyms = None\n",
" synonyms = None\n",
"\n",
" num_hints = 0\n",
"\n",
" raw_item = dictionary_database[word]\n",
" raw_word = raw_item['word']\n",
"\n",
" def has_digit(s: str):\n",
" for c in s:\n",
" if c.isdigit():\n",
" return True\n",
" return False\n",
"\n",
" if has_digit(raw_word):\n",
" continue\n",
"\n",
" try:\n",
" senses = get_senses(word)\n",
"\n",
" new_senses = []\n",
"\n",
" for sense in senses:\n",
" if raw_word.lower() in sense.lower():\n",
" continue\n",
"\n",
" if sense.isupper():\n",
" continue\n",
"\n",
" new_senses.append(sense)\n",
"\n",
" senses = new_senses\n",
"\n",
" num_hints += len(senses)\n",
"\n",
" except:\n",
" pass\n",
" try:\n",
" synonyms = get_synonyms(word)\n",
"\n",
" num_hints += len(synonyms)\n",
" except:\n",
" pass\n",
" try:\n",
" antonyms = get_antonyms(word)\n",
"\n",
" num_hints += len(antonyms)\n",
" except:\n",
" pass\n",
"\n",
" if num_hints < 2:\n",
" continue\n",
"\n",
" raw_item = dictionary_database[word]\n",
"\n",
" unaccented_key = unidecode.unidecode(word)\n",
" unaccented_word = unidecode.unidecode(raw_item['word'])\n",
"\n",
" unaccented_key = unaccented_key.replace(\" \", \"\").lower()\n",
" unaccented_word = unaccented_word.replace(\" \", \"\")\n",
"\n",
" \n",
" item['senses'] = senses\n",
" item['antonyms'] = antonyms\n",
" item['synonyms'] = synonyms\n",
" item['word'] = unaccented_word\n",
"\n",
" num_translations = 0\n",
" if 'translations' in raw_item:\n",
" num_translations = len(raw_item['translations'])\n",
" \n",
" if num_translations < 10:\n",
" continue\n",
" \n",
" item['num_translations'] = num_translations\n",
"\n",
" optimized_lib[unaccented_key] = item"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"21212"
]
},
"metadata": {},
"execution_count": 17
}
],
"source": [
"len(optimized_lib)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"with open(\"en.json\",'w') as f:\n",
" json.dump(optimized_lib, f, indent = 4)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\u001b[0;31mSignature:\u001b[0m\n",
"\u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdump\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mskipkeys\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mensure_ascii\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mcheck_circular\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mallow_nan\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mindent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mseparators\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0mdefault\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0msort_keys\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n",
"\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mDocstring:\u001b[0m\n",
"Serialize ``obj`` as a JSON formatted stream to ``fp`` (a\n",
"``.write()``-supporting file-like object).\n",
"\n",
"If ``skipkeys`` is true then ``dict`` keys that are not basic types\n",
"(``str``, ``int``, ``float``, ``bool``, ``None``) will be skipped\n",
"instead of raising a ``TypeError``.\n",
"\n",
"If ``ensure_ascii`` is false, then the strings written to ``fp`` can\n",
"contain non-ASCII characters if they appear in strings contained in\n",
"``obj``. Otherwise, all such characters are escaped in JSON strings.\n",
"\n",
"If ``check_circular`` is false, then the circular reference check\n",
"for container types will be skipped and a circular reference will\n",
"result in an ``OverflowError`` (or worse).\n",
"\n",
"If ``allow_nan`` is false, then it will be a ``ValueError`` to\n",
"serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``)\n",
"in strict compliance of the JSON specification, instead of using the\n",
"JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).\n",
"\n",
"If ``indent`` is a non-negative integer, then JSON array elements and\n",
"object members will be pretty-printed with that indent level. An indent\n",
"level of 0 will only insert newlines. ``None`` is the most compact\n",
"representation.\n",
"\n",
"If specified, ``separators`` should be an ``(item_separator, key_separator)``\n",
"tuple. The default is ``(', ', ': ')`` if *indent* is ``None`` and\n",
"``(',', ': ')`` otherwise. To get the most compact JSON representation,\n",
"you should specify ``(',', ':')`` to eliminate whitespace.\n",
"\n",
"``default(obj)`` is a function that should return a serializable version\n",
"of obj or raise TypeError. The default simply raises TypeError.\n",
"\n",
"If *sort_keys* is true (default: ``False``), then the output of\n",
"dictionaries will be sorted by key.\n",
"\n",
"To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the\n",
"``.default()`` method to serialize additional types), specify it with\n",
"the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.\n",
"\u001b[0;31mFile:\u001b[0m /usr/lib/python3.9/json/__init__.py\n",
"\u001b[0;31mType:\u001b[0m function\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"?json.dump"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import random\n",
"from string import digits\n",
"\n",
"class WordInfo(object):\n",
" def __init__(self, word:str, y:int, x:int, is_vertical: bool, database=dictionary_database):\n",
" self._dictionary_database = dictionary_database\n",
" self._y = y\n",
" self._x = x\n",
" self._word = word\n",
" self._hint = None\n",
" self._is_vertical = is_vertical\n",
" \n",
" self.choose_info()\n",
" \n",
" def get_best_antonym(self) -> str:\n",
" antonyms = get_antonyms(self._word)\n",
" return random.choice(antonyms)\n",
" \n",
" def get_best_synonym(self) -> str:\n",
" synonyms = get_synonyms(self._word)\n",
" return random.choice(synonyms)\n",
" \n",
" def get_best_sense(self) -> str:\n",
" senses = get_senses(self._word)\n",
" return random.choice(senses)\n",
" \n",
" def choose_info(self):\n",
" # first choose antonyms, then synonyms, then senses\n",
" \n",
" try:\n",
" self._hint = f\"opposite of {self.get_best_antonym()}\"\n",
" except NoDataException:\n",
" pass\n",
" \n",
" try:\n",
" self._hint = f\"other word for {self.get_best_synonym()}\"\n",
" except NoDataException:\n",
" pass\n",
" \n",
" self._hint = self.get_best_sense()\n",
" \n",
" def get_hint(self) -> str:\n",
" return self._hint\n",
" \n",
" def get_hint_location(self):\n",
" x = self._x if self._is_vertical else self._x - 1\n",
" y = self._y if self._is_vertical else self._y - 1\n",
" return (y, x)\n",
" \n",
" def is_vertical(self):\n",
" return self._is_vertical\n",
"\n",
"def create_word_grid(w: int, h: int, word_list = list_words, target_density = 0.5):\n",
" grid = np.full(shape=(h,w), dtype=np.unicode, fill_value = ' ')\n",
" \n",
" locations = {}\n",
" \n",
" word_hints = {}\n",
" \n",
" def store_location(char: str, y: int, x: int):\n",
" assert len(char) == 1\n",
" \n",
" if char not in locations:\n",
" locations[char] = []\n",
" \n",
" locations[char].append([y,x])\n",
" \n",
" remove_digits = str.maketrans('', '', digits)\n",
" n_words = len(list_words)\n",
" \n",
" def get_word(max_length: int, min_length = 0):\n",
" assert max_length > 1\n",
" \n",
" index = random.randint(0,n_words-1)\n",
" word = list_words[index][:]\n",
" \n",
" while len(word) >= max_length or not word.isalnum() or len(word) <= min_length:\n",
" index = random.randint(0,n_words-1)\n",
" word = list_words[index][:]\n",
" \n",
" return word\n",
" \n",
" def normalize_word(word:str):\n",
" word = word.translate(remove_digits)\n",
" return word.lower()\n",
" \n",
" def place_word(word:str, y: int, x:int, vertical:bool = False):\n",
" normalized_word = normalize_word(word)\n",
" n = len(normalized_word)\n",
" if vertical:\n",
" assert grid.shape[0] - n >= y\n",
" for i, char in enumerate(normalized_word):\n",
" grid[y + i,x] = char\n",
" store_location(char, y+i, x)\n",
" else:\n",
" assert grid.shape[1] - n >= x\n",
" for i, char in enumerate(normalized_word):\n",
" grid[y,x + i] = char\n",
" store_location(char, y, x+i)\n",
" \n",
" word_hints[normalized_word] = WordInfo(word, y, x, vertical)\n",
" \n",
" \n",
" \n",
" def density():\n",
" return 1 - (grid == \" \").sum() / (w * h)\n",
" \n",
" \n",
" \n",
" def check_if_fits(word:str, y:int, x:int, vertical:bool):\n",
" n = len(word)\n",
" if vertical:\n",
" \n",
" # check if there is space before and after\n",
" if y - 1 >= 0 and grid[y - 1, x] != \" \":\n",
" return False\n",
" if y + n < grid.shape[0] - 1 and grid[y+n,x] != \" \":\n",
" return False\n",
" \n",
" if grid.shape[0] - n < y or y < 0:\n",
" #print(\"over board\")\n",
" return False\n",
" \n",
" for i, char in enumerate(word):\n",
" char_x = x\n",
" char_y = y + i\n",
" \n",
" if not (grid[char_y, char_x] == \" \" or grid[char_y, char_x] == char):\n",
" #print(\"not matching\")\n",
" return False\n",
" \n",
" if grid[char_y, char_x] == \" \":\n",
" # check for horizonatal neighbors:\n",
" if char_x - 1 >= 0 and grid[char_y, char_x - 1] != \" \":\n",
" #print(\"3\")\n",
" return False\n",
" if char_x + 1 < grid.shape[1] and grid[char_y, char_x + 1] != \" \":\n",
" #print(\"4\")\n",
" return False\n",
" \n",
" else:\n",
" \n",
" # check if there is space before and after\n",
" if x - 1 >= 0 and grid[y, x - 1] != \" \":\n",
" return False\n",
" if x + n < grid.shape[1] - 1 and grid[y,x + n] != \" \":\n",
" return False\n",
" \n",
" if grid.shape[1] - n < x or x < 0:\n",
" #print(\"over board\")\n",
" return False\n",
" \n",
" for i, char in enumerate(word):\n",
" char_x = x + i\n",
" char_y = y\n",
" \n",
" if not (grid[char_y, char_x] == \" \" or grid[char_y, char_x] == char):\n",
" #print(\"not matching\")\n",
" return False\n",
" \n",
" if grid[char_y, char_x] == \" \":\n",
" # check for vertical neighbors:\n",
" if char_y - 1 >= 0 and grid[char_y - 1, char_x] != \" \":\n",
" #print(\"1\")\n",
" return False\n",
" if char_y + 1 < grid.shape[0] and grid[char_y + 1, char_x] != \" \":\n",
" #print(\"2\")\n",
" return False\n",
" \n",
" return True\n",
" \n",
" \n",
" def get_crossover(word: str):\n",
" # returns Tuple of: (y,x, is_vertical?) or None\n",
" \n",
" shuffled_order = list(range(len(word)))\n",
" random.shuffle(shuffled_order)\n",
" \n",
" for index in shuffled_order:\n",
" # check for existing locations\n",
" char = word[index]\n",
" if char in locations:\n",
" char_locations = locations[char]\n",
" \n",
" for char_loc in char_locations:\n",
" # test vertical\n",
" y = char_loc[0] - index\n",
" x = char_loc[1]\n",
" \n",
" if check_if_fits(word, y, x, vertical=True):\n",
" return (y,x,True)\n",
" \n",
" # test horizontal\n",
" y = char_loc[0]\n",
" x = char_loc[1] - index\n",
" \n",
" if check_if_fits(word, y, x, vertical=False):\n",
" return (y,x,False)\n",
" \n",
" return None\n",
" \n",
" min_shape = min(w,h,30)\n",
" \n",
" # place first word:\n",
" first_word = get_word(max_length=min_shape, min_length=min(10,grid.shape[1] - 2))\n",
" \n",
" # find random place:\n",
" x = random.randint(0, grid.shape[1] - len(first_word) - 1)\n",
" y = random.randint(0, grid.shape[0] - 1)\n",
" \n",
" place_word(first_word, y, x, vertical=False)\n",
" \n",
" i = 0\n",
" \n",
" \n",
" current_density = density()\n",
" \n",
" while current_density < target_density:\n",
" word = get_word(max_length=(1 - current_density ** 0.4) * min_shape,\n",
" min_length=max(min(10, 0.5 * (1 - current_density ** 0.3) * min_shape), 2))\n",
" \n",
" normalized_word = normalize_word(word)\n",
" \n",
" if normalized_word in word_hints:\n",
" continue\n",
" \n",
" # check if matching characters exist:\n",
" crossover = get_crossover(normalized_word)\n",
" \n",
" i += 1\n",
" if i % 100000 == 0:\n",
" print(i)\n",
" if i > 100000:\n",
" break\n",
" \n",
" if crossover == None:\n",
" current_density = density()\n",
" continue\n",
" \n",
" y,x,is_vertical = crossover\n",
" \n",
" place_word(word, y,x, is_vertical)\n",
" \n",
" current_density = density()\n",
" \n",
" print(i)\n",
" return grid, word_hints\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name '__file__' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-24-358d5687b810>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0m__file__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name '__file__' is not defined"
]
}
],
"source": [
"__file__\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"762\n"
]
},
{
"data": {
"text/markdown": [
"| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n",
"|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n",
"| | | | | |**d**|**e**|**n**|**s**|**i**|**t**|**o**|**m**|**e**|**t**|**e**|**r**| | |**h**| | |**z**| | | |**h**|**a**|**m**|**m**|**e**|**r**|**s**| | |**p**|**p**|**l**| | | | |**d**| |**h**|**a**|**w**|**k**|\n",
"| | | |**v**| | | |**o**| | | | | |**x**| | |**m**| |**w**|**o**|**r**|**k**|**e**|**r**|**y**| | |**u**| | | | | | |**d**| |**e**| |**t**|**e**|**n**|**o**|**u**|**s**| |**m**| | |\n",
"| | |**m**|**a**|**s**|**l**|**e**|**n**|**i**|**t**|**s**|**a**| | | | | | | |**i**| | |**k**| | | |**f**|**r**|**e**|**e**| |**c**|**u**|**m**|**m**|**e**|**r**| | |**c**| | |**f**| | |**i**| |**m**|\n",
"| | | |**g**| | | |**i**| |**h**| | |**c**| | |**p**|**l**|**e**|**c**|**t**|**i**|**l**|**e**| | |**d**| |**e**| | |**p**| |**n**| |**v**| |**u**| |**s**|**t**|**a**|**m**|**f**|**o**|**r**|**d**| |**r**|\n",
"| | | |**u**|**l**|**c**|**e**|**r**|**o**|**u**|**s**| |**o**| |**i**| |**i**| |**o**| | | | |**c**| |**a**|**j**|**o**|**g**| |**a**| |**j**| | | |**s**| | |**h**| | | | | |**s**|**e**|**t**|\n",
"| |**d**|**u**|**e**| | | |**r**| |**s**| |**a**|**m**|**e**|**n**| |**q**| |**i**| |**p**|**i**|**l**|**l**|**a**|**r**| |**l**| | |**n**| |**o**| | |**r**|**a**|**d**|**c**|**l**|**i**|**f**|**f**|**e**| |**t**| | |\n",
"| |**e**| | | |**b**| |**i**| | |**h**| |**m**| |**c**| |**u**| |**n**| |**o**| | |**a**| |**t**| |**e**| | |**t**| |**c**| |**a**| |**l**| | |**i**| | |**a**| |**l**| |**i**| |\n",
"| |**c**|**o**|**n**|**s**|**u**|**l**|**t**|**i**|**v**|**e**| |**e**|**x**|**o**|**t**|**i**|**c**| |**b**|**l**|**n**| |**d**| |**o**| | |**v**| |**s**|**q**|**u**|**a**|**s**|**h**| |**k**|**i**|**p**| | |**n**| |**i**| |**n**| |\n",
"|**m**|**i**| | | |**t**| |**a**| | |**x**| |**a**| |**n**| |**d**| | | |**y**| |**c**| |**w**|**i**|**t**|**h**|**e**| | | |**l**| |**t**| | | | |**s**| |**s**|**t**|**e**|**m**| |**s**| |\n",
"| |**d**| |**u**| |**t**|**u**|**t**| |**o**| | |**s**| |**s**| |**a**| |**s**| |**s**| |**r**|**x**| |**d**| | |**g**|**g**| | |**a**| | |**e**| |**b**| |**i**| | |**o**| |**n**| |**u**| |\n",
"| |**a**| |**p**| |**r**| |**i**|**n**|**s**|**t**|**r**|**u**|**m**|**e**|**n**|**t**|**a**|**l**|**l**|**y**| |**y**| | | | | |**i**| |**p**|**a**|**r**|**v**|**o**|**v**|**i**|**r**|**u**|**s**| | |**d**| |**e**|**o**|**f**| |\n",
"| |**b**|**a**|**w**|**n**|**e**|**e**|**n**| |**t**| | |**r**| |**q**| |**i**| |**i**| |**n**| |**s**|**h**|**r**|**o**|**u**|**d**|**e**|**d**| |**m**| |**a**| |**p**| |**i**| | | |**m**| | |**m**| |**f**| |\n",
"| |**l**| |**i**| |**s**| |**g**|**a**|**r**|**b**| |**a**| |**u**| |**o**| |**c**|**a**|**o**| |**t**| |**f**| | | | | |**s**|**h**|**a**|**r**|**p**| |**i**|**n**|**a**|**c**|**c**|**e**|**s**|**s**|**i**|**b**|**l**|**e**|\n",
"| |**e**| |**n**| |**s**| | | |**a**| | |**b**|**e**|**e**| |**n**| |**k**| |**d**| |**a**| |**s**| |**c**| |**s**| | |**e**| | |**w**| | |**e**| |**s**| |**t**| | |**c**| |**a**| |\n",
"| | |**e**|**g**|**g**| | |**r**|**i**|**c**|**h**| |**l**| |**n**|**p**| |**p**|**i**| |**y**|**e**|**l**|**l**| |**j**|**o**|**i**|**n**|**d**|**e**|**r**| | | |**s**| | | |**s**| |**a**| |**c**| | |**t**| |\n",
"| |**t**| | | | |**f**| | |**i**| | |**e**| |**t**| |**b**| |**n**| | | |**l**| |**p**| |**n**| |**i**| | |**s**| |**o**| |**t**| | |**u**| |**a**|**l**|**p**|**h**|**a**|**b**|**e**|**t**|\n",
"| |**y**| | |**b**|**a**|**l**|**m**|**l**|**i**|**k**|**e**| |**a**| | |**u**|**n**|**g**|**l**|**a**|**m**|**o**|**r**|**o**|**u**|**s**| |**t**| | |**t**| |**s**|**o**|**f**|**a**| |**n**| | |**l**| |**i**| | | |**e**|\n",
"| |**r**| | |**u**| |**c**| | |**f**| |**v**| |**k**| | |**l**| | | | | |**g**| |**o**| |**o**| | |**c**| | | |**c**| |**u**| | |**c**|**l**|**a**|**y**| |**l**|**e**|**o**|**l**|**a**|\n",
"|**s**|**o**|**d**| |**r**| | |**g**|**e**|**o**|**d**|**e**|**t**|**i**|**c**|**a**|**l**| | | |**w**| |**e**| |**r**| |**l**| |**p**|**o**|**i**|**n**|**t**|**e**| | |**w**| |**u**| | | | |**i**| | |**o**| |\n",
"|**k**| |**o**| |**p**|**l**| | | |**r**| |**n**| | | |**p**| | |**b**|**g**|**a**| |**n**| | |**s**|**i**|**c**| |**n**| | | |**o**| | |**r**| |**t**| | |**d**|**o**|**a**|**t**|**i**|**n**|**g**|\n",
"|**i**| |**w**| | | | |**s**|**i**|**m**| | |**n**|**a**|**g**|**p**|**u**|**r**| | |**l**| | |**w**| | |**d**| | |**t**| |**w**|**i**|**l**|**d**|**f**|**i**|**r**|**e**| |**e**| | |**s**| | |**g**| |\n",
"|**r**| |**n**| | |**f**|**d**|**m**| | |**p**|**s**| | | |**e**| | | | |**d**|**e**|**v**|**a**|**s**|**t**|**a**|**t**|**i**|**o**|**n**| | |**a**| | |**g**| | |**b**|**l**|**o**|**o**|**t**|**h**| |**v**| |\n",
"|**r**|**e**|**s**|**e**|**t**| | |**e**| | |**i**| | | | |**r**|**o**|**u**|**p**| |**r**| | |**t**| | |**t**| | |**r**| | | | |**p**|**i**|**g**|**g**|**y**| |**s**| | | |**d**| |**i**| |\n",
"| | |**t**| |**i**| |**c**|**a**|**p**|**i**|**t**|**a**|**l**|**i**|**s**|**t**| | |**r**| |**o**| | |**t**| |**b**|**e**|**a**|**s**|**t**| | | |**h**| | |**l**| | | |**e**|**n**|**r**|**o**|**l**|**l**|**e**|**d**|\n",
"|**m**|**e**|**a**|**s**|**l**|**y**| |**t**| | |**k**| | |**d**| |**a**|**l**|**l**|**y**| |**n**|**c**| |**l**| |**e**| | |**o**| |**m**| |**w**|**a**|**n**|**t**|**e**|**d**| | | | |**a**| | | |**w**| |\n",
"|**e**| |**g**| |**l**| | |**o**| |**p**|**i**|**p**| |**p**| |**i**| | | | | | | |**e**| |**n**| | |**p**| |**s**| | |**n**| | |**r**| | | |**a**| |**c**| | | | | |\n",
"| |**k**|**e**|**y**|**p**|**o**|**i**|**n**|**t**| |**n**| |**g**|**r**|**a**|**n**|**d**|**f**|**a**|**t**|**h**|**e**|**r**|**l**|**y**| | |**w**|**a**|**r**|**b**|**i**|**r**|**d**| | | | | | |**c**|**l**|**e**|**a**|**n**| | | |\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#%%prun\n",
"gr, infos = create_word_grid(16*3,9*3, target_density=0.55)\n",
"def grid2mdown(grid):\n",
" h,w = grid.shape\n",
" \n",
" md_str = \" \".join([\"|\"] * (w+1)) + \"\\n\"\n",
" md_str += \":---:\".join([\"|\"] * (w+1)) + \"\\n\"\n",
" \n",
" for y in range(h):\n",
" md_str += \"|\" + \"|\".join([(f\"**{grid[y,x]}**\" if grid[y,x] != \" \" else \" \") for x in range(w)]) + \"|\\n\"\n",
" \n",
" return Markdown(md_str)\n",
"\n",
"display(grid2mdown(gr))\n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 279,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"edie -- surname\n"
]
}
],
"source": [
"i=220\n",
"\n",
"word = list(infos.keys())[i]\n",
"\n",
"print(word, \"--\", infos[word].get_hint())"
]
},
{
"cell_type": "code",
"execution_count": 360,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"## wagenboom\n",
"\n",
"### Senses:\n",
"\n",
"* A South African proteaceous tree\n",
"* The tough wood of this tree, used for making wagon wheels\n",
"\n",
"### Synonyms:\n",
"\n",
"* waboom\n",
"* wagon tree\n",
"\n",
"### Antonyms:\n",
"\n",
"\n",
" \n",
" "
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(display_info(\"wagenboom\"))"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"from enum import Enum\n",
"\n",
"class HintOrientation(Enum):\n",
" VERTICAL = 0\n",
" HORIZONTAL = 1\n",
" BOTH = 2\n",
" \n",
"class FieldType(Enum):\n",
" EMPTY = 0\n",
" HINT = 1\n",
" LETTER = 2\n",
"\n",
"class Field(object):\n",
" def __init__(self, field_type: FieldType = FieldType.EMPTY):\n",
" self._field_type = field_type\n",
" \n",
" def get_type(self) -> FieldType:\n",
" return self._field_type\n",
" \n",
" def get_content(self) -> str:\n",
" return None\n",
"\n",
"class HintField(Field):\n",
" def __init__(self, horizontal_hint: str = None, vertical_hint: str = None):\n",
" super().__init__(field_type=FieldType.HINT)\n",
" \n",
" self._horizontal_hint = horizontal_hint\n",
" self._vertical_hint = vertical_hint\n",
" \n",
" def get_horizontal_hint(self) -> str:\n",
" return self._horizontal_hint\n",
" \n",
" def get_vertical_hint(self) -> str:\n",
" return self._vertical_hint\n",
" \n",
" def set_horizintal_hint(hint: str):\n",
" self._horizontal_hint = hint\n",
" \n",
" def set_vertical_hint(hint:str):\n",
" self._vertical_hint = hint\n",
"\n",
"class LetterField(Field):\n",
" def __init__(self, letter: str):\n",
" assert len(letter) <= 1\n",
" \n",
" super().__init__(field_type = FieldType.LETTER)\n",
" \n",
" self._letter = letter\n",
" self._revealed = False\n",
" \n",
" def get_content(self) -> str:\n",
" return self._letter\n",
" \n",
" def reveal(self):\n",
" self._revealed = True\n",
" \n",
" def is_revealed(self) -> bool:\n",
" return self._revealed\n",
"\n",
"class Grid(object):\n",
" def __init__(self, width: int, height: int, density = 0.5):\n",
" self._width = width\n",
" self._height = height\n",
" self._density = density\n",
" self._grid = []\n",
" self._build_grid()\n",
" \n",
" def _build_grid(self):\n",
" raw_grid, word_infos = create_word_grid(self._width - 1, self._height - 1, target_density=self._density)\n",
" \n",
" # note: we will append an additional row and column, to have enough space to place hint fields\n",
" \n",
" self._grid = [[Field()] * self._width] # initialize with empty row\n",
" \n",
" for y in range(self._height):\n",
" row = [Field()] # initialize row with empty column\n",
" for x in range(self._width):\n",
" raw_cell = raw_grid[y-1,x-1]\n",
" if raw_cell == \" \":\n",
" row.append(Field())\n",
" else:\n",
" row.append(LetterField(raw_cell))\n",
" \n",
" self._grid.append(row)\n",
" \n",
" # place hint fields:\n",
" for word, info in word_infos.items():\n",
" y,x = info.get_hint_location()\n",
" # correct offset\n",
" y += 1\n",
" x += 1\n",
" \n",
" cell = self._grid[y][x]\n",
" \n",
" # check if we already have a hint here:\n",
" if cell.get_type() == FieldType.HINT:\n",
" if info.is_vertical():\n",
" cell.set_vertical_hint(info.get_hint())\n",
" else:\n",
" cell.set_horizintal_hint(info.get_hint())\n",
" elif cell.get_type() == FieldType.LETTER:\n",
" # edge case: a word has \"eaten up\" another one, skipping that case\n",
" pass\n",
" \n",
" else:\n",
" if info.is_vertical():\n",
" self._grid[y][x] = HintField(vertical_hint=info.get_hint())\n",
" else:\n",
" self._grid[y][x] = HintField(horizontal_hint=info.get_hint())\n",
"\n",
" \n",
"class Crossword(object):\n",
" def __init__(self, width: int, height: int, database: dict):\n",
" self._width = width\n",
" self._height = height\n",
" self._database = database\n",
" self._grid = Grid(width, height)\n",
" \n",
" \n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"209\n"
]
}
],
"source": [
"cw = Crossword(16*3, 9*3, english_vocab_db)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[[<__main__.HintField at 0x7f207d65a820>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.HintField at 0x7f207d64a280>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.HintField at 0x7f207ef54eb0>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>,\n",
" <__main__.Field at 0x7f207eadd460>],\n",
" [<__main__.Field at 0x7f207eadd100>,\n",
" <__main__.Field at 0x7f207eadd4f0>,\n",
" <__main__.LetterField at 0x7f207eadd580>,\n",
" <__main__.LetterField at 0x7f207ed42970>,\n",
" <__main__.LetterField at 0x7f207ed42790>,\n",
" <__main__.LetterField at 0x7f207ed42130>,\n",
" <__main__.Field at 0x7f207ed42190>,\n",
" <__main__.Field at 0x7f207ed42370>,\n",
" <__main__.Field at 0x7f207ed423a0>,\n",
" <__main__.LetterField at 0x7f207ed42160>,\n",
" <__main__.LetterField at 0x7f207ed42610>,\n",
" <__main__.LetterField at 0x7f207ed42490>,\n",
" <__main__.LetterField at 0x7f207ed42670>,\n",
" <__main__.LetterField at 0x7f207ed42a90>,\n",
" <__main__.HintField at 0x7f207ef5dee0>,\n",
" <__main__.LetterField at 0x7f207ed42ac0>,\n",
" <__main__.Field at 0x7f207ed427f0>,\n",
" <__main__.Field at 0x7f207ed42dc0>,\n",
" <__main__.Field at 0x7f207ed42be0>,\n",
" <__main__.Field at 0x7f207ed429d0>,\n",
" <__main__.Field at 0x7f207ed42f10>,\n",
" <__main__.HintField at 0x7f207ebfc6a0>,\n",
" <__main__.Field at 0x7f207ed42a00>,\n",
" <__main__.LetterField at 0x7f207ed424f0>,\n",
" <__main__.LetterField at 0x7f207ed42520>,\n",
" <__main__.LetterField at 0x7f207ed42d60>,\n",
" <__main__.LetterField at 0x7f207ed42c10>,\n",
" <__main__.LetterField at 0x7f207ed42f40>,\n",
" <__main__.LetterField at 0x7f207ec58e80>,\n",
" <__main__.LetterField at 0x7f207ec58f10>,\n",
" <__main__.HintField at 0x7f207d6484c0>,\n",
" <__main__.HintField at 0x7f207d665fa0>,\n",
" <__main__.Field at 0x7f207ec58e20>,\n",
" <__main__.HintField at 0x7f207d65fb80>,\n",
" <__main__.Field at 0x7f207ec58c70>,\n",
" <__main__.Field at 0x7f207ec58df0>,\n",
" <__main__.Field at 0x7f207ec58b20>,\n",
" <__main__.LetterField at 0x7f207ec58bb0>,\n",
" <__main__.Field at 0x7f207ec58a90>,\n",
" <__main__.HintField at 0x7f207ed5a910>,\n",
" <__main__.Field at 0x7f207ec58b80>,\n",
" <__main__.LetterField at 0x7f207ec58b50>,\n",
" <__main__.Field at 0x7f207ec58d00>,\n",
" <__main__.Field at 0x7f207ec58c40>,\n",
" <__main__.Field at 0x7f207ec588e0>,\n",
" <__main__.Field at 0x7f207ec587c0>,\n",
" <__main__.Field at 0x7f207ec58700>,\n",
" <__main__.Field at 0x7f207ec58790>,\n",
" <__main__.Field at 0x7f207ec58940>],\n",
" [<__main__.Field at 0x7f207eadd0a0>,\n",
" <__main__.Field at 0x7f207ec58760>,\n",
" <__main__.LetterField at 0x7f207ec58dc0>,\n",
" <__main__.LetterField at 0x7f207ebfcdc0>,\n",
" <__main__.LetterField at 0x7f207ebfc1f0>,\n",
" <__main__.LetterField at 0x7f207ebfc790>,\n",
" <__main__.LetterField at 0x7f207ebfc280>,\n",
" <__main__.LetterField at 0x7f207ebfc760>,\n",
" <__main__.Field at 0x7f207ebfc5b0>,\n",
" <__main__.HintField at 0x7f207d66fb80>,\n",
" <__main__.Field at 0x7f207ebfc220>,\n",
" <__main__.LetterField at 0x7f207ebfc910>,\n",
" <__main__.LetterField at 0x7f207ebfce80>,\n",
" <__main__.LetterField at 0x7f207ebfcac0>,\n",
" <__main__.LetterField at 0x7f207ebfc100>,\n",
" <__main__.LetterField at 0x7f207ebfceb0>,\n",
" <__main__.LetterField at 0x7f207ebfc4c0>,\n",
" <__main__.LetterField at 0x7f207ebfca00>,\n",
" <__main__.LetterField at 0x7f207ebfcfa0>,\n",
" <__main__.HintField at 0x7f207ebe9250>,\n",
" <__main__.Field at 0x7f207ebfc190>,\n",
" <__main__.Field at 0x7f207ebfc850>,\n",
" <__main__.Field at 0x7f207ebfc8b0>,\n",
" <__main__.Field at 0x7f207ebfccd0>,\n",
" <__main__.LetterField at 0x7f207ebfcd00>,\n",
" <__main__.Field at 0x7f207ebfcca0>,\n",
" <__main__.LetterField at 0x7f207ebfcc10>,\n",
" <__main__.Field at 0x7f207ebfc130>,\n",
" <__main__.Field at 0x7f207ebfcee0>,\n",
" <__main__.LetterField at 0x7f207ebfce50>,\n",
" <__main__.Field at 0x7f207ebfce20>,\n",
" <__main__.LetterField at 0x7f207ebfcf40>,\n",
" <__main__.Field at 0x7f207ebfc880>,\n",
" <__main__.Field at 0x7f207ebfc040>,\n",
" <__main__.LetterField at 0x7f207ebfcd60>,\n",
" <__main__.Field at 0x7f207ebfc970>,\n",
" <__main__.Field at 0x7f207ebfcdf0>,\n",
" <__main__.Field at 0x7f207ed5a880>,\n",
" <__main__.HintField at 0x7f207d66fc40>,\n",
" <__main__.LetterField at 0x7f207f13f0d0>,\n",
" <__main__.LetterField at 0x7f207f13f610>,\n",
" <__main__.LetterField at 0x7f207f13f0a0>,\n",
" <__main__.LetterField at 0x7f207ec74100>,\n",
" <__main__.LetterField at 0x7f207ec740d0>,\n",
" <__main__.LetterField at 0x7f207ec74130>,\n",
" <__main__.Field at 0x7f207ec74580>,\n",
" <__main__.Field at 0x7f207ec741f0>,\n",
" <__main__.Field at 0x7f207ec74340>,\n",
" <__main__.Field at 0x7f207ec74490>],\n",
" [<__main__.Field at 0x7f207ec58850>,\n",
" <__main__.HintField at 0x7f207ebfca90>,\n",
" <__main__.Field at 0x7f207ed75250>,\n",
" <__main__.Field at 0x7f207ed75ee0>,\n",
" <__main__.LetterField at 0x7f207ed75f40>,\n",
" <__main__.Field at 0x7f207ed75fa0>,\n",
" <__main__.LetterField at 0x7f207ed75c10>,\n",
" <__main__.Field at 0x7f207ed75400>,\n",
" <__main__.LetterField at 0x7f207ed754c0>,\n",
" <__main__.Field at 0x7f207ed75430>,\n",
" <__main__.Field at 0x7f207ed753d0>,\n",
" <__main__.Field at 0x7f207ed75a60>,\n",
" <__main__.Field at 0x7f207ed75bb0>,\n",
" <__main__.LetterField at 0x7f207ed75b20>,\n",
" <__main__.Field at 0x7f207ed75a90>,\n",
" <__main__.LetterField at 0x7f207ed75790>,\n",
" <__main__.Field at 0x7f207ed757c0>,\n",
" <__main__.Field at 0x7f207ed757f0>,\n",
" <__main__.Field at 0x7f207ed75eb0>,\n",
" <__main__.Field at 0x7f207ed75e80>,\n",
" <__main__.LetterField at 0x7f207ed75dc0>,\n",
" <__main__.Field at 0x7f207ed75d90>,\n",
" <__main__.Field at 0x7f207ed75820>,\n",
" <__main__.LetterField at 0x7f207ed75d60>,\n",
" <__main__.LetterField at 0x7f207ed75d00>,\n",
" <__main__.LetterField at 0x7f207eae4160>,\n",
" <__main__.LetterField at 0x7f207eae4130>,\n",
" <__main__.LetterField at 0x7f207eae44c0>,\n",
" <__main__.LetterField at 0x7f207eae46a0>,\n",
" <__main__.LetterField at 0x7f207eae4af0>,\n",
" <__main__.LetterField at 0x7f207eae4a60>,\n",
" <__main__.LetterField at 0x7f207eae4fa0>,\n",
" <__main__.Field at 0x7f207eae4c70>,\n",
" <__main__.LetterField at 0x7f207eae4700>,\n",
" <__main__.LetterField at 0x7f207eae4d00>,\n",
" <__main__.LetterField at 0x7f207eae4430>,\n",
" <__main__.LetterField at 0x7f207eae4d90>,\n",
" <__main__.LetterField at 0x7f207eae4ac0>,\n",
" <__main__.LetterField at 0x7f207ef54970>,\n",
" <__main__.Field at 0x7f207ef549a0>,\n",
" <__main__.LetterField at 0x7f207ef54e80>,\n",
" <__main__.Field at 0x7f207ef548e0>,\n",
" <__main__.LetterField at 0x7f207ef54850>,\n",
" <__main__.HintField at 0x7f207d64ec40>,\n",
" <__main__.HintField at 0x7f207d65ca00>,\n",
" <__main__.Field at 0x7f207ef54f70>,\n",
" <__main__.HintField at 0x7f207d65fe80>,\n",
" <__main__.Field at 0x7f207ef54fd0>,\n",
" <__main__.Field at 0x7f207ef54c40>],\n",
" [<__main__.Field at 0x7f207ed752b0>,\n",
" <__main__.Field at 0x7f207ef54d30>,\n",
" <__main__.LetterField at 0x7f207ef54cd0>,\n",
" <__main__.Field at 0x7f207ef54af0>,\n",
" <__main__.LetterField at 0x7f207ef54a00>,\n",
" <__main__.Field at 0x7f207ef54a60>,\n",
" <__main__.LetterField at 0x7f207ef54bb0>,\n",
" <__main__.Field at 0x7f207ef54b50>,\n",
" <__main__.LetterField at 0x7f207ef544f0>,\n",
" <__main__.Field at 0x7f207ef54c70>,\n",
" <__main__.HintField at 0x7f207eadd5e0>,\n",
" <__main__.LetterField at 0x7f207ef546d0>,\n",
" <__main__.LetterField at 0x7f207ef54760>,\n",
" <__main__.LetterField at 0x7f207ef54730>,\n",
" <__main__.LetterField at 0x7f207ef546a0>,\n",
" <__main__.LetterField at 0x7f207ef54c10>,\n",
" <__main__.LetterField at 0x7f207ef542e0>,\n",
" <__main__.LetterField at 0x7f207ef54610>,\n",
" <__main__.Field at 0x7f207ef545e0>,\n",
" <__main__.LetterField at 0x7f207ef54670>,\n",
" <__main__.LetterField at 0x7f207ef54640>,\n",
" <__main__.LetterField at 0x7f207f153af0>,\n",
" <__main__.LetterField at 0x7f207f153100>,\n",
" <__main__.Field at 0x7f207f1535e0>,\n",
" <__main__.LetterField at 0x7f207f153070>,\n",
" <__main__.Field at 0x7f207f153340>,\n",
" <__main__.LetterField at 0x7f207f153190>,\n",
" <__main__.Field at 0x7f207f153820>,\n",
" <__main__.Field at 0x7f207f153220>,\n",
" <__main__.LetterField at 0x7f207f153880>,\n",
" <__main__.Field at 0x7f207f153d00>,\n",
" <__main__.LetterField at 0x7f207f1539d0>,\n",
" <__main__.Field at 0x7f207f153550>,\n",
" <__main__.Field at 0x7f207eae0670>,\n",
" <__main__.LetterField at 0x7f207ef45c40>,\n",
" <__main__.Field at 0x7f207ef45bb0>,\n",
" <__main__.Field at 0x7f207ef45820>,\n",
" <__main__.Field at 0x7f207ef45580>,\n",
" <__main__.Field at 0x7f207ef45340>,\n",
" <__main__.Field at 0x7f207ef45be0>,\n",
" <__main__.LetterField at 0x7f207ebe25e0>,\n",
" <__main__.LetterField at 0x7f207ebe24f0>,\n",
" <__main__.LetterField at 0x7f207ebe2640>,\n",
" <__main__.LetterField at 0x7f207ebe2ca0>,\n",
" <__main__.Field at 0x7f207ebe28e0>,\n",
" <__main__.LetterField at 0x7f207ebe2f40>,\n",
" <__main__.Field at 0x7f207ebe2910>,\n",
" <__main__.LetterField at 0x7f207ebe23a0>,\n",
" <__main__.Field at 0x7f207ebe2fa0>],\n",
" [<__main__.Field at 0x7f207ef54d60>,\n",
" <__main__.LetterField at 0x7f207ebe2880>,\n",
" <__main__.LetterField at 0x7f207ebe24c0>,\n",
" <__main__.HintField at 0x7f207d6612e0>,\n",
" <__main__.Field at 0x7f207ebe23d0>,\n",
" <__main__.Field at 0x7f207ebe2b50>,\n",
" <__main__.LetterField at 0x7f207ebe2a30>,\n",
" <__main__.Field at 0x7f207ebe2f10>,\n",
" <__main__.LetterField at 0x7f207ebe2610>,\n",
" <__main__.LetterField at 0x7f207ebe2be0>,\n",
" <__main__.LetterField at 0x7f207ebe2bb0>,\n",
" <__main__.Field at 0x7f207ebe2a90>,\n",
" <__main__.Field at 0x7f207ebe2d00>,\n",
" <__main__.LetterField at 0x7f207ebe2b80>,\n",
" <__main__.Field at 0x7f207ebe27f0>,\n",
" <__main__.HintField at 0x7f207d657460>,\n",
" <__main__.Field at 0x7f207ebe2df0>,\n",
" <__main__.Field at 0x7f207ebf3dc0>,\n",
" <__main__.HintField at 0x7f207ef54b20>,\n",
" <__main__.Field at 0x7f207ebf3550>,\n",
" <__main__.LetterField at 0x7f207ebf3670>,\n",
" <__main__.Field at 0x7f207ebf36a0>,\n",
" <__main__.Field at 0x7f207ebf3610>,\n",
" <__main__.Field at 0x7f207ebf3370>,\n",
" <__main__.LetterField at 0x7f207ebf3340>,\n",
" <__main__.Field at 0x7f207ebf3820>,\n",
" <__main__.LetterField at 0x7f207ebf3850>,\n",
" <__main__.Field at 0x7f207ebf33d0>,\n",
" <__main__.Field at 0x7f207ebf3fa0>,\n",
" <__main__.Field at 0x7f207ebf3f70>,\n",
" <__main__.LetterField at 0x7f207ebf3fd0>,\n",
" <__main__.LetterField at 0x7f207ebf3f10>,\n",
" <__main__.LetterField at 0x7f207ebf3d00>,\n",
" <__main__.LetterField at 0x7f207ebf31f0>,\n",
" <__main__.LetterField at 0x7f207ebf31c0>,\n",
" <__main__.LetterField at 0x7f207ebf3280>,\n",
" <__main__.LetterField at 0x7f207ebf3100>,\n",
" <__main__.LetterField at 0x7f207ebf3730>,\n",
" <__main__.LetterField at 0x7f207ebf32b0>,\n",
" <__main__.Field at 0x7f207ef4a580>,\n",
" <__main__.LetterField at 0x7f207ef4ab50>,\n",
" <__main__.Field at 0x7f207ef4a8b0>,\n",
" <__main__.LetterField at 0x7f207ef4afd0>,\n",
" <__main__.Field at 0x7f207ef4a370>,\n",
" <__main__.Field at 0x7f207ef4a5b0>,\n",
" <__main__.LetterField at 0x7f207ef4a490>,\n",
" <__main__.LetterField at 0x7f207ef4a5e0>,\n",
" <__main__.LetterField at 0x7f207ef4a7c0>,\n",
" <__main__.LetterField at 0x7f207ef4a1f0>],\n",
" [<__main__.HintField at 0x7f207ed42a30>,\n",
" <__main__.Field at 0x7f207ef4adc0>,\n",
" <__main__.LetterField at 0x7f207ef4ad60>,\n",
" <__main__.Field at 0x7f207ef4aaf0>,\n",
" <__main__.LetterField at 0x7f207ef4adf0>,\n",
" <__main__.Field at 0x7f207ebeeb80>,\n",
" <__main__.LetterField at 0x7f207ebee550>,\n",
" <__main__.Field at 0x7f207ebeeca0>,\n",
" <__main__.LetterField at 0x7f207ebee1c0>,\n",
" <__main__.Field at 0x7f207ebeec70>,\n",
" <__main__.HintField at 0x7f207d6512e0>,\n",
" <__main__.Field at 0x7f207ebee160>,\n",
" <__main__.LetterField at 0x7f207ebeef40>,\n",
" <__main__.LetterField at 0x7f207ebee2b0>,\n",
" <__main__.LetterField at 0x7f207ebee070>,\n",
" <__main__.LetterField at 0x7f207ebee7c0>,\n",
" <__main__.LetterField at 0x7f207ebee280>,\n",
" <__main__.LetterField at 0x7f207ebee850>,\n",
" <__main__.LetterField at 0x7f207ebeef70>,\n",
" <__main__.LetterField at 0x7f207ebeedc0>,\n",
" <__main__.LetterField at 0x7f207ebeefd0>,\n",
" <__main__.LetterField at 0x7f207ebeedf0>,\n",
" <__main__.LetterField at 0x7f207ebeed00>,\n",
" <__main__.LetterField at 0x7f207ebee940>,\n",
" <__main__.LetterField at 0x7f207ebee430>,\n",
" <__main__.Field at 0x7f207ebeecd0>,\n",
" <__main__.LetterField at 0x7f207ebee640>,\n",
" <__main__.Field at 0x7f207ebee490>,\n",
" <__main__.Field at 0x7f207ebee460>,\n",
" <__main__.Field at 0x7f207ebe99a0>,\n",
" <__main__.Field at 0x7f207ebe99d0>,\n",
" <__main__.Field at 0x7f207ebe98b0>,\n",
" <__main__.Field at 0x7f207ebe92b0>,\n",
" <__main__.HintField at 0x7f207d64b7c0>,\n",
" <__main__.LetterField at 0x7f207ebe9040>,\n",
" <__main__.HintField at 0x7f207d650160>,\n",
" <__main__.Field at 0x7f207ebe9640>,\n",
" <__main__.HintField at 0x7f207ed42af0>,\n",
" <__main__.Field at 0x7f207ebe9490>,\n",
" <__main__.HintField at 0x7f207ef5ddf0>,\n",
" <__main__.LetterField at 0x7f207ebe9820>,\n",
" <__main__.Field at 0x7f207ebe96d0>,\n",
" <__main__.LetterField at 0x7f207ebe9340>,\n",
" <__main__.HintField at 0x7f207d6626a0>,\n",
" <__main__.Field at 0x7f207ef5d2b0>,\n",
" <__main__.LetterField at 0x7f207ef5d940>,\n",
" <__main__.Field at 0x7f207ef5d8b0>,\n",
" <__main__.LetterField at 0x7f207ef5dc70>,\n",
" <__main__.Field at 0x7f207ef5db50>],\n",
" [<__main__.Field at 0x7f207ef4ab20>,\n",
" <__main__.Field at 0x7f207ef5d610>,\n",
" <__main__.LetterField at 0x7f207ef5d7f0>,\n",
" <__main__.Field at 0x7f207ef5da90>,\n",
" <__main__.LetterField at 0x7f207ef5d370>,\n",
" <__main__.Field at 0x7f207ef5d9d0>,\n",
" <__main__.LetterField at 0x7f207ef5d4f0>,\n",
" <__main__.Field at 0x7f207ef5d3a0>,\n",
" <__main__.LetterField at 0x7f207ef5d400>,\n",
" <__main__.LetterField at 0x7f207ef5d430>,\n",
" <__main__.LetterField at 0x7f207ef5dd30>,\n",
" <__main__.LetterField at 0x7f207ef5df10>,\n",
" <__main__.Field at 0x7f207ef5d250>,\n",
" <__main__.HintField at 0x7f207ec58f40>,\n",
" <__main__.Field at 0x7f207ef5dd90>,\n",
" <__main__.Field at 0x7f207ef5d280>,\n",
" <__main__.LetterField at 0x7f207ef5de20>,\n",
" <__main__.Field at 0x7f207ef5de80>,\n",
" <__main__.Field at 0x7f207ef5db20>,\n",
" <__main__.LetterField at 0x7f207ef5dac0>,\n",
" <__main__.Field at 0x7f207ef5dca0>,\n",
" <__main__.Field at 0x7f207ef5df70>,\n",
" <__main__.Field at 0x7f207ef5d070>,\n",
" <__main__.Field at 0x7f207ef5d130>,\n",
" <__main__.Field at 0x7f207ef5d4c0>,\n",
" <__main__.LetterField at 0x7f207eaf1550>,\n",
" <__main__.Field at 0x7f207eaf1040>,\n",
" <__main__.LetterField at 0x7f207eaf1820>,\n",
" <__main__.Field at 0x7f207eaf15e0>,\n",
" <__main__.Field at 0x7f207eaf1340>,\n",
" <__main__.Field at 0x7f207eaf1fd0>,\n",
" <__main__.Field at 0x7f207eaf1610>,\n",
" <__main__.Field at 0x7f207eaf1bb0>,\n",
" <__main__.Field at 0x7f207d648040>,\n",
" <__main__.Field at 0x7f207d6480a0>,\n",
" <__main__.Field at 0x7f207d648100>,\n",
" <__main__.LetterField at 0x7f207d648160>,\n",
" <__main__.Field at 0x7f207d6481c0>,\n",
" <__main__.LetterField at 0x7f207d648220>,\n",
" <__main__.Field at 0x7f207d648280>,\n",
" <__main__.LetterField at 0x7f207d6482e0>,\n",
" <__main__.Field at 0x7f207d648340>,\n",
" <__main__.LetterField at 0x7f207d6483a0>,\n",
" <__main__.Field at 0x7f207d648400>,\n",
" <__main__.LetterField at 0x7f207d648460>,\n",
" <__main__.HintField at 0x7f207ed75310>,\n",
" <__main__.Field at 0x7f207d648520>,\n",
" <__main__.LetterField at 0x7f207d648580>,\n",
" <__main__.Field at 0x7f207d6485e0>],\n",
" [<__main__.HintField at 0x7f207d657940>,\n",
" <__main__.Field at 0x7f207d648670>,\n",
" <__main__.LetterField at 0x7f207d648700>,\n",
" <__main__.LetterField at 0x7f207d648760>,\n",
" <__main__.LetterField at 0x7f207d6487c0>,\n",
" <__main__.LetterField at 0x7f207d648820>,\n",
" <__main__.LetterField at 0x7f207d648880>,\n",
" <__main__.LetterField at 0x7f207d6488e0>,\n",
" <__main__.Field at 0x7f207d648940>,\n",
" <__main__.LetterField at 0x7f207d6489a0>,\n",
" <__main__.HintField at 0x7f207ebf3ac0>,\n",
" <__main__.Field at 0x7f207d648a60>,\n",
" <__main__.LetterField at 0x7f207d648ac0>,\n",
" <__main__.LetterField at 0x7f207d648b20>,\n",
" <__main__.LetterField at 0x7f207d648b80>,\n",
" <__main__.Field at 0x7f207d648be0>,\n",
" <__main__.LetterField at 0x7f207d648c40>,\n",
" <__main__.LetterField at 0x7f207d648ca0>,\n",
" <__main__.LetterField at 0x7f207d648d00>,\n",
" <__main__.LetterField at 0x7f207d648d60>,\n",
" <__main__.LetterField at 0x7f207d648dc0>,\n",
" <__main__.LetterField at 0x7f207d648e20>,\n",
" <__main__.LetterField at 0x7f207d648e80>,\n",
" <__main__.LetterField at 0x7f207d648ee0>,\n",
" <__main__.LetterField at 0x7f207d648f40>,\n",
" <__main__.LetterField at 0x7f207d648fa0>,\n",
" <__main__.Field at 0x7f207d64a040>,\n",
" <__main__.LetterField at 0x7f207d64a0a0>,\n",
" <__main__.HintField at 0x7f207d64b0a0>,\n",
" <__main__.Field at 0x7f207d64a160>,\n",
" <__main__.Field at 0x7f207d64a1c0>,\n",
" <__main__.Field at 0x7f207d64a220>,\n",
" <__main__.HintField at 0x7f207ebe2d30>,\n",
" <__main__.HintField at 0x7f207d6595e0>,\n",
" <__main__.Field at 0x7f207d64a340>,\n",
" <__main__.LetterField at 0x7f207d64a3a0>,\n",
" <__main__.LetterField at 0x7f207d64a400>,\n",
" <__main__.LetterField at 0x7f207d64a460>,\n",
" <__main__.LetterField at 0x7f207d64a4c0>,\n",
" <__main__.LetterField at 0x7f207d64a520>,\n",
" <__main__.Field at 0x7f207d64a580>,\n",
" <__main__.LetterField at 0x7f207d64a5e0>,\n",
" <__main__.LetterField at 0x7f207d64a640>,\n",
" <__main__.LetterField at 0x7f207d64a6a0>,\n",
" <__main__.LetterField at 0x7f207d64a700>,\n",
" <__main__.LetterField at 0x7f207d64a760>,\n",
" <__main__.LetterField at 0x7f207d64a7c0>,\n",
" <__main__.LetterField at 0x7f207d64a820>,\n",
" <__main__.Field at 0x7f207d64a880>],\n",
" [<__main__.Field at 0x7f207d6486a0>,\n",
" <__main__.Field at 0x7f207d64a910>,\n",
" <__main__.LetterField at 0x7f207d64a9a0>,\n",
" <__main__.Field at 0x7f207d64aa00>,\n",
" <__main__.LetterField at 0x7f207d64aa60>,\n",
" <__main__.Field at 0x7f207d64aac0>,\n",
" <__main__.LetterField at 0x7f207d64ab20>,\n",
" <__main__.Field at 0x7f207d64ab80>,\n",
" <__main__.Field at 0x7f207d64abe0>,\n",
" <__main__.LetterField at 0x7f207d64ac40>,\n",
" <__main__.Field at 0x7f207d64aca0>,\n",
" <__main__.LetterField at 0x7f207d64ad00>,\n",
" <__main__.Field at 0x7f207d64ad60>,\n",
" <__main__.Field at 0x7f207d64adc0>,\n",
" <__main__.LetterField at 0x7f207d64ae20>,\n",
" <__main__.Field at 0x7f207d64ae80>,\n",
" <__main__.LetterField at 0x7f207d64aee0>,\n",
" <__main__.Field at 0x7f207d64af40>,\n",
" <__main__.Field at 0x7f207d64afa0>,\n",
" <__main__.LetterField at 0x7f207d64b040>,\n",
" <__main__.HintField at 0x7f207d659fa0>,\n",
" <__main__.Field at 0x7f207d64b100>,\n",
" <__main__.Field at 0x7f207d64b160>,\n",
" <__main__.Field at 0x7f207d64b1c0>,\n",
" <__main__.Field at 0x7f207d64b220>,\n",
" <__main__.LetterField at 0x7f207d64b280>,\n",
" <__main__.Field at 0x7f207d64b2e0>,\n",
" <__main__.LetterField at 0x7f207d64b340>,\n",
" <__main__.Field at 0x7f207d64b3a0>,\n",
" <__main__.LetterField at 0x7f207d64b400>,\n",
" <__main__.LetterField at 0x7f207d64b460>,\n",
" <__main__.LetterField at 0x7f207d64b4c0>,\n",
" <__main__.Field at 0x7f207d64b520>,\n",
" <__main__.Field at 0x7f207d64b580>,\n",
" <__main__.LetterField at 0x7f207d64b5e0>,\n",
" <__main__.Field at 0x7f207d64b640>,\n",
" <__main__.LetterField at 0x7f207d64b6a0>,\n",
" <__main__.Field at 0x7f207d64b700>,\n",
" <__main__.LetterField at 0x7f207d64b760>,\n",
" <__main__.HintField at 0x7f207d6668e0>,\n",
" <__main__.Field at 0x7f207d64b820>,\n",
" <__main__.Field at 0x7f207d64b880>,\n",
" <__main__.Field at 0x7f207d64b8e0>,\n",
" <__main__.Field at 0x7f207d64b940>,\n",
" <__main__.LetterField at 0x7f207d64b9a0>,\n",
" <__main__.Field at 0x7f207d64ba00>,\n",
" <__main__.LetterField at 0x7f207d64ba60>,\n",
" <__main__.Field at 0x7f207d64bac0>,\n",
" <__main__.Field at 0x7f207d64bb20>],\n",
" [<__main__.Field at 0x7f207d64a940>,\n",
" <__main__.HintField at 0x7f207d651460>,\n",
" <__main__.LetterField at 0x7f207d64bc40>,\n",
" <__main__.LetterField at 0x7f207d64bca0>,\n",
" <__main__.LetterField at 0x7f207d64bd00>,\n",
" <__main__.LetterField at 0x7f207d64bd60>,\n",
" <__main__.LetterField at 0x7f207d64bdc0>,\n",
" <__main__.Field at 0x7f207d64be20>,\n",
" <__main__.Field at 0x7f207d64be80>,\n",
" <__main__.LetterField at 0x7f207d64bee0>,\n",
" <__main__.Field at 0x7f207d64bf40>,\n",
" <__main__.LetterField at 0x7f207d64bfa0>,\n",
" <__main__.LetterField at 0x7f207d64d040>,\n",
" <__main__.LetterField at 0x7f207d64d0a0>,\n",
" <__main__.LetterField at 0x7f207d64d100>,\n",
" <__main__.LetterField at 0x7f207d64d160>,\n",
" <__main__.LetterField at 0x7f207d64d1c0>,\n",
" <__main__.LetterField at 0x7f207d64d220>,\n",
" <__main__.LetterField at 0x7f207d64d280>,\n",
" <__main__.LetterField at 0x7f207d64d2e0>,\n",
" <__main__.LetterField at 0x7f207d64d340>,\n",
" <__main__.Field at 0x7f207d64d3a0>,\n",
" <__main__.Field at 0x7f207d64d400>,\n",
" <__main__.Field at 0x7f207d64d460>,\n",
" <__main__.Field at 0x7f207d64d4c0>,\n",
" <__main__.LetterField at 0x7f207d64d520>,\n",
" <__main__.Field at 0x7f207d64d580>,\n",
" <__main__.LetterField at 0x7f207d64d5e0>,\n",
" <__main__.Field at 0x7f207d64d640>,\n",
" <__main__.LetterField at 0x7f207d64d6a0>,\n",
" <__main__.Field at 0x7f207d64d700>,\n",
" <__main__.Field at 0x7f207d64d760>,\n",
" <__main__.LetterField at 0x7f207d64d7c0>,\n",
" <__main__.Field at 0x7f207d64d820>,\n",
" <__main__.LetterField at 0x7f207d64d880>,\n",
" <__main__.LetterField at 0x7f207d64d8e0>,\n",
" <__main__.LetterField at 0x7f207d64d940>,\n",
" <__main__.LetterField at 0x7f207d64d9a0>,\n",
" <__main__.LetterField at 0x7f207d64da00>,\n",
" <__main__.Field at 0x7f207d64da60>,\n",
" <__main__.LetterField at 0x7f207d64dac0>,\n",
" <__main__.HintField at 0x7f207d659160>,\n",
" <__main__.Field at 0x7f207d64db80>,\n",
" <__main__.Field at 0x7f207d64dbe0>,\n",
" <__main__.LetterField at 0x7f207d64dc40>,\n",
" <__main__.Field at 0x7f207d64dca0>,\n",
" <__main__.LetterField at 0x7f207d64dd00>,\n",
" <__main__.Field at 0x7f207d64dd60>,\n",
" <__main__.Field at 0x7f207d64ddc0>],\n",
" [<__main__.Field at 0x7f207d64bbe0>,\n",
" <__main__.Field at 0x7f207d64de50>,\n",
" <__main__.Field at 0x7f207d64dee0>,\n",
" <__main__.Field at 0x7f207d64df40>,\n",
" <__main__.LetterField at 0x7f207d64dfa0>,\n",
" <__main__.Field at 0x7f207d64e040>,\n",
" <__main__.LetterField at 0x7f207d64e0a0>,\n",
" <__main__.Field at 0x7f207d64e100>,\n",
" <__main__.Field at 0x7f207d64e160>,\n",
" <__main__.LetterField at 0x7f207d64e1c0>,\n",
" <__main__.Field at 0x7f207d64e220>,\n",
" <__main__.LetterField at 0x7f207d64e280>,\n",
" <__main__.Field at 0x7f207d64e2e0>,\n",
" <__main__.Field at 0x7f207d64e340>,\n",
" <__main__.LetterField at 0x7f207d64e3a0>,\n",
" <__main__.Field at 0x7f207d64e400>,\n",
" <__main__.LetterField at 0x7f207d64e460>,\n",
" <__main__.Field at 0x7f207d64e4c0>,\n",
" <__main__.Field at 0x7f207d64e520>,\n",
" <__main__.LetterField at 0x7f207d64e580>,\n",
" <__main__.Field at 0x7f207d64e5e0>,\n",
" <__main__.Field at 0x7f207d64e640>,\n",
" <__main__.LetterField at 0x7f207d64e6a0>,\n",
" <__main__.LetterField at 0x7f207d64e700>,\n",
" <__main__.LetterField at 0x7f207d64e760>,\n",
" <__main__.LetterField at 0x7f207d64e7c0>,\n",
" <__main__.LetterField at 0x7f207d64e820>,\n",
" <__main__.LetterField at 0x7f207d64e880>,\n",
" <__main__.LetterField at 0x7f207d64e8e0>,\n",
" <__main__.LetterField at 0x7f207d64e940>,\n",
" <__main__.LetterField at 0x7f207d64e9a0>,\n",
" <__main__.LetterField at 0x7f207d64ea00>,\n",
" <__main__.LetterField at 0x7f207d64ea60>,\n",
" <__main__.LetterField at 0x7f207d64eac0>,\n",
" <__main__.LetterField at 0x7f207d64eb20>,\n",
" <__main__.Field at 0x7f207d64eb80>,\n",
" <__main__.LetterField at 0x7f207d64ebe0>,\n",
" <__main__.HintField at 0x7f207d65aac0>,\n",
" <__main__.Field at 0x7f207d64eca0>,\n",
" <__main__.Field at 0x7f207d64ed00>,\n",
" <__main__.LetterField at 0x7f207d64ed60>,\n",
" <__main__.Field at 0x7f207d64edc0>,\n",
" <__main__.LetterField at 0x7f207d64ee20>,\n",
" <__main__.Field at 0x7f207d64ee80>,\n",
" <__main__.LetterField at 0x7f207d64eee0>,\n",
" <__main__.Field at 0x7f207d64ef40>,\n",
" <__main__.LetterField at 0x7f207d64efa0>,\n",
" <__main__.Field at 0x7f207d650040>,\n",
" <__main__.Field at 0x7f207d6500a0>],\n",
" [<__main__.Field at 0x7f207d64de80>,\n",
" <__main__.Field at 0x7f207d650130>,\n",
" <__main__.Field at 0x7f207d6501c0>,\n",
" <__main__.LetterField at 0x7f207d650220>,\n",
" <__main__.LetterField at 0x7f207d650280>,\n",
" <__main__.LetterField at 0x7f207d6502e0>,\n",
" <__main__.LetterField at 0x7f207d650340>,\n",
" <__main__.LetterField at 0x7f207d6503a0>,\n",
" <__main__.LetterField at 0x7f207d650400>,\n",
" <__main__.LetterField at 0x7f207d650460>,\n",
" <__main__.LetterField at 0x7f207d6504c0>,\n",
" <__main__.LetterField at 0x7f207d650520>,\n",
" <__main__.LetterField at 0x7f207d650580>,\n",
" <__main__.LetterField at 0x7f207d6505e0>,\n",
" <__main__.Field at 0x7f207d650640>,\n",
" <__main__.Field at 0x7f207d6506a0>,\n",
" <__main__.Field at 0x7f207d650700>,\n",
" <__main__.Field at 0x7f207d650760>,\n",
" <__main__.Field at 0x7f207d6507c0>,\n",
" <__main__.LetterField at 0x7f207d650820>,\n",
" <__main__.HintField at 0x7f207d64bbb0>,\n",
" <__main__.Field at 0x7f207d6508e0>,\n",
" <__main__.Field at 0x7f207d650940>,\n",
" <__main__.Field at 0x7f207d6509a0>,\n",
" <__main__.Field at 0x7f207d650a00>,\n",
" <__main__.Field at 0x7f207d650a60>,\n",
" <__main__.Field at 0x7f207d650ac0>,\n",
" <__main__.LetterField at 0x7f207d650b20>,\n",
" <__main__.Field at 0x7f207d650b80>,\n",
" <__main__.LetterField at 0x7f207d650be0>,\n",
" <__main__.Field at 0x7f207d650c40>,\n",
" <__main__.Field at 0x7f207d650ca0>,\n",
" <__main__.LetterField at 0x7f207d650d00>,\n",
" <__main__.Field at 0x7f207d650d60>,\n",
" <__main__.LetterField at 0x7f207d650dc0>,\n",
" <__main__.Field at 0x7f207d650e20>,\n",
" <__main__.Field at 0x7f207d650e80>,\n",
" <__main__.Field at 0x7f207d650ee0>,\n",
" <__main__.LetterField at 0x7f207d650f40>,\n",
" <__main__.Field at 0x7f207d650fa0>,\n",
" <__main__.LetterField at 0x7f207d651040>,\n",
" <__main__.LetterField at 0x7f207d6510a0>,\n",
" <__main__.LetterField at 0x7f207d651100>,\n",
" <__main__.LetterField at 0x7f207d651160>,\n",
" <__main__.LetterField at 0x7f207d6511c0>,\n",
" <__main__.Field at 0x7f207d651220>,\n",
" <__main__.LetterField at 0x7f207d651280>,\n",
" <__main__.HintField at 0x7f207ef54e20>,\n",
" <__main__.Field at 0x7f207d651340>],\n",
" [<__main__.HintField at 0x7f207ebe9580>,\n",
" <__main__.LetterField at 0x7f207d6513d0>,\n",
" <__main__.HintField at 0x7f207d65e400>,\n",
" <__main__.Field at 0x7f207d6514c0>,\n",
" <__main__.Field at 0x7f207d651520>,\n",
" <__main__.LetterField at 0x7f207d651580>,\n",
" <__main__.Field at 0x7f207d6515e0>,\n",
" <__main__.Field at 0x7f207d651640>,\n",
" <__main__.Field at 0x7f207d6516a0>,\n",
" <__main__.Field at 0x7f207d651700>,\n",
" <__main__.Field at 0x7f207d651760>,\n",
" <__main__.LetterField at 0x7f207d6517c0>,\n",
" <__main__.Field at 0x7f207d651820>,\n",
" <__main__.Field at 0x7f207d651880>,\n",
" <__main__.Field at 0x7f207d6518e0>,\n",
" <__main__.Field at 0x7f207d651940>,\n",
" <__main__.LetterField at 0x7f207d6519a0>,\n",
" <__main__.LetterField at 0x7f207d651a00>,\n",
" <__main__.LetterField at 0x7f207d651a60>,\n",
" <__main__.LetterField at 0x7f207d651ac0>,\n",
" <__main__.LetterField at 0x7f207d651b20>,\n",
" <__main__.LetterField at 0x7f207d651b80>,\n",
" <__main__.LetterField at 0x7f207d651be0>,\n",
" <__main__.LetterField at 0x7f207d651c40>,\n",
" <__main__.LetterField at 0x7f207d651ca0>,\n",
" <__main__.LetterField at 0x7f207d651d00>,\n",
" <__main__.Field at 0x7f207d651d60>,\n",
" <__main__.LetterField at 0x7f207d651dc0>,\n",
" <__main__.Field at 0x7f207d651e20>,\n",
" <__main__.LetterField at 0x7f207d651e80>,\n",
" <__main__.Field at 0x7f207d651ee0>,\n",
" <__main__.Field at 0x7f207d651f40>,\n",
" <__main__.LetterField at 0x7f207d651fa0>,\n",
" <__main__.Field at 0x7f207d654040>,\n",
" <__main__.LetterField at 0x7f207d6540a0>,\n",
" <__main__.LetterField at 0x7f207d654100>,\n",
" <__main__.LetterField at 0x7f207d654160>,\n",
" <__main__.LetterField at 0x7f207d6541c0>,\n",
" <__main__.LetterField at 0x7f207d654220>,\n",
" <__main__.LetterField at 0x7f207d654280>,\n",
" <__main__.Field at 0x7f207d6542e0>,\n",
" <__main__.Field at 0x7f207d654340>,\n",
" <__main__.LetterField at 0x7f207d6543a0>,\n",
" <__main__.Field at 0x7f207d654400>,\n",
" <__main__.Field at 0x7f207d654460>,\n",
" <__main__.Field at 0x7f207d6544c0>,\n",
" <__main__.LetterField at 0x7f207d654520>,\n",
" <__main__.Field at 0x7f207d654580>,\n",
" <__main__.LetterField at 0x7f207d6545e0>],\n",
" [<__main__.Field at 0x7f207d651400>,\n",
" <__main__.LetterField at 0x7f207d654670>,\n",
" <__main__.Field at 0x7f207d654700>,\n",
" <__main__.LetterField at 0x7f207d654760>,\n",
" <__main__.Field at 0x7f207d6547c0>,\n",
" <__main__.LetterField at 0x7f207d654820>,\n",
" <__main__.HintField at 0x7f207d648a00>,\n",
" <__main__.Field at 0x7f207d6548e0>,\n",
" <__main__.HintField at 0x7f207d65ff40>,\n",
" <__main__.Field at 0x7f207d6549a0>,\n",
" <__main__.Field at 0x7f207d654a00>,\n",
" <__main__.LetterField at 0x7f207d654a60>,\n",
" <__main__.Field at 0x7f207d654ac0>,\n",
" <__main__.Field at 0x7f207d654b20>,\n",
" <__main__.Field at 0x7f207d654b80>,\n",
" <__main__.Field at 0x7f207d654be0>,\n",
" <__main__.Field at 0x7f207d654c40>,\n",
" <__main__.Field at 0x7f207d654ca0>,\n",
" <__main__.Field at 0x7f207d654d00>,\n",
" <__main__.LetterField at 0x7f207d654d60>,\n",
" <__main__.Field at 0x7f207d654dc0>,\n",
" <__main__.LetterField at 0x7f207d654e20>,\n",
" <__main__.Field at 0x7f207d654e80>,\n",
" <__main__.Field at 0x7f207d654ee0>,\n",
" <__main__.Field at 0x7f207d654f40>,\n",
" <__main__.Field at 0x7f207d654fa0>,\n",
" <__main__.Field at 0x7f207d655040>,\n",
" <__main__.LetterField at 0x7f207d6550a0>,\n",
" <__main__.Field at 0x7f207d655100>,\n",
" <__main__.LetterField at 0x7f207d655160>,\n",
" <__main__.Field at 0x7f207d6551c0>,\n",
" <__main__.Field at 0x7f207d655220>,\n",
" <__main__.LetterField at 0x7f207d655280>,\n",
" <__main__.Field at 0x7f207d6552e0>,\n",
" <__main__.LetterField at 0x7f207d655340>,\n",
" <__main__.HintField at 0x7f207d659e80>,\n",
" <__main__.Field at 0x7f207d655400>,\n",
" <__main__.Field at 0x7f207d655460>,\n",
" <__main__.LetterField at 0x7f207d6554c0>,\n",
" <__main__.HintField at 0x7f207ebe2790>,\n",
" <__main__.Field at 0x7f207d655580>,\n",
" <__main__.Field at 0x7f207d6555e0>,\n",
" <__main__.LetterField at 0x7f207d655640>,\n",
" <__main__.LetterField at 0x7f207d6556a0>,\n",
" <__main__.LetterField at 0x7f207d655700>,\n",
" <__main__.LetterField at 0x7f207d655760>,\n",
" <__main__.LetterField at 0x7f207d6557c0>,\n",
" <__main__.Field at 0x7f207d655820>,\n",
" <__main__.LetterField at 0x7f207d655880>],\n",
" [<__main__.Field at 0x7f207d6546a0>,\n",
" <__main__.LetterField at 0x7f207d655910>,\n",
" <__main__.LetterField at 0x7f207d6559a0>,\n",
" <__main__.LetterField at 0x7f207d655a00>,\n",
" <__main__.Field at 0x7f207d655a60>,\n",
" <__main__.LetterField at 0x7f207d655ac0>,\n",
" <__main__.Field at 0x7f207d655b20>,\n",
" <__main__.LetterField at 0x7f207d655b80>,\n",
" <__main__.LetterField at 0x7f207d655be0>,\n",
" <__main__.LetterField at 0x7f207d655c40>,\n",
" <__main__.LetterField at 0x7f207d655ca0>,\n",
" <__main__.LetterField at 0x7f207d655d00>,\n",
" <__main__.LetterField at 0x7f207d655d60>,\n",
" <__main__.LetterField at 0x7f207d655dc0>,\n",
" <__main__.LetterField at 0x7f207d655e20>,\n",
" <__main__.LetterField at 0x7f207d655e80>,\n",
" <__main__.LetterField at 0x7f207d655ee0>,\n",
" <__main__.LetterField at 0x7f207d655f40>,\n",
" <__main__.Field at 0x7f207d655fa0>,\n",
" <__main__.LetterField at 0x7f207d657040>,\n",
" <__main__.LetterField at 0x7f207d6570a0>,\n",
" <__main__.LetterField at 0x7f207d657100>,\n",
" <__main__.LetterField at 0x7f207d657160>,\n",
" <__main__.LetterField at 0x7f207d6571c0>,\n",
" <__main__.LetterField at 0x7f207d657220>,\n",
" <__main__.LetterField at 0x7f207d657280>,\n",
" <__main__.LetterField at 0x7f207d6572e0>,\n",
" <__main__.LetterField at 0x7f207d657340>,\n",
" <__main__.Field at 0x7f207d6573a0>,\n",
" <__main__.LetterField at 0x7f207d657400>,\n",
" <__main__.HintField at 0x7f207d64a2e0>,\n",
" <__main__.Field at 0x7f207d6574c0>,\n",
" <__main__.LetterField at 0x7f207d657520>,\n",
" <__main__.Field at 0x7f207d657580>,\n",
" <__main__.LetterField at 0x7f207d6575e0>,\n",
" <__main__.Field at 0x7f207d657640>,\n",
" <__main__.LetterField at 0x7f207d6576a0>,\n",
" <__main__.Field at 0x7f207d657700>,\n",
" <__main__.LetterField at 0x7f207d657760>,\n",
" <__main__.Field at 0x7f207d6577c0>,\n",
" <__main__.LetterField at 0x7f207d657820>,\n",
" <__main__.Field at 0x7f207d657880>,\n",
" <__main__.LetterField at 0x7f207d6578e0>,\n",
" <__main__.HintField at 0x7f207d6553a0>,\n",
" <__main__.Field at 0x7f207d6579a0>,\n",
" <__main__.Field at 0x7f207d657a00>,\n",
" <__main__.Field at 0x7f207d657a60>,\n",
" <__main__.Field at 0x7f207d657ac0>,\n",
" <__main__.LetterField at 0x7f207d657b20>],\n",
" [<__main__.Field at 0x7f207d655940>,\n",
" <__main__.LetterField at 0x7f207d657bb0>,\n",
" <__main__.Field at 0x7f207d657c40>,\n",
" <__main__.LetterField at 0x7f207d657ca0>,\n",
" <__main__.LetterField at 0x7f207d657d00>,\n",
" <__main__.LetterField at 0x7f207d657d60>,\n",
" <__main__.Field at 0x7f207d657dc0>,\n",
" <__main__.LetterField at 0x7f207d657e20>,\n",
" <__main__.Field at 0x7f207d657e80>,\n",
" <__main__.LetterField at 0x7f207d657ee0>,\n",
" <__main__.Field at 0x7f207d657f40>,\n",
" <__main__.LetterField at 0x7f207d657fa0>,\n",
" <__main__.Field at 0x7f207d659040>,\n",
" <__main__.Field at 0x7f207d6590a0>,\n",
" <__main__.Field at 0x7f207d659100>,\n",
" <__main__.HintField at 0x7f207d655520>,\n",
" <__main__.Field at 0x7f207d6591c0>,\n",
" <__main__.Field at 0x7f207d659220>,\n",
" <__main__.LetterField at 0x7f207d659280>,\n",
" <__main__.Field at 0x7f207d6592e0>,\n",
" <__main__.Field at 0x7f207d659340>,\n",
" <__main__.LetterField at 0x7f207d6593a0>,\n",
" <__main__.Field at 0x7f207d659400>,\n",
" <__main__.Field at 0x7f207d659460>,\n",
" <__main__.Field at 0x7f207d6594c0>,\n",
" <__main__.Field at 0x7f207d659520>,\n",
" <__main__.Field at 0x7f207d659580>,\n",
" <__main__.HintField at 0x7f207d64a100>,\n",
" <__main__.Field at 0x7f207d659640>,\n",
" <__main__.LetterField at 0x7f207d6596a0>,\n",
" <__main__.Field at 0x7f207d659700>,\n",
" <__main__.LetterField at 0x7f207d659760>,\n",
" <__main__.Field at 0x7f207d6597c0>,\n",
" <__main__.Field at 0x7f207d659820>,\n",
" <__main__.LetterField at 0x7f207d659880>,\n",
" <__main__.Field at 0x7f207d6598e0>,\n",
" <__main__.LetterField at 0x7f207d659940>,\n",
" <__main__.Field at 0x7f207d6599a0>,\n",
" <__main__.Field at 0x7f207d659a00>,\n",
" <__main__.Field at 0x7f207d659a60>,\n",
" <__main__.LetterField at 0x7f207d659ac0>,\n",
" <__main__.Field at 0x7f207d659b20>,\n",
" <__main__.LetterField at 0x7f207d659b80>,\n",
" <__main__.Field at 0x7f207d659be0>,\n",
" <__main__.LetterField at 0x7f207d659c40>,\n",
" <__main__.Field at 0x7f207d659ca0>,\n",
" <__main__.Field at 0x7f207d659d00>,\n",
" <__main__.Field at 0x7f207d659d60>,\n",
" <__main__.LetterField at 0x7f207d659dc0>],\n",
" [<__main__.Field at 0x7f207d657be0>,\n",
" <__main__.LetterField at 0x7f207d659e50>,\n",
" <__main__.Field at 0x7f207d659ee0>,\n",
" <__main__.LetterField at 0x7f207d659f40>,\n",
" <__main__.HintField at 0x7f207d650880>,\n",
" <__main__.LetterField at 0x7f207d65a040>,\n",
" <__main__.LetterField at 0x7f207d65a0a0>,\n",
" <__main__.LetterField at 0x7f207d65a100>,\n",
" <__main__.Field at 0x7f207d65a160>,\n",
" <__main__.LetterField at 0x7f207d65a1c0>,\n",
" <__main__.LetterField at 0x7f207d65a220>,\n",
" <__main__.LetterField at 0x7f207d65a280>,\n",
" <__main__.LetterField at 0x7f207d65a2e0>,\n",
" <__main__.LetterField at 0x7f207d65a340>,\n",
" <__main__.LetterField at 0x7f207d65a3a0>,\n",
" <__main__.LetterField at 0x7f207d65a400>,\n",
" <__main__.LetterField at 0x7f207d65a460>,\n",
" <__main__.Field at 0x7f207d65a4c0>,\n",
" <__main__.LetterField at 0x7f207d65a520>,\n",
" <__main__.Field at 0x7f207d65a580>,\n",
" <__main__.Field at 0x7f207d65a5e0>,\n",
" <__main__.LetterField at 0x7f207d65a640>,\n",
" <__main__.LetterField at 0x7f207d65a6a0>,\n",
" <__main__.LetterField at 0x7f207d65a700>,\n",
" <__main__.LetterField at 0x7f207d65a760>,\n",
" <__main__.LetterField at 0x7f207d65a7c0>,\n",
" <__main__.HintField at 0x7f207d64db20>,\n",
" <__main__.Field at 0x7f207d65a880>,\n",
" <__main__.Field at 0x7f207d65a8e0>,\n",
" <__main__.LetterField at 0x7f207d65a940>,\n",
" <__main__.Field at 0x7f207d65a9a0>,\n",
" <__main__.LetterField at 0x7f207d65aa00>,\n",
" <__main__.Field at 0x7f207d65aa60>,\n",
" <__main__.HintField at 0x7f207d65c520>,\n",
" <__main__.LetterField at 0x7f207d65ab20>,\n",
" <__main__.LetterField at 0x7f207d65ab80>,\n",
" <__main__.LetterField at 0x7f207d65abe0>,\n",
" <__main__.LetterField at 0x7f207d65ac40>,\n",
" <__main__.LetterField at 0x7f207d65aca0>,\n",
" <__main__.LetterField at 0x7f207d65ad00>,\n",
" <__main__.LetterField at 0x7f207d65ad60>,\n",
" <__main__.LetterField at 0x7f207d65adc0>,\n",
" <__main__.LetterField at 0x7f207d65ae20>,\n",
" <__main__.Field at 0x7f207d65ae80>,\n",
" <__main__.LetterField at 0x7f207d65aee0>,\n",
" <__main__.LetterField at 0x7f207d65af40>,\n",
" <__main__.LetterField at 0x7f207d65afa0>,\n",
" <__main__.LetterField at 0x7f207d65c040>,\n",
" <__main__.LetterField at 0x7f207d65c0a0>],\n",
" [<__main__.HintField at 0x7f207ec58ac0>,\n",
" <__main__.Field at 0x7f207d65c130>,\n",
" <__main__.Field at 0x7f207d65c1c0>,\n",
" <__main__.LetterField at 0x7f207d65c220>,\n",
" <__main__.Field at 0x7f207d65c280>,\n",
" <__main__.Field at 0x7f207d65c2e0>,\n",
" <__main__.Field at 0x7f207d65c340>,\n",
" <__main__.LetterField at 0x7f207d65c3a0>,\n",
" <__main__.Field at 0x7f207d65c400>,\n",
" <__main__.Field at 0x7f207d65c460>,\n",
" <__main__.Field at 0x7f207d65c4c0>,\n",
" <__main__.HintField at 0x7f207d668160>,\n",
" <__main__.Field at 0x7f207d65c580>,\n",
" <__main__.Field at 0x7f207d65c5e0>,\n",
" <__main__.Field at 0x7f207d65c640>,\n",
" <__main__.Field at 0x7f207d65c6a0>,\n",
" <__main__.LetterField at 0x7f207d65c700>,\n",
" <__main__.Field at 0x7f207d65c760>,\n",
" <__main__.LetterField at 0x7f207d65c7c0>,\n",
" <__main__.Field at 0x7f207d65c820>,\n",
" <__main__.Field at 0x7f207d65c880>,\n",
" <__main__.LetterField at 0x7f207d65c8e0>,\n",
" <__main__.Field at 0x7f207d65c940>,\n",
" <__main__.Field at 0x7f207d65c9a0>,\n",
" <__main__.HintField at 0x7f207ebee400>,\n",
" <__main__.Field at 0x7f207d65ca60>,\n",
" <__main__.Field at 0x7f207d65cac0>,\n",
" <__main__.LetterField at 0x7f207d65cb20>,\n",
" <__main__.Field at 0x7f207d65cb80>,\n",
" <__main__.LetterField at 0x7f207d65cbe0>,\n",
" <__main__.LetterField at 0x7f207d65cc40>,\n",
" <__main__.LetterField at 0x7f207d65cca0>,\n",
" <__main__.LetterField at 0x7f207d65cd00>,\n",
" <__main__.LetterField at 0x7f207d65cd60>,\n",
" <__main__.LetterField at 0x7f207d65cdc0>,\n",
" <__main__.Field at 0x7f207d65ce20>,\n",
" <__main__.LetterField at 0x7f207d65ce80>,\n",
" <__main__.Field at 0x7f207d65cee0>,\n",
" <__main__.Field at 0x7f207d65cf40>,\n",
" <__main__.Field at 0x7f207d65cfa0>,\n",
" <__main__.LetterField at 0x7f207d65e040>,\n",
" <__main__.Field at 0x7f207d65e0a0>,\n",
" <__main__.LetterField at 0x7f207d65e100>,\n",
" <__main__.Field at 0x7f207d65e160>,\n",
" <__main__.LetterField at 0x7f207d65e1c0>,\n",
" <__main__.Field at 0x7f207d65e220>,\n",
" <__main__.Field at 0x7f207d65e280>,\n",
" <__main__.Field at 0x7f207d65e2e0>,\n",
" <__main__.Field at 0x7f207d65e340>],\n",
" [<__main__.Field at 0x7f207d65c160>,\n",
" <__main__.Field at 0x7f207d65e3d0>,\n",
" <__main__.Field at 0x7f207d65e460>,\n",
" <__main__.LetterField at 0x7f207d65e4c0>,\n",
" <__main__.Field at 0x7f207d65e520>,\n",
" <__main__.Field at 0x7f207d65e580>,\n",
" <__main__.LetterField at 0x7f207d65e5e0>,\n",
" <__main__.LetterField at 0x7f207d65e640>,\n",
" <__main__.LetterField at 0x7f207d65e6a0>,\n",
" <__main__.LetterField at 0x7f207d65e700>,\n",
" <__main__.LetterField at 0x7f207d65e760>,\n",
" <__main__.LetterField at 0x7f207d65e7c0>,\n",
" <__main__.LetterField at 0x7f207d65e820>,\n",
" <__main__.LetterField at 0x7f207d65e880>,\n",
" <__main__.Field at 0x7f207d65e8e0>,\n",
" <__main__.Field at 0x7f207d65e940>,\n",
" <__main__.LetterField at 0x7f207d65e9a0>,\n",
" <__main__.Field at 0x7f207d65ea00>,\n",
" <__main__.LetterField at 0x7f207d65ea60>,\n",
" <__main__.LetterField at 0x7f207d65eac0>,\n",
" <__main__.LetterField at 0x7f207d65eb20>,\n",
" <__main__.LetterField at 0x7f207d65eb80>,\n",
" <__main__.LetterField at 0x7f207d65ebe0>,\n",
" <__main__.LetterField at 0x7f207d65ec40>,\n",
" <__main__.LetterField at 0x7f207d65eca0>,\n",
" <__main__.LetterField at 0x7f207d65ed00>,\n",
" <__main__.Field at 0x7f207d65ed60>,\n",
" <__main__.LetterField at 0x7f207d65edc0>,\n",
" <__main__.Field at 0x7f207d65ee20>,\n",
" <__main__.LetterField at 0x7f207d65ee80>,\n",
" <__main__.Field at 0x7f207d65eee0>,\n",
" <__main__.LetterField at 0x7f207d65ef40>,\n",
" <__main__.Field at 0x7f207d65efa0>,\n",
" <__main__.Field at 0x7f207d65f040>,\n",
" <__main__.Field at 0x7f207d65f0a0>,\n",
" <__main__.LetterField at 0x7f207d65f100>,\n",
" <__main__.LetterField at 0x7f207d65f160>,\n",
" <__main__.LetterField at 0x7f207d65f1c0>,\n",
" <__main__.LetterField at 0x7f207d65f220>,\n",
" <__main__.Field at 0x7f207d65f280>,\n",
" <__main__.LetterField at 0x7f207d65f2e0>,\n",
" <__main__.Field at 0x7f207d65f340>,\n",
" <__main__.Field at 0x7f207d65f3a0>,\n",
" <__main__.LetterField at 0x7f207d65f400>,\n",
" <__main__.LetterField at 0x7f207d65f460>,\n",
" <__main__.LetterField at 0x7f207d65f4c0>,\n",
" <__main__.LetterField at 0x7f207d65f520>,\n",
" <__main__.LetterField at 0x7f207d65f580>,\n",
" <__main__.Field at 0x7f207d65f5e0>],\n",
" [<__main__.HintField at 0x7f207d654880>,\n",
" <__main__.LetterField at 0x7f207d65f670>,\n",
" <__main__.LetterField at 0x7f207d65f700>,\n",
" <__main__.LetterField at 0x7f207d65f760>,\n",
" <__main__.LetterField at 0x7f207d65f7c0>,\n",
" <__main__.Field at 0x7f207d65f820>,\n",
" <__main__.Field at 0x7f207d65f880>,\n",
" <__main__.LetterField at 0x7f207d65f8e0>,\n",
" <__main__.Field at 0x7f207d65f940>,\n",
" <__main__.Field at 0x7f207d65f9a0>,\n",
" <__main__.Field at 0x7f207d65fa00>,\n",
" <__main__.Field at 0x7f207d65fa60>,\n",
" <__main__.LetterField at 0x7f207d65fac0>,\n",
" <__main__.Field at 0x7f207d65fb20>,\n",
" <__main__.HintField at 0x7f207d669b80>,\n",
" <__main__.Field at 0x7f207d65fbe0>,\n",
" <__main__.LetterField at 0x7f207d65fc40>,\n",
" <__main__.Field at 0x7f207d65fca0>,\n",
" <__main__.LetterField at 0x7f207d65fd00>,\n",
" <__main__.Field at 0x7f207d65fd60>,\n",
" <__main__.Field at 0x7f207d65fdc0>,\n",
" <__main__.Field at 0x7f207d65fe20>,\n",
" <__main__.HintField at 0x7f207ec58c10>,\n",
" <__main__.Field at 0x7f207d65fee0>,\n",
" <__main__.HintField at 0x7f207d665b80>,\n",
" <__main__.Field at 0x7f207d65ffa0>,\n",
" <__main__.LetterField at 0x7f207d661040>,\n",
" <__main__.LetterField at 0x7f207d6610a0>,\n",
" <__main__.LetterField at 0x7f207d661100>,\n",
" <__main__.HintField at 0x7f207ebe2940>,\n",
" <__main__.Field at 0x7f207d6611c0>,\n",
" <__main__.LetterField at 0x7f207d661220>,\n",
" <__main__.LetterField at 0x7f207d661280>,\n",
" <__main__.HintField at 0x7f207d661160>,\n",
" <__main__.Field at 0x7f207d661340>,\n",
" <__main__.Field at 0x7f207d6613a0>,\n",
" <__main__.Field at 0x7f207d661400>,\n",
" <__main__.Field at 0x7f207d661460>,\n",
" <__main__.Field at 0x7f207d6614c0>,\n",
" <__main__.Field at 0x7f207d661520>,\n",
" <__main__.LetterField at 0x7f207d661580>,\n",
" <__main__.Field at 0x7f207d6615e0>,\n",
" <__main__.Field at 0x7f207d661640>,\n",
" <__main__.Field at 0x7f207d6616a0>,\n",
" <__main__.LetterField at 0x7f207d661700>,\n",
" <__main__.Field at 0x7f207d661760>,\n",
" <__main__.Field at 0x7f207d6617c0>,\n",
" <__main__.Field at 0x7f207d661820>,\n",
" <__main__.LetterField at 0x7f207d661880>],\n",
" [<__main__.Field at 0x7f207d65f6a0>,\n",
" <__main__.LetterField at 0x7f207d661910>,\n",
" <__main__.Field at 0x7f207d6619a0>,\n",
" <__main__.LetterField at 0x7f207d661a00>,\n",
" <__main__.Field at 0x7f207d661a60>,\n",
" <__main__.Field at 0x7f207d661ac0>,\n",
" <__main__.Field at 0x7f207d661b20>,\n",
" <__main__.LetterField at 0x7f207d661b80>,\n",
" <__main__.Field at 0x7f207d661be0>,\n",
" <__main__.Field at 0x7f207d661c40>,\n",
" <__main__.LetterField at 0x7f207d661ca0>,\n",
" <__main__.LetterField at 0x7f207d661d00>,\n",
" <__main__.LetterField at 0x7f207d661d60>,\n",
" <__main__.Field at 0x7f207d661dc0>,\n",
" <__main__.LetterField at 0x7f207d661e20>,\n",
" <__main__.LetterField at 0x7f207d661e80>,\n",
" <__main__.LetterField at 0x7f207d661ee0>,\n",
" <__main__.LetterField at 0x7f207d661f40>,\n",
" <__main__.LetterField at 0x7f207d661fa0>,\n",
" <__main__.LetterField at 0x7f207d662040>,\n",
" <__main__.Field at 0x7f207d6620a0>,\n",
" <__main__.Field at 0x7f207d662100>,\n",
" <__main__.Field at 0x7f207d662160>,\n",
" <__main__.LetterField at 0x7f207d6621c0>,\n",
" <__main__.Field at 0x7f207d662220>,\n",
" <__main__.LetterField at 0x7f207d662280>,\n",
" <__main__.Field at 0x7f207d6622e0>,\n",
" <__main__.LetterField at 0x7f207d662340>,\n",
" <__main__.Field at 0x7f207d6623a0>,\n",
" <__main__.LetterField at 0x7f207d662400>,\n",
" <__main__.LetterField at 0x7f207d662460>,\n",
" <__main__.LetterField at 0x7f207d6624c0>,\n",
" <__main__.Field at 0x7f207d662520>,\n",
" <__main__.Field at 0x7f207d662580>,\n",
" <__main__.LetterField at 0x7f207d6625e0>,\n",
" <__main__.Field at 0x7f207d662640>,\n",
" <__main__.HintField at 0x7f207d66fbe0>,\n",
" <__main__.Field at 0x7f207d662700>,\n",
" <__main__.Field at 0x7f207d662760>,\n",
" <__main__.LetterField at 0x7f207d6627c0>,\n",
" <__main__.LetterField at 0x7f207d662820>,\n",
" <__main__.LetterField at 0x7f207d662880>,\n",
" <__main__.LetterField at 0x7f207d6628e0>,\n",
" <__main__.LetterField at 0x7f207d662940>,\n",
" <__main__.LetterField at 0x7f207d6629a0>,\n",
" <__main__.LetterField at 0x7f207d662a00>,\n",
" <__main__.Field at 0x7f207d662a60>,\n",
" <__main__.Field at 0x7f207d662ac0>,\n",
" <__main__.LetterField at 0x7f207d662b20>],\n",
" [<__main__.Field at 0x7f207d661940>,\n",
" <__main__.LetterField at 0x7f207d662bb0>,\n",
" <__main__.LetterField at 0x7f207d662c40>,\n",
" <__main__.LetterField at 0x7f207d662ca0>,\n",
" <__main__.LetterField at 0x7f207d662d00>,\n",
" <__main__.LetterField at 0x7f207d662d60>,\n",
" <__main__.LetterField at 0x7f207d662dc0>,\n",
" <__main__.LetterField at 0x7f207d662e20>,\n",
" <__main__.LetterField at 0x7f207d662e80>,\n",
" <__main__.LetterField at 0x7f207d662ee0>,\n",
" <__main__.Field at 0x7f207d662f40>,\n",
" <__main__.Field at 0x7f207d662fa0>,\n",
" <__main__.LetterField at 0x7f207d665040>,\n",
" <__main__.Field at 0x7f207d6650a0>,\n",
" <__main__.Field at 0x7f207d665100>,\n",
" <__main__.LetterField at 0x7f207d665160>,\n",
" <__main__.Field at 0x7f207d6651c0>,\n",
" <__main__.LetterField at 0x7f207d665220>,\n",
" <__main__.Field at 0x7f207d665280>,\n",
" <__main__.Field at 0x7f207d6652e0>,\n",
" <__main__.LetterField at 0x7f207d665340>,\n",
" <__main__.LetterField at 0x7f207d6653a0>,\n",
" <__main__.LetterField at 0x7f207d665400>,\n",
" <__main__.LetterField at 0x7f207d665460>,\n",
" <__main__.LetterField at 0x7f207d6654c0>,\n",
" <__main__.LetterField at 0x7f207d665520>,\n",
" <__main__.LetterField at 0x7f207d665580>,\n",
" <__main__.LetterField at 0x7f207d6655e0>,\n",
" <__main__.LetterField at 0x7f207d665640>,\n",
" <__main__.Field at 0x7f207d6656a0>,\n",
" <__main__.Field at 0x7f207d665700>,\n",
" <__main__.LetterField at 0x7f207d665760>,\n",
" <__main__.LetterField at 0x7f207d6657c0>,\n",
" <__main__.LetterField at 0x7f207d665820>,\n",
" <__main__.LetterField at 0x7f207d665880>,\n",
" <__main__.LetterField at 0x7f207d6658e0>,\n",
" <__main__.Field at 0x7f207d665940>,\n",
" <__main__.LetterField at 0x7f207d6659a0>,\n",
" <__main__.Field at 0x7f207d665a00>,\n",
" <__main__.Field at 0x7f207d665a60>,\n",
" <__main__.LetterField at 0x7f207d665ac0>,\n",
" <__main__.Field at 0x7f207d665b20>,\n",
" <__main__.HintField at 0x7f207ebe9070>,\n",
" <__main__.Field at 0x7f207d665be0>,\n",
" <__main__.Field at 0x7f207d665c40>,\n",
" <__main__.Field at 0x7f207d665ca0>,\n",
" <__main__.Field at 0x7f207d665d00>,\n",
" <__main__.Field at 0x7f207d665d60>,\n",
" <__main__.LetterField at 0x7f207d665dc0>],\n",
" [<__main__.Field at 0x7f207d662be0>,\n",
" <__main__.LetterField at 0x7f207d665e50>,\n",
" <__main__.Field at 0x7f207d665ee0>,\n",
" <__main__.LetterField at 0x7f207d665f40>,\n",
" <__main__.HintField at 0x7f207ef5da30>,\n",
" <__main__.Field at 0x7f207d666040>,\n",
" <__main__.Field at 0x7f207d6660a0>,\n",
" <__main__.LetterField at 0x7f207d666100>,\n",
" <__main__.Field at 0x7f207d666160>,\n",
" <__main__.Field at 0x7f207d6661c0>,\n",
" <__main__.LetterField at 0x7f207d666220>,\n",
" <__main__.HintField at 0x7f207d654940>,\n",
" <__main__.Field at 0x7f207d6662e0>,\n",
" <__main__.LetterField at 0x7f207d666340>,\n",
" <__main__.LetterField at 0x7f207d6663a0>,\n",
" <__main__.LetterField at 0x7f207d666400>,\n",
" <__main__.Field at 0x7f207d666460>,\n",
" <__main__.LetterField at 0x7f207d6664c0>,\n",
" <__main__.Field at 0x7f207d666520>,\n",
" <__main__.Field at 0x7f207d666580>,\n",
" <__main__.LetterField at 0x7f207d6665e0>,\n",
" <__main__.Field at 0x7f207d666640>,\n",
" <__main__.Field at 0x7f207d6666a0>,\n",
" <__main__.LetterField at 0x7f207d666700>,\n",
" <__main__.Field at 0x7f207d666760>,\n",
" <__main__.LetterField at 0x7f207d6667c0>,\n",
" <__main__.Field at 0x7f207d666820>,\n",
" <__main__.LetterField at 0x7f207d666880>,\n",
" <__main__.HintField at 0x7f207ef54fa0>,\n",
" <__main__.Field at 0x7f207d666940>,\n",
" <__main__.Field at 0x7f207d6669a0>,\n",
" <__main__.LetterField at 0x7f207d666a00>,\n",
" <__main__.Field at 0x7f207d666a60>,\n",
" <__main__.Field at 0x7f207d666ac0>,\n",
" <__main__.LetterField at 0x7f207d666b20>,\n",
" <__main__.Field at 0x7f207d666b80>,\n",
" <__main__.Field at 0x7f207d666be0>,\n",
" <__main__.LetterField at 0x7f207d666c40>,\n",
" <__main__.Field at 0x7f207d666ca0>,\n",
" <__main__.Field at 0x7f207d666d00>,\n",
" <__main__.Field at 0x7f207d666d60>,\n",
" <__main__.LetterField at 0x7f207d666dc0>,\n",
" <__main__.Field at 0x7f207d666e20>,\n",
" <__main__.LetterField at 0x7f207d666e80>,\n",
" <__main__.Field at 0x7f207d666ee0>,\n",
" <__main__.Field at 0x7f207d666f40>,\n",
" <__main__.Field at 0x7f207d666fa0>,\n",
" <__main__.Field at 0x7f207d668040>,\n",
" <__main__.LetterField at 0x7f207d6680a0>],\n",
" [<__main__.Field at 0x7f207d665e80>,\n",
" <__main__.LetterField at 0x7f207d668130>,\n",
" <__main__.LetterField at 0x7f207d6681c0>,\n",
" <__main__.Field at 0x7f207d668220>,\n",
" <__main__.LetterField at 0x7f207d668280>,\n",
" <__main__.LetterField at 0x7f207d6682e0>,\n",
" <__main__.LetterField at 0x7f207d668340>,\n",
" <__main__.LetterField at 0x7f207d6683a0>,\n",
" <__main__.LetterField at 0x7f207d668400>,\n",
" <__main__.LetterField at 0x7f207d668460>,\n",
" <__main__.LetterField at 0x7f207d6684c0>,\n",
" <__main__.LetterField at 0x7f207d668520>,\n",
" <__main__.LetterField at 0x7f207d668580>,\n",
" <__main__.Field at 0x7f207d6685e0>,\n",
" <__main__.Field at 0x7f207d668640>,\n",
" <__main__.LetterField at 0x7f207d6686a0>,\n",
" <__main__.Field at 0x7f207d668700>,\n",
" <__main__.LetterField at 0x7f207d668760>,\n",
" <__main__.Field at 0x7f207d6687c0>,\n",
" <__main__.Field at 0x7f207d668820>,\n",
" <__main__.LetterField at 0x7f207d668880>,\n",
" <__main__.Field at 0x7f207d6688e0>,\n",
" <__main__.Field at 0x7f207d668940>,\n",
" <__main__.LetterField at 0x7f207d6689a0>,\n",
" <__main__.Field at 0x7f207d668a00>,\n",
" <__main__.Field at 0x7f207d668a60>,\n",
" <__main__.Field at 0x7f207d668ac0>,\n",
" <__main__.LetterField at 0x7f207d668b20>,\n",
" <__main__.Field at 0x7f207d668b80>,\n",
" <__main__.LetterField at 0x7f207d668be0>,\n",
" <__main__.Field at 0x7f207d668c40>,\n",
" <__main__.LetterField at 0x7f207d668ca0>,\n",
" <__main__.Field at 0x7f207d668d00>,\n",
" <__main__.Field at 0x7f207d668d60>,\n",
" <__main__.LetterField at 0x7f207d668dc0>,\n",
" <__main__.Field at 0x7f207d668e20>,\n",
" <__main__.Field at 0x7f207d668e80>,\n",
" <__main__.LetterField at 0x7f207d668ee0>,\n",
" <__main__.LetterField at 0x7f207d668f40>,\n",
" <__main__.LetterField at 0x7f207d668fa0>,\n",
" <__main__.LetterField at 0x7f207d669040>,\n",
" <__main__.LetterField at 0x7f207d6690a0>,\n",
" <__main__.LetterField at 0x7f207d669100>,\n",
" <__main__.LetterField at 0x7f207d669160>,\n",
" <__main__.LetterField at 0x7f207d6691c0>,\n",
" <__main__.LetterField at 0x7f207d669220>,\n",
" <__main__.Field at 0x7f207d669280>,\n",
" <__main__.Field at 0x7f207d6692e0>,\n",
" <__main__.LetterField at 0x7f207d669340>],\n",
" [<__main__.HintField at 0x7f207ebe9400>,\n",
" <__main__.LetterField at 0x7f207d6693d0>,\n",
" <__main__.LetterField at 0x7f207d669460>,\n",
" <__main__.Field at 0x7f207d6694c0>,\n",
" <__main__.Field at 0x7f207d669520>,\n",
" <__main__.LetterField at 0x7f207d669580>,\n",
" <__main__.Field at 0x7f207d6695e0>,\n",
" <__main__.LetterField at 0x7f207d669640>,\n",
" <__main__.Field at 0x7f207d6696a0>,\n",
" <__main__.Field at 0x7f207d669700>,\n",
" <__main__.LetterField at 0x7f207d669760>,\n",
" <__main__.Field at 0x7f207d6697c0>,\n",
" <__main__.LetterField at 0x7f207d669820>,\n",
" <__main__.Field at 0x7f207d669880>,\n",
" <__main__.Field at 0x7f207d6698e0>,\n",
" <__main__.LetterField at 0x7f207d669940>,\n",
" <__main__.Field at 0x7f207d6699a0>,\n",
" <__main__.LetterField at 0x7f207d669a00>,\n",
" <__main__.Field at 0x7f207d669a60>,\n",
" <__main__.Field at 0x7f207d669ac0>,\n",
" <__main__.LetterField at 0x7f207d669b20>,\n",
" <__main__.HintField at 0x7f207ec58f70>,\n",
" <__main__.Field at 0x7f207d669be0>,\n",
" <__main__.LetterField at 0x7f207d669c40>,\n",
" <__main__.Field at 0x7f207d669ca0>,\n",
" <__main__.LetterField at 0x7f207d669d00>,\n",
" <__main__.LetterField at 0x7f207d669d60>,\n",
" <__main__.LetterField at 0x7f207d669dc0>,\n",
" <__main__.LetterField at 0x7f207d669e20>,\n",
" <__main__.LetterField at 0x7f207d669e80>,\n",
" <__main__.LetterField at 0x7f207d669ee0>,\n",
" <__main__.LetterField at 0x7f207d669f40>,\n",
" <__main__.LetterField at 0x7f207d669fa0>,\n",
" <__main__.Field at 0x7f207d66b040>,\n",
" <__main__.LetterField at 0x7f207d66b0a0>,\n",
" <__main__.Field at 0x7f207d66b100>,\n",
" <__main__.Field at 0x7f207d66b160>,\n",
" <__main__.LetterField at 0x7f207d66b1c0>,\n",
" <__main__.Field at 0x7f207d66b220>,\n",
" <__main__.Field at 0x7f207d66b280>,\n",
" <__main__.Field at 0x7f207d66b2e0>,\n",
" <__main__.LetterField at 0x7f207d66b340>,\n",
" <__main__.Field at 0x7f207d66b3a0>,\n",
" <__main__.LetterField at 0x7f207d66b400>,\n",
" <__main__.Field at 0x7f207d66b460>,\n",
" <__main__.Field at 0x7f207d66b4c0>,\n",
" <__main__.Field at 0x7f207d66b520>,\n",
" <__main__.Field at 0x7f207d66b580>,\n",
" <__main__.LetterField at 0x7f207d66b5e0>],\n",
" [<__main__.Field at 0x7f207d669400>,\n",
" <__main__.LetterField at 0x7f207d66b670>,\n",
" <__main__.LetterField at 0x7f207d66b700>,\n",
" <__main__.Field at 0x7f207d66b760>,\n",
" <__main__.Field at 0x7f207d66b7c0>,\n",
" <__main__.LetterField at 0x7f207d66b820>,\n",
" <__main__.Field at 0x7f207d66b880>,\n",
" <__main__.Field at 0x7f207d66b8e0>,\n",
" <__main__.Field at 0x7f207d66b940>,\n",
" <__main__.Field at 0x7f207d66b9a0>,\n",
" <__main__.LetterField at 0x7f207d66ba00>,\n",
" <__main__.Field at 0x7f207d66ba60>,\n",
" <__main__.LetterField at 0x7f207d66bac0>,\n",
" <__main__.Field at 0x7f207d66bb20>,\n",
" <__main__.Field at 0x7f207d66bb80>,\n",
" <__main__.LetterField at 0x7f207d66bbe0>,\n",
" <__main__.Field at 0x7f207d66bc40>,\n",
" <__main__.LetterField at 0x7f207d66bca0>,\n",
" <__main__.Field at 0x7f207d66bd00>,\n",
" <__main__.Field at 0x7f207d66bd60>,\n",
" <__main__.LetterField at 0x7f207d66bdc0>,\n",
" <__main__.Field at 0x7f207d66be20>,\n",
" <__main__.Field at 0x7f207d66be80>,\n",
" <__main__.Field at 0x7f207d66bee0>,\n",
" <__main__.Field at 0x7f207d66bf40>,\n",
" <__main__.Field at 0x7f207d66bfa0>,\n",
" <__main__.Field at 0x7f207d66c040>,\n",
" <__main__.LetterField at 0x7f207d66c0a0>,\n",
" <__main__.Field at 0x7f207d66c100>,\n",
" <__main__.LetterField at 0x7f207d66c160>,\n",
" <__main__.Field at 0x7f207d66c1c0>,\n",
" <__main__.LetterField at 0x7f207d66c220>,\n",
" <__main__.Field at 0x7f207d66c280>,\n",
" <__main__.LetterField at 0x7f207d66c2e0>,\n",
" <__main__.LetterField at 0x7f207d66c340>,\n",
" <__main__.LetterField at 0x7f207d66c3a0>,\n",
" <__main__.LetterField at 0x7f207d66c400>,\n",
" <__main__.LetterField at 0x7f207d66c460>,\n",
" <__main__.LetterField at 0x7f207d66c4c0>,\n",
" <__main__.LetterField at 0x7f207d66c520>,\n",
" <__main__.Field at 0x7f207d66c580>,\n",
" <__main__.LetterField at 0x7f207d66c5e0>,\n",
" <__main__.LetterField at 0x7f207d66c640>,\n",
" <__main__.LetterField at 0x7f207d66c6a0>,\n",
" <__main__.LetterField at 0x7f207d66c700>,\n",
" <__main__.LetterField at 0x7f207d66c760>,\n",
" <__main__.LetterField at 0x7f207d66c7c0>,\n",
" <__main__.LetterField at 0x7f207d66c820>,\n",
" <__main__.LetterField at 0x7f207d66c880>],\n",
" [<__main__.Field at 0x7f207d66b6a0>,\n",
" <__main__.Field at 0x7f207d66c910>,\n",
" <__main__.LetterField at 0x7f207d66c9a0>,\n",
" <__main__.LetterField at 0x7f207d66ca00>,\n",
" <__main__.LetterField at 0x7f207d66ca60>,\n",
" <__main__.LetterField at 0x7f207d66cac0>,\n",
" <__main__.Field at 0x7f207d66cb20>,\n",
" <__main__.Field at 0x7f207d66cb80>,\n",
" <__main__.Field at 0x7f207d66cbe0>,\n",
" <__main__.LetterField at 0x7f207d66cc40>,\n",
" <__main__.LetterField at 0x7f207d66cca0>,\n",
" <__main__.LetterField at 0x7f207d66cd00>,\n",
" <__main__.LetterField at 0x7f207d66cd60>,\n",
" <__main__.LetterField at 0x7f207d66cdc0>,\n",
" <__main__.Field at 0x7f207d66ce20>,\n",
" <__main__.LetterField at 0x7f207d66ce80>,\n",
" <__main__.Field at 0x7f207d66cee0>,\n",
" <__main__.Field at 0x7f207d66cf40>,\n",
" <__main__.Field at 0x7f207d66cfa0>,\n",
" <__main__.Field at 0x7f207d66f040>,\n",
" <__main__.Field at 0x7f207d66f0a0>,\n",
" <__main__.Field at 0x7f207d66f100>,\n",
" <__main__.Field at 0x7f207d66f160>,\n",
" <__main__.LetterField at 0x7f207d66f1c0>,\n",
" <__main__.LetterField at 0x7f207d66f220>,\n",
" <__main__.LetterField at 0x7f207d66f280>,\n",
" <__main__.LetterField at 0x7f207d66f2e0>,\n",
" <__main__.LetterField at 0x7f207d66f340>,\n",
" <__main__.LetterField at 0x7f207d66f3a0>,\n",
" <__main__.LetterField at 0x7f207d66f400>,\n",
" <__main__.Field at 0x7f207d66f460>,\n",
" <__main__.Field at 0x7f207d66f4c0>,\n",
" <__main__.Field at 0x7f207d66f520>,\n",
" <__main__.Field at 0x7f207d66f580>,\n",
" <__main__.Field at 0x7f207d66f5e0>,\n",
" <__main__.Field at 0x7f207d66f640>,\n",
" <__main__.Field at 0x7f207d66f6a0>,\n",
" <__main__.LetterField at 0x7f207d66f700>,\n",
" <__main__.Field at 0x7f207d66f760>,\n",
" <__main__.Field at 0x7f207d66f7c0>,\n",
" <__main__.Field at 0x7f207d66f820>,\n",
" <__main__.LetterField at 0x7f207d66f880>,\n",
" <__main__.Field at 0x7f207d66f8e0>,\n",
" <__main__.Field at 0x7f207d66f940>,\n",
" <__main__.Field at 0x7f207d66f9a0>,\n",
" <__main__.Field at 0x7f207d66fa00>,\n",
" <__main__.Field at 0x7f207d66fa60>,\n",
" <__main__.Field at 0x7f207d66fac0>,\n",
" <__main__.Field at 0x7f207d66fb20>]]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cw._grid._grid"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.9.5 64-bit"
},
"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.9.5"
},
"interpreter": {
"hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}