Last active
January 4, 2020 06:52
-
-
Save jeffdonahue/3b091a30bf67106165cf069d94ee1369 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/local/bin/python3 | |
| import itertools | |
| import string | |
| class Node: | |
| """A trie node.""" | |
| def __init__(self, char, parent=None): | |
| self._char = char | |
| self._parent = parent | |
| self.children = {} | |
| self.is_terminal = False | |
| def add_child(self, char): | |
| if char not in self.children: | |
| self.children[char] = Node(char, parent=self) | |
| return self.children[char] | |
| def add_sequence(self, chars): | |
| if chars: | |
| self.add_child(chars[0]).add_sequence(chars[1:]) | |
| else: | |
| # I'm the last node in the sequence, mark myself terminal. | |
| self.is_terminal = True | |
| def has_sequence(self, chars): | |
| if not chars: | |
| return self.is_terminal | |
| try: | |
| child = self.children[chars[0]] | |
| except KeyError: | |
| return False | |
| return child.has_sequence(chars[1:]) | |
| def get_prefix(self): | |
| parent = self._parent | |
| return (parent.get_prefix() if parent else '') + self._char | |
| def get_words_with_chars(self, available_chars, words=None): | |
| if words is None: | |
| words = [] | |
| if self.is_terminal: | |
| words.append(self.get_prefix()) | |
| for char in available_chars: | |
| try: | |
| child = self.children[char] | |
| except KeyError: | |
| continue | |
| child.get_words_with_chars(available_chars, words) | |
| return words | |
| def build_trie(words): | |
| root = Node('') | |
| for word in words: | |
| root.add_sequence(word) | |
| return root | |
| def get_wordlist(filename='wordlist.txt'): | |
| with open(filename, 'r') as f: | |
| words = [l.strip().lower() for l in f.readlines()] | |
| return words | |
| def prnow(*args, **kwargs): | |
| kwargs['flush'] = True | |
| return print(*args, **kwargs) | |
| def points_for_word(rs, os, word): | |
| is_good = ( | |
| len(word) >= 4 and | |
| all(r in word for r in rs) and | |
| all(w in os for w in word) | |
| ) | |
| if not is_good: | |
| return 0 | |
| length_points = 1 if len(word) == 4 else len(word) | |
| pangram_points = 7 if all(o in word for o in os) else 0 | |
| return length_points + pangram_points | |
| def words_in_circle(required_letters, optional_letters, words): | |
| """Slow version using brute force.""" | |
| os = set(required_letters) | set(optional_letters) | |
| for word in words: | |
| points = points_for_word(required_letters, os, word) | |
| if points: | |
| yield points, word | |
| def words_in_circle_trie(required_letters, optional_letters, trie): | |
| """Fast version using a prebuilt trie.""" | |
| os = set(required_letters) | set(optional_letters) | |
| words = trie.get_words_with_chars(list(os)) | |
| for word in words: | |
| points = points_for_word(required_letters, os, word) | |
| if points: | |
| yield points, word | |
| def sort_words_and_points(words_and_points): | |
| """Ranks the [(word, points)] list by points, then len(word), then ABC.""" | |
| words_and_points.sort(key=lambda p_w: (-p_w[0], -len(p_w[1]), p_w[1])) | |
| def go(letters=string.ascii_lowercase, circle_num=7, words=None, trie=None, | |
| limit=None): | |
| num = 0 | |
| best_score = -1 | |
| best_result = None | |
| if trie: | |
| f_words_in_circle = lambda c, o: words_in_circle_trie(c, o, trie) | |
| else: | |
| assert words is not None, 'Must specify either `words` or `tree`.' | |
| f_words_in_circle = lambda c, o: words_in_circle(c, o, words) | |
| for circle_letters in itertools.combinations(letters, circle_num): | |
| for center_index, center_letter in enumerate(circle_letters): | |
| if limit is not None and num >= limit: | |
| prnow(f'Reached limit of {limit} combinations; quitting.') | |
| return best_result | |
| optional_letters = (circle_letters[:center_index] + | |
| circle_letters[center_index+1:]) | |
| found_words = list(f_words_in_circle(center_letter, optional_letters)) | |
| sort_words_and_points(found_words) | |
| total_score = sum(p for p, w in found_words) | |
| puzzle_disp = f'({center_letter}){"".join(optional_letters)}' | |
| if total_score > best_score: | |
| prnow(f'!!!! NEW HIGH SCORE !!!! {puzzle_disp} -> {total_score} (> {best_score})') | |
| best_score = total_score | |
| best_result = dict(center_letter=center_letter, | |
| optional_letters=optional_letters, | |
| score=total_score, | |
| words=found_words) | |
| prnow(f'{puzzle_disp} score={total_score} (best={best_score}) ' | |
| f'({len(found_words)} words): {found_words[:10]}') | |
| num += 1 | |
| return best_result | |
| if __name__ == '__main__': | |
| if True: | |
| # Sanity checks. | |
| assert points_for_word('g', 'alpgexm', 'meg') == 0 | |
| assert points_for_word('g', 'alpgexm', 'meal') == 0 | |
| assert points_for_word('g', 'alpgexm', 'megapler') == 0 | |
| assert points_for_word('g', 'alpgexm', 'mega') == 1 | |
| assert points_for_word('g', 'alpgexm', 'megap') == 5 | |
| assert points_for_word('g', 'alpgexm', 'megapp') == 6 | |
| assert points_for_word('g', 'alpgexm', 'megaplee') == 8 | |
| assert points_for_word('g', 'alpgexm', 'megaplex') == 15 | |
| prnow('Loading wordlist.') | |
| all_words = get_wordlist() | |
| prnow('Done loading wordlist.') | |
| words = [w for w in all_words if len(w) >= 4] | |
| letters = string.ascii_lowercase | |
| disallow_chars = {'s'} # disallow 's' | |
| for disallow_char in disallow_chars: | |
| words = [w for w in words if disallow_char not in w] | |
| letters = [l for l in letters if l != disallow_char] | |
| # Check words are all lowercase. | |
| charset = set(letters) | |
| for word in words: | |
| if not all(w in charset for w in word): | |
| raise ValueError(f'Word has unexpected chars: {word}') | |
| use_trie = True | |
| if use_trie: | |
| prnow(f'Building trie from {len(words)} words.') | |
| trie = build_trie(words) | |
| prnow(f'Done building trie.') | |
| else: | |
| trie = None | |
| prnow('Running search.') | |
| # limit = 100 # quick test | |
| limit = None # forrealz | |
| best_result = go(letters=letters, trie=trie, words=words, limit=limit) | |
| prnow('Done.') | |
| best_score = best_result['score'] | |
| center = best_result['center_letter'] | |
| optional = best_result['optional_letters'] | |
| words_and_points = best_result['words'] | |
| prnow(f'Best circle: ({center}){"".join(optional)}') | |
| prnow(f'It scored {best_score}, from {len(words_and_points)} words.') | |
| prnow(f'Words and points:') | |
| prnow('\n'.join(f'\t{w} ({p})' for p, w in words_and_points)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Loading wordlist. | |
| Done loading wordlist. | |
| Building trie from 67985 words. | |
| Done building trie. | |
| Running search. | |
| [...] | |
| Done. | |
| Best circle: (r)aegint | |
| It scored 3898, from 537 words. | |
| Words and points: | |
| reaggregating (20) | |
| reintegrating (20) | |
| entertaining (19) | |
| intenerating (19) | |
| regenerating (19) | |
| reinitiating (19) | |
| aggregating (18) | |
| gratineeing (18) | |
| integrating (18) | |
| itinerating (18) | |
| reattaining (18) | |
| reintegrate (18) | |
| reiterating (18) | |
| retargeting (18) | |
| entraining (17) | |
| entreating (17) | |
| garnierite (17) | |
| generating (17) | |
| greatening (17) | |
| ingratiate (17) | |
| interregna (17) | |
| intreating (17) | |
| regranting (17) | |
| retraining (17) | |
| retreating (17) | |
| argentine (16) | |
| argentite (16) | |
| gartering (16) | |
| integrate (16) | |
| intergang (16) | |
| iterating (16) | |
| nattering (16) | |
| rattening (16) | |
| regrating (16) | |
| retagging (16) | |
| retaining (16) | |
| retearing (16) | |
| tangerine (16) | |
| targeting (16) | |
| tattering (16) | |
| aerating (15) | |
| gnattier (15) | |
| gratinee (15) | |
| interage (15) | |
| treating (15) | |
| granite (14) | |
| gratine (14) | |
| ingrate (14) | |
| tangier (14) | |
| tearing (14) | |
| reengineering (13) | |
| ingratiating (12) | |
| engineering (11) | |
| entertainer (11) | |
| reaggregate (11) | |
| rearranging (11) | |
| reinterring (11) | |
| trinitarian (11) | |
| arraigning (10) | |
| engraining (10) | |
| gangrening (10) | |
| ingraining (10) | |
| intenerate (10) | |
| irrigating (10) | |
| irritating (10) | |
| reengaging (10) | |
| reengineer (10) | |
| reentering (10) | |
| regenerate (10) | |
| regreening (10) | |
| regreeting (10) | |
| regretting (10) | |
| reigniting (10) | |
| reinitiate (10) | |
| retreatant (10) | |
| triggering (10) | |
| aggregate (9) | |
| arranging (9) | |
| arrearage (9) | |
| entertain (9) | |
| entrainer (9) | |
| garnering (9) | |
| gettering (9) | |
| gingering (9) | |
| greengage (9) | |
| gregarine (9) | |
| interning (9) | |
| interring (9) | |
| intrigant (9) | |
| itinerant (9) | |
| itinerate (9) | |
| narrating (9) | |
| nitrating (9) | |
| rearrange (9) | |
| reearning (9) | |
| reentrant (9) | |
| regaining (9) | |
| regearing (9) | |
| regretter (9) | |
| reiterate (9) | |
| renigging (9) | |
| rerigging (9) | |
| retinting (9) | |
| retreater (9) | |
| teetering (9) | |
| tentering (9) | |
| titrating (9) | |
| tittering (9) | |
| agrarian (8) | |
| agreeing (8) | |
| aigrette (8) | |
| anearing (8) | |
| angering (8) | |
| anteater (8) | |
| antiarin (8) | |
| arginine (8) | |
| arranger (8) | |
| attainer (8) | |
| attiring (8) | |
| engineer (8) | |
| enraging (8) | |
| entering (8) | |
| gangrene (8) | |
| garaging (8) | |
| generate (8) | |
| gnarring (8) | |
| grainier (8) | |
| graining (8) | |
| granting (8) | |
| greegree (8) | |
| greenier (8) | |
| greening (8) | |
| greeting (8) | |
| grinning (8) | |
| grittier (8) | |
| gritting (8) | |
| inerrant (8) | |
| inertiae (8) | |
| internee (8) | |
| intertie (8) | |
| irrigate (8) | |
| irritant (8) | |
| irritate (8) | |
| narrater (8) | |
| rattener (8) | |
| reattain (8) | |
| reengage (8) | |
| regainer (8) | |
| reigning (8) | |
| reignite (8) | |
| reneging (8) | |
| renitent (8) | |
| retainer (8) | |
| retarget (8) | |
| retiarii (8) | |
| retinene (8) | |
| retinite (8) | |
| retirant (8) | |
| retiring (8) | |
| tartrate (8) | |
| teenager (8) | |
| terraria (8) | |
| titterer (8) | |
| training (8) | |
| triaging (8) | |
| triennia (8) | |
| trigging (8) | |
| aginner (7) | |
| airting (7) | |
| anergia (7) | |
| angaria (7) | |
| angrier (7) | |
| antiair (7) | |
| arenite (7) | |
| arietta (7) | |
| ariette (7) | |
| arraign (7) | |
| arrange (7) | |
| attrite (7) | |
| eagerer (7) | |
| earning (7) | |
| earring (7) | |
| engager (7) | |
| engrain (7) | |
| enterer (7) | |
| entrain (7) | |
| entrant (7) | |
| entreat (7) | |
| etagere (7) | |
| garring (7) | |
| gearing (7) | |
| ginnier (7) | |
| girning (7) | |
| girting (7) | |
| gittern (7) | |
| grainer (7) | |
| granger (7) | |
| granita (7) | |
| grannie (7) | |
| grantee (7) | |
| granter (7) | |
| grating (7) | |
| greaten (7) | |
| greater (7) | |
| greeing (7) | |
| greener (7) | |
| greenie (7) | |
| greeter (7) | |
| grinner (7) | |
| igniter (7) | |
| inertia (7) | |
| ingrain (7) | |
| integer (7) | |
| interne (7) | |
| intrant (7) | |
| intreat (7) | |
| iterant (7) | |
| iterate (7) | |
| naggier (7) | |
| narrate (7) | |
| nattier (7) | |
| nearing (7) | |
| negater (7) | |
| nettier (7) | |
| niterie (7) | |
| nitrate (7) | |
| nitrite (7) | |
| nittier (7) | |
| ragging (7) | |
| rainier (7) | |
| raining (7) | |
| rangier (7) | |
| ranging (7) | |
| ranting (7) | |
| ratatat (7) | |
| ratteen (7) | |
| rattier (7) | |
| ratting (7) | |
| reagent (7) | |
| rearing (7) | |
| reenter (7) | |
| regatta (7) | |
| reginae (7) | |
| regnant (7) | |
| regrant (7) | |
| regrate (7) | |
| regreen (7) | |
| regreet (7) | |
| reining (7) | |
| reinter (7) | |
| reneger (7) | |
| rentier (7) | |
| renting (7) | |
| retinae (7) | |
| retiree (7) | |
| retirer (7) | |
| retrain (7) | |
| retreat (7) | |
| retting (7) | |
| rigging (7) | |
| ringent (7) | |
| ringgit (7) | |
| ringing (7) | |
| rinning (7) | |
| tanager (7) | |
| tantara (7) | |
| tarrier (7) | |
| tarring (7) | |
| tartana (7) | |
| tarting (7) | |
| tattier (7) | |
| tearier (7) | |
| teenier (7) | |
| tentier (7) | |
| tergite (7) | |
| ternate (7) | |
| terrain (7) | |
| terrane (7) | |
| terreen (7) | |
| terrene (7) | |
| terrier (7) | |
| terrine (7) | |
| tertian (7) | |
| tiering (7) | |
| tinnier (7) | |
| titrant (7) | |
| titrate (7) | |
| trainee (7) | |
| trainer (7) | |
| treater (7) | |
| treeing (7) | |
| trigger (7) | |
| trining (7) | |
| aerate (6) | |
| aerier (6) | |
| aigret (6) | |
| airier (6) | |
| airing (6) | |
| antiar (6) | |
| argent (6) | |
| arrant (6) | |
| arrear (6) | |
| artier (6) | |
| attire (6) | |
| earing (6) | |
| earner (6) | |
| eerier (6) | |
| engirt (6) | |
| enrage (6) | |
| entera (6) | |
| entire (6) | |
| entree (6) | |
| ergate (6) | |
| errant (6) | |
| errata (6) | |
| erring (6) | |
| eterne (6) | |
| gagger (6) | |
| gainer (6) | |
| gaiter (6) | |
| ganger (6) | |
| garage (6) | |
| garget (6) | |
| garner (6) | |
| garnet (6) | |
| garret (6) | |
| garter (6) | |
| genera (6) | |
| gerent (6) | |
| getter (6) | |
| ginger (6) | |
| ginner (6) | |
| grange (6) | |
| grater (6) | |
| gratin (6) | |
| greige (6) | |
| grigri (6) | |
| inaner (6) | |
| intern (6) | |
| irater (6) | |
| nagger (6) | |
| narine (6) | |
| natter (6) | |
| nearer (6) | |
| neater (6) | |
| netter (6) | |
| nigger (6) | |
| raggee (6) | |
| raging (6) | |
| ragtag (6) | |
| ranger (6) | |
| ranter (6) | |
| raring (6) | |
| ratine (6) | |
| rating (6) | |
| ratite (6) | |
| rattan (6) | |
| ratten (6) | |
| ratter (6) | |
| reagin (6) | |
| rearer (6) | |
| reearn (6) | |
| regain (6) | |
| regear (6) | |
| regent (6) | |
| reggae (6) | |
| regina (6) | |
| regret (6) | |
| renege (6) | |
| rennet (6) | |
| rennin (6) | |
| renter (6) | |
| retain (6) | |
| retear (6) | |
| retene (6) | |
| retina (6) | |
| retine (6) | |
| retint (6) | |
| retire (6) | |
| rigger (6) | |
| ringer (6) | |
| ritter (6) | |
| tagger (6) | |
| tagrag (6) | |
| tanner (6) | |
| tantra (6) | |
| target (6) | |
| taring (6) | |
| tartan (6) | |
| tartar (6) | |
| tarter (6) | |
| tatter (6) | |
| tearer (6) | |
| teener (6) | |
| teeter (6) | |
| tenner (6) | |
| tenter (6) | |
| terete (6) | |
| terrae (6) | |
| terret (6) | |
| territ (6) | |
| tetter (6) | |
| tinier (6) | |
| tinner (6) | |
| tinter (6) | |
| tiring (6) | |
| titter (6) | |
| triage (6) | |
| triene (6) | |
| triter (6) | |
| aerie (5) | |
| agger (5) | |
| agree (5) | |
| agria (5) | |
| airer (5) | |
| anear (5) | |
| anger (5) | |
| antra (5) | |
| antre (5) | |
| areae (5) | |
| arena (5) | |
| arete (5) | |
| atria (5) | |
| attar (5) | |
| eager (5) | |
| eagre (5) | |
| eater (5) | |
| eerie (5) | |
| eggar (5) | |
| egger (5) | |
| egret (5) | |
| enter (5) | |
| gager (5) | |
| garni (5) | |
| genre (5) | |
| gnarr (5) | |
| grain (5) | |
| grana (5) | |
| grant (5) | |
| grate (5) | |
| great (5) | |
| green (5) | |
| greet (5) | |
| inert (5) | |
| inner (5) | |
| inter (5) | |
| irate (5) | |
| iring (5) | |
| naira (5) | |
| niter (5) | |
| nitre (5) | |
| ragee (5) | |
| ranee (5) | |
| range (5) | |
| rarer (5) | |
| ratan (5) | |
| rater (5) | |
| reata (5) | |
| regna (5) | |
| reign (5) | |
| renig (5) | |
| renin (5) | |
| rente (5) | |
| reran (5) | |
| rerig (5) | |
| retag (5) | |
| retia (5) | |
| retie (5) | |
| riant (5) | |
| riata (5) | |
| targe (5) | |
| tarre (5) | |
| tatar (5) | |
| tater (5) | |
| terai (5) | |
| terga (5) | |
| terne (5) | |
| terra (5) | |
| tetra (5) | |
| tiara (5) | |
| tiger (5) | |
| titer (5) | |
| titre (5) | |
| tragi (5) | |
| train (5) | |
| trait (5) | |
| treat (5) | |
| treen (5) | |
| trier (5) | |
| trine (5) | |
| trite (5) | |
| agar (1) | |
| ager (1) | |
| airn (1) | |
| airt (1) | |
| area (1) | |
| aria (1) | |
| earn (1) | |
| eger (1) | |
| erne (1) | |
| gear (1) | |
| girn (1) | |
| girt (1) | |
| gnar (1) | |
| gran (1) | |
| grat (1) | |
| gree (1) | |
| grig (1) | |
| grin (1) | |
| grit (1) | |
| near (1) | |
| raga (1) | |
| rage (1) | |
| ragi (1) | |
| raia (1) | |
| rain (1) | |
| rang (1) | |
| rani (1) | |
| rant (1) | |
| rare (1) | |
| rate (1) | |
| rear (1) | |
| rein (1) | |
| rent (1) | |
| rete (1) | |
| ring (1) | |
| rite (1) | |
| tare (1) | |
| tarn (1) | |
| tart (1) | |
| tear (1) | |
| tern (1) | |
| tier (1) | |
| tire (1) | |
| tree (1) | |
| tret (1) | |
| trig (1) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Loading wordlist. | |
| Done loading wordlist. | |
| Building trie from 171752 words. | |
| Done building trie. | |
| Running search. | |
| [...] | |
| Done. | |
| Best circle: (e)ainrst | |
| It scored 8681, from 1179 words. | |
| Words and points: | |
| entertainers (19) | |
| interstrains (19) | |
| straitnesses (19) | |
| intenerates (18) | |
| interstates (18) | |
| interstrain (18) | |
| iratenesses (18) | |
| itineraries (18) | |
| reinitiates (18) | |
| restrainers (18) | |
| tristearins (18) | |
| antistress (17) | |
| artinesses (17) | |
| entertains (17) | |
| entrainers (17) | |
| entreaties (17) | |
| errantries (17) | |
| interstate (17) | |
| intrastate (17) | |
| itinerants (17) | |
| itinerates (17) | |
| reinstates (17) | |
| resistants (17) | |
| restrainer (17) | |
| restraints (17) | |
| sanitaries (17) | |
| stannaries (17) | |
| straitness (17) | |
| tanistries (17) | |
| tearstains (17) | |
| tenantries (17) | |
| transients (17) | |
| tristearin (17) | |
| arsenites (16) | |
| attainers (16) | |
| instanter (16) | |
| irateness (16) | |
| reattains (16) | |
| reinstate (16) | |
| resinates (16) | |
| resistant (16) | |
| restrains (16) | |
| restraint (16) | |
| retainers (16) | |
| retirants (16) | |
| seatrains (16) | |
| stearines (16) | |
| strainers (16) | |
| straitens (16) | |
| tanneries (16) | |
| tearstain (16) | |
| ternaries (16) | |
| transient (16) | |
| insatiatenesses (15) | |
| instantaneities (15) | |
| antisera (15) | |
| arenites (15) | |
| arsenite (15) | |
| artiness (15) | |
| entrains (15) | |
| inertias (15) | |
| intreats (15) | |
| nitrates (15) | |
| rainiest (15) | |
| ratanies (15) | |
| resinate (15) | |
| restrain (15) | |
| retrains (15) | |
| retsinas (15) | |
| seatrain (15) | |
| stainers (15) | |
| stearine (15) | |
| stearins (15) | |
| strainer (15) | |
| straiten (15) | |
| terrains (15) | |
| tertians (15) | |
| trainees (15) | |
| trainers (15) | |
| sinisternesses (14) | |
| anestri (14) | |
| antsier (14) | |
| nastier (14) | |
| ratines (14) | |
| retains (14) | |
| retinas (14) | |
| retsina (14) | |
| stainer (14) | |
| stearin (14) | |
| earnestnesses (13) | |
| insatiateness (13) | |
| instantnesses (13) | |
| intensenesses (13) | |
| assassinates (12) | |
| entirenesses (12) | |
| innatenesses (12) | |
| insanenesses (12) | |
| instantiates (12) | |
| intentnesses (12) | |
| serenenesses (12) | |
| sinisterness (12) | |
| asininities (11) | |
| assassinate (11) | |
| earnestness (11) | |
| enteritises (11) | |
| entertainer (11) | |
| inanenesses (11) | |
| inertnesses (11) | |
| instantiate (11) | |
| instantness (11) | |
| intenseness (11) | |
| intensities (11) | |
| nastinesses (11) | |
| nattinesses (11) | |
| retreatants (11) | |
| sternnesses (11) | |
| tastinesses (11) | |
| tattinesses (11) | |
| tensenesses (11) | |
| tersenesses (11) | |
| testinesses (11) | |
| tinninesses (11) | |
| traitresses (11) | |
| tritenesses (11) | |
| airinesses (10) | |
| arrestants (10) | |
| artistries (10) | |
| easinesses (10) | |
| easterners (10) | |
| eerinesses (10) | |
| entireness (10) | |
| entireties (10) | |
| eternities (10) | |
| innateness (10) | |
| insaneness (10) | |
| insanities (10) | |
| insentient (10) | |
| intenerate (10) | |
| intentness (10) | |
| internists (10) | |
| intestates (10) | |
| intestines (10) | |
| nearnesses (10) | |
| neatnesses (10) | |
| rarenesses (10) | |
| reassesses (10) | |
| reentrants (10) | |
| reinitiate (10) | |
| reiterates (10) | |
| restresses (10) | |
| retreatant (10) | |
| retreaters (10) | |
| sanenesses (10) | |
| sensitises (10) | |
| sententiae (10) | |
| sereneness (10) | |
| serenities (10) | |
| tarantases (10) | |
| tartnesses (10) | |
| teentsiest (10) | |
| tertiaries (10) | |
| tininesses (10) | |
| titanesses (10) | |
| anisettes (9) | |
| anserines (9) | |
| anteaters (9) | |
| antisense (9) | |
| antistate (9) | |
| arrestant (9) | |
| arrestees (9) | |
| arresters (9) | |
| arsenates (9) | |
| arteritis (9) | |
| assenters (9) | |
| asserters (9) | |
| assisters (9) | |
| astatines (9) | |
| attesters (9) | |
| easterner (9) | |
| einsteins (9) | |
| ensnarers (9) | |
| enteritis (9) | |
| entertain (9) | |
| entrainer (9) | |
| esterases (9) | |
| eternises (9) | |
| inaneness (9) | |
| inanities (9) | |
| inertness (9) | |
| initiates (9) | |
| insatiate (9) | |
| insensate (9) | |
| inserters (9) | |
| insetters (9) | |
| insistent (9) | |
| insisters (9) | |
| insnarers (9) | |
| intensest (9) | |
| interests (9) | |
| internees (9) | |
| internist (9) | |
| interties (9) | |
| intestate (9) | |
| intestine (9) | |
| irritates (9) | |
| itinerant (9) | |
| itinerate (9) | |
| narraters (9) | |
| nastiness (9) | |
| nattiness (9) | |
| nineteens (9) | |
| ratteners (9) | |
| rearrests (9) | |
| reasserts (9) | |
| reentrant (9) | |
| reentries (9) | |
| reinserts (9) | |
| reiterate (9) | |
| resetters (9) | |
| resisters (9) | |
| retinenes (9) | |
| retinites (9) | |
| retinitis (9) | |
| retreater (9) | |
| sanitates (9) | |
| sanitises (9) | |
| sarsenets (9) | |
| satieties (9) | |
| satirises (9) | |
| seeresses (9) | |
| sensitise (9) | |
| sententia (9) | |
| sentients (9) | |
| serenatas (9) | |
| sestertia (9) | |
| setenants (9) | |
| sirenians (9) | |
| stannites (9) | |
| starriest (9) | |
| stearates (9) | |
| steatites (9) | |
| sternites (9) | |
| sternness (9) | |
| straitest (9) | |
| taeniases (9) | |
| taeniasis (9) | |
| tartrates (9) | |
| tastiness (9) | |
| tattiness (9) | |
| teensiest (9) | |
| teentsier (9) | |
| tenseness (9) | |
| tensities (9) | |
| terseness (9) | |
| testiness (9) | |
| tetanises (9) | |
| tinniness (9) | |
| titanates (9) | |
| titanites (9) | |
| titterers (9) | |
| traitress (9) | |
| treatises (9) | |
| tressiest (9) | |
| trinities (9) | |
| triteness (9) | |
| airiness (8) | |
| anatases (8) | |
| anisette (8) | |
| anserine (8) | |
| anteater (8) | |
| antennae (8) | |
| antennas (8) | |
| antsiest (8) | |
| ariettas (8) | |
| ariettes (8) | |
| aristate (8) | |
| arrestee (8) | |
| arrester (8) | |
| arsenate (8) | |
| arteries (8) | |
| artistes (8) | |
| artsiest (8) | |
| assenter (8) | |
| asserter (8) | |
| assesses (8) | |
| assister (8) | |
| astatine (8) | |
| asterias (8) | |
| atresias (8) | |
| attainer (8) | |
| attester (8) | |
| earnests (8) | |
| easiness (8) | |
| eateries (8) | |
| eeriness (8) | |
| einstein (8) | |
| ensnarer (8) | |
| ensnares (8) | |
| entasias (8) | |
| ententes (8) | |
| enterers (8) | |
| entities (8) | |
| entrants (8) | |
| entreats (8) | |
| eserines (8) | |
| esterase (8) | |
| estreats (8) | |
| eternise (8) | |
| etesians (8) | |
| inerrant (8) | |
| inertiae (8) | |
| initiate (8) | |
| insanest (8) | |
| inserter (8) | |
| insetter (8) | |
| insister (8) | |
| insnarer (8) | |
| insnares (8) | |
| instates (8) | |
| intenser (8) | |
| interest (8) | |
| internee (8) | |
| internes (8) | |
| intertie (8) | |
| iritises (8) | |
| irritate (8) | |
| isatines (8) | |
| iterates (8) | |
| narrater (8) | |
| narrates (8) | |
| nastiest (8) | |
| nattiest (8) | |
| nearness (8) | |
| neatness (8) | |
| nettiest (8) | |
| nineteen (8) | |
| nineties (8) | |
| niteries (8) | |
| nitrites (8) | |
| nittiest (8) | |
| rareness (8) | |
| rarities (8) | |
| ratteens (8) | |
| rattener (8) | |
| rattiest (8) | |
| rearrest (8) | |
| reassert (8) | |
| reassess (8) | |
| reattain (8) | |
| reenters (8) | |
| reinsert (8) | |
| reinters (8) | |
| renitent (8) | |
| rennases (8) | |
| rentiers (8) | |
| reraises (8) | |
| resetter (8) | |
| resister (8) | |
| restarts (8) | |
| restates (8) | |
| restress (8) | |
| retainer (8) | |
| retastes (8) | |
| retiarii (8) | |
| retinene (8) | |
| retinite (8) | |
| retirant (8) | |
| retirees (8) | |
| retirers (8) | |
| retreats (8) | |
| saneness (8) | |
| sanitate (8) | |
| sanities (8) | |
| sanitise (8) | |
| sarsenet (8) | |
| sassiest (8) | |
| satiates (8) | |
| satinets (8) | |
| satirise (8) | |
| sensates (8) | |
| sentient (8) | |
| sentries (8) | |
| serenata (8) | |
| serenate (8) | |
| serenest (8) | |
| seriates (8) | |
| serrates (8) | |
| sestinas (8) | |
| sestines (8) | |
| setenant (8) | |
| sienites (8) | |
| sinister (8) | |
| sirenian (8) | |
| sissiest (8) | |
| sneerers (8) | |
| stanines (8) | |
| stannite (8) | |
| starrier (8) | |
| starters (8) | |
| stearate (8) | |
| steatite (8) | |
| steerers (8) | |
| sternest (8) | |
| sternite (8) | |
| stinters (8) | |
| stirrers (8) | |
| straiter (8) | |
| strasses (8) | |
| stresses (8) | |
| strettas (8) | |
| striates (8) | |
| tannates (8) | |
| tarriers (8) | |
| tarriest (8) | |
| tarsiers (8) | |
| tartness (8) | |
| tartrate (8) | |
| tastiest (8) | |
| tattiest (8) | |
| teariest (8) | |
| teeniest (8) | |
| teensier (8) | |
| teniases (8) | |
| teniasis (8) | |
| tennises (8) | |
| tennists (8) | |
| tentiest (8) | |
| terranes (8) | |
| terraria (8) | |
| terrases (8) | |
| terreens (8) | |
| terrenes (8) | |
| terriers (8) | |
| terrines (8) | |
| tesserae (8) | |
| testates (8) | |
| testiest (8) | |
| tetanies (8) | |
| tetanise (8) | |
| tininess (8) | |
| tinniest (8) | |
| titanate (8) | |
| titaness (8) | |
| titanite (8) | |
| titrates (8) | |
| titterer (8) | |
| treaters (8) | |
| treaties (8) | |
| treatise (8) | |
| tressier (8) | |
| triennia (8) | |
| trientes (8) | |
| tristate (8) | |
| aerates (7) | |
| aeriest (7) | |
| airiest (7) | |
| anatase (7) | |
| annates (7) | |
| antenna (7) | |
| arenite (7) | |
| arietta (7) | |
| ariette (7) | |
| aristae (7) | |
| arrears (7) | |
| arrests (7) | |
| arrises (7) | |
| arsines (7) | |
| artiest (7) | |
| artiste (7) | |
| artsier (7) | |
| asinine (7) | |
| assents (7) | |
| asserts (7) | |
| asteria (7) | |
| atresia (7) | |
| attests (7) | |
| attires (7) | |
| attrite (7) | |
| earners (7) | |
| earnest (7) | |
| easiest (7) | |
| eastern (7) | |
| easters (7) | |
| eeriest (7) | |
| ensnare (7) | |
| entases (7) | |
| entasia (7) | |
| entasis (7) | |
| entente (7) | |
| enterer (7) | |
| entires (7) | |
| entrain (7) | |
| entrant (7) | |
| entreat (7) | |
| entrees (7) | |
| entries (7) | |
| erasers (7) | |
| errants (7) | |
| erratas (7) | |
| eserine (7) | |
| estates (7) | |
| estreat (7) | |
| estrins (7) | |
| etatist (7) | |
| etesian (7) | |
| inanest (7) | |
| inertia (7) | |
| insaner (7) | |
| inserts (7) | |
| insnare (7) | |
| instate (7) | |
| intense (7) | |
| intents (7) | |
| interne (7) | |
| interns (7) | |
| intines (7) | |
| intreat (7) | |
| iratest (7) | |
| isatine (7) | |
| iterant (7) | |
| iterate (7) | |
| nannies (7) | |
| narrate (7) | |
| nasties (7) | |
| natters (7) | |
| nattier (7) | |
| nearest (7) | |
| neatens (7) | |
| neatest (7) | |
| nesters (7) | |
| netters (7) | |
| nettier (7) | |
| ninnies (7) | |
| niterie (7) | |
| nitrate (7) | |
| nitrite (7) | |
| nittier (7) | |
| rainier (7) | |
| raisers (7) | |
| ranters (7) | |
| rasters (7) | |
| ratites (7) | |
| ratteen (7) | |
| rattens (7) | |
| ratters (7) | |
| rattier (7) | |
| rearers (7) | |
| reearns (7) | |
| reenter (7) | |
| reinter (7) | |
| renests (7) | |
| rennase (7) | |
| rennets (7) | |
| rennins (7) | |
| renters (7) | |
| rentier (7) | |
| reraise (7) | |
| rerisen (7) | |
| rerises (7) | |
| reseats (7) | |
| resents (7) | |
| resists (7) | |
| resites (7) | |
| restart (7) | |
| restate (7) | |
| resters (7) | |
| retaste (7) | |
| retears (7) | |
| retenes (7) | |
| retests (7) | |
| retinae (7) | |
| retines (7) | |
| retints (7) | |
| retiree (7) | |
| retirer (7) | |
| retires (7) | |
| retrain (7) | |
| retreat (7) | |
| retries (7) | |
| rinsers (7) | |
| ritters (7) | |
| sanseis (7) | |
| sarsens (7) | |
| sassier (7) | |
| sassies (7) | |
| sateens (7) | |
| satiate (7) | |
| satinet (7) | |
| satires (7) | |
| searest (7) | |
| seaters (7) | |
| seeress (7) | |
| seiners (7) | |
| seisers (7) | |
| seisins (7) | |
| senarii (7) | |
| senates (7) | |
| sennets (7) | |
| sennits (7) | |
| sensate (7) | |
| sereins (7) | |
| serener (7) | |
| serenes (7) | |
| seriate (7) | |
| serines (7) | |
| serrate (7) | |
| serries (7) | |
| sestets (7) | |
| sestina (7) | |
| sestine (7) | |
| settees (7) | |
| setters (7) | |
| sienite (7) | |
| siennas (7) | |
| sierran (7) | |
| sierras (7) | |
| siestas (7) | |
| sinners (7) | |
| sinters (7) | |
| sirrees (7) | |
| sissier (7) | |
| sissies (7) | |
| sisters (7) | |
| sitters (7) | |
| snarers (7) | |
| sneerer (7) | |
| stanine (7) | |
| starers (7) | |
| starets (7) | |
| starter (7) | |
| staters (7) | |
| steerer (7) | |
| sterner (7) | |
| stinter (7) | |
| stirrer (7) | |
| streets (7) | |
| stretta (7) | |
| strette (7) | |
| stretti (7) | |
| striate (7) | |
| taeniae (7) | |
| taenias (7) | |
| tannate (7) | |
| tanners (7) | |
| tannest (7) | |
| tansies (7) | |
| tarrier (7) | |
| tarries (7) | |
| tarsier (7) | |
| tartest (7) | |
| tassets (7) | |
| tassies (7) | |
| tasters (7) | |
| tastier (7) | |
| tatters (7) | |
| tattier (7) | |
| tatties (7) | |
| tearers (7) | |
| tearier (7) | |
| teasers (7) | |
| teeners (7) | |
| teenier (7) | |
| teeters (7) | |
| tenants (7) | |
| tenners (7) | |
| tennies (7) | |
| tennist (7) | |
| tensest (7) | |
| tenters (7) | |
| tentier (7) | |
| ternate (7) | |
| terrain (7) | |
| terrane (7) | |
| terreen (7) | |
| terrene (7) | |
| terrets (7) | |
| terrier (7) | |
| terries (7) | |
| terrine (7) | |
| territs (7) | |
| tersest (7) | |
| tertian (7) | |
| tessera (7) | |
| testate (7) | |
| testees (7) | |
| testers (7) | |
| testier (7) | |
| tetters (7) | |
| tiniest (7) | |
| tinners (7) | |
| tinnier (7) | |
| tinters (7) | |
| tisanes (7) | |
| titrate (7) | |
| titters (7) | |
| titties (7) | |
| trainee (7) | |
| trainer (7) | |
| trasses (7) | |
| treater (7) | |
| tresses (7) | |
| trienes (7) | |
| tritest (7) | |
| tsetses (7) | |
| aerate (6) | |
| aerier (6) | |
| aeries (6) | |
| airers (6) | |
| airest (6) | |
| airier (6) | |
| anears (6) | |
| anenst (6) | |
| anises (6) | |
| ansate (6) | |
| antres (6) | |
| arenas (6) | |
| aretes (6) | |
| arisen (6) | |
| arises (6) | |
| arrear (6) | |
| arrest (6) | |
| arsine (6) | |
| artier (6) | |
| assent (6) | |
| assert (6) | |
| assess (6) | |
| assets (6) | |
| astern (6) | |
| asters (6) | |
| attent (6) | |
| attest (6) | |
| attire (6) | |
| earner (6) | |
| easier (6) | |
| easies (6) | |
| easter (6) | |
| eaters (6) | |
| eerier (6) | |
| enates (6) | |
| entera (6) | |
| enters (6) | |
| entire (6) | |
| entree (6) | |
| eraser (6) | |
| erases (6) | |
| errant (6) | |
| errata (6) | |
| estate (6) | |
| esters (6) | |
| estrin (6) | |
| eterne (6) | |
| inaner (6) | |
| inanes (6) | |
| inerts (6) | |
| innate (6) | |
| inners (6) | |
| insane (6) | |
| insert (6) | |
| insets (6) | |
| intent (6) | |
| intern (6) | |
| inters (6) | |
| intine (6) | |
| irater (6) | |
| irises (6) | |
| isseis (6) | |
| nannie (6) | |
| narine (6) | |
| natter (6) | |
| nearer (6) | |
| neaten (6) | |
| neater (6) | |
| nereis (6) | |
| nesses (6) | |
| nester (6) | |
| netter (6) | |
| niseis (6) | |
| niters (6) | |
| nitres (6) | |
| raiser (6) | |
| raises (6) | |
| ranees (6) | |
| ranter (6) | |
| rarest (6) | |
| rasers (6) | |
| raster (6) | |
| raters (6) | |
| ratine (6) | |
| ratite (6) | |
| ratten (6) | |
| ratter (6) | |
| rearer (6) | |
| reatas (6) | |
| reearn (6) | |
| reests (6) | |
| renest (6) | |
| renins (6) | |
| rennet (6) | |
| rennin (6) | |
| renter (6) | |
| rentes (6) | |
| rerise (6) | |
| reseat (6) | |
| reseen (6) | |
| resees (6) | |
| resent (6) | |
| resets (6) | |
| resins (6) | |
| resist (6) | |
| resite (6) | |
| rester (6) | |
| retain (6) | |
| retear (6) | |
| retene (6) | |
| retest (6) | |
| reties (6) | |
| retina (6) | |
| retine (6) | |
| retint (6) | |
| retire (6) | |
| rinser (6) | |
| rinses (6) | |
| risers (6) | |
| ritter (6) | |
| sanest (6) | |
| sanies (6) | |
| sansei (6) | |
| sarees (6) | |
| sarsen (6) | |
| sasses (6) | |
| sateen (6) | |
| satire (6) | |
| searer (6) | |
| seater (6) | |
| seiner (6) | |
| seines (6) | |
| seiser (6) | |
| seises (6) | |
| seisin (6) | |
| senate (6) | |
| seniti (6) | |
| sennas (6) | |
| sennet (6) | |
| sennit (6) | |
| senses (6) | |
| serais (6) | |
| serein (6) | |
| serene (6) | |
| serest (6) | |
| series (6) | |
| serine (6) | |
| serins (6) | |
| sestet (6) | |
| settee (6) | |
| setter (6) | |
| sienna (6) | |
| sierra (6) | |
| siesta (6) | |
| sinner (6) | |
| sinter (6) | |
| sirees (6) | |
| sirens (6) | |
| sirree (6) | |
| sister (6) | |
| sitten (6) | |
| sitter (6) | |
| snarer (6) | |
| snares (6) | |
| sneers (6) | |
| stanes (6) | |
| starer (6) | |
| stares (6) | |
| stases (6) | |
| stater (6) | |
| states (6) | |
| steers (6) | |
| steins (6) | |
| steres (6) | |
| sterna (6) | |
| sterns (6) | |
| street (6) | |
| stress (6) | |
| striae (6) | |
| taenia (6) | |
| tanner (6) | |
| tarres (6) | |
| tarter (6) | |
| tasses (6) | |
| tasset (6) | |
| tassie (6) | |
| taster (6) | |
| tastes (6) | |
| taters (6) | |
| tatter (6) | |
| tattie (6) | |
| tearer (6) | |
| teaser (6) | |
| teases (6) | |
| teener (6) | |
| teeter (6) | |
| tenant (6) | |
| tenets (6) | |
| teniae (6) | |
| tenias (6) | |
| tenner (6) | |
| tennis (6) | |
| tenser (6) | |
| tenses (6) | |
| tenter (6) | |
| tentie (6) | |
| terais (6) | |
| terete (6) | |
| ternes (6) | |
| terrae (6) | |
| terras (6) | |
| terret (6) | |
| territ (6) | |
| terser (6) | |
| testae (6) | |
| testee (6) | |
| tester (6) | |
| testes (6) | |
| testis (6) | |
| tetras (6) | |
| tetter (6) | |
| tineas (6) | |
| tinier (6) | |
| tinner (6) | |
| tinter (6) | |
| tisane (6) | |
| titers (6) | |
| titres (6) | |
| titter (6) | |
| tittie (6) | |
| treats (6) | |
| treens (6) | |
| triene (6) | |
| triens (6) | |
| triers (6) | |
| trines (6) | |
| triste (6) | |
| triter (6) | |
| tsetse (6) | |
| aerie (5) | |
| airer (5) | |
| anear (5) | |
| anent (5) | |
| anise (5) | |
| ansae (5) | |
| antae (5) | |
| antes (5) | |
| antre (5) | |
| areae (5) | |
| areas (5) | |
| arena (5) | |
| arete (5) | |
| arise (5) | |
| arses (5) | |
| asses (5) | |
| asset (5) | |
| aster (5) | |
| earns (5) | |
| eases (5) | |
| easts (5) | |
| eaten (5) | |
| eater (5) | |
| eerie (5) | |
| enate (5) | |
| enter (5) | |
| entia (5) | |
| erase (5) | |
| ernes (5) | |
| erses (5) | |
| esses (5) | |
| ester (5) | |
| etnas (5) | |
| inane (5) | |
| inert (5) | |
| inner (5) | |
| inset (5) | |
| inter (5) | |
| irate (5) | |
| issei (5) | |
| nares (5) | |
| nates (5) | |
| nears (5) | |
| neats (5) | |
| neist (5) | |
| nerts (5) | |
| nests (5) | |
| netts (5) | |
| nines (5) | |
| nisei (5) | |
| niter (5) | |
| nites (5) | |
| nitre (5) | |
| raise (5) | |
| ranee (5) | |
| rarer (5) | |
| rares (5) | |
| raser (5) | |
| rases (5) | |
| rater (5) | |
| rates (5) | |
| rears (5) | |
| reata (5) | |
| reest (5) | |
| reins (5) | |
| renin (5) | |
| rente (5) | |
| rents (5) | |
| reran (5) | |
| resee (5) | |
| reset (5) | |
| resin (5) | |
| rests (5) | |
| retia (5) | |
| retie (5) | |
| rinse (5) | |
| risen (5) | |
| riser (5) | |
| rises (5) | |
| rites (5) | |
| saner (5) | |
| sanes (5) | |
| saree (5) | |
| sates (5) | |
| sears (5) | |
| seats (5) | |
| seers (5) | |
| seine (5) | |
| seise (5) | |
| senna (5) | |
| sensa (5) | |
| sense (5) | |
| sente (5) | |
| senti (5) | |
| serai (5) | |
| serer (5) | |
| seres (5) | |
| serin (5) | |
| setae (5) | |
| setts (5) | |
| sines (5) | |
| siree (5) | |
| siren (5) | |
| sires (5) | |
| sises (5) | |
| sites (5) | |
| snare (5) | |
| sneer (5) | |
| stane (5) | |
| stare (5) | |
| state (5) | |
| steer (5) | |
| stein (5) | |
| stere (5) | |
| stern (5) | |
| stets (5) | |
| sties (5) | |
| tares (5) | |
| tarre (5) | |
| tasse (5) | |
| taste (5) | |
| tater (5) | |
| tates (5) | |
| tears (5) | |
| tease (5) | |
| teats (5) | |
| teens (5) | |
| tenet (5) | |
| tenia (5) | |
| tense (5) | |
| tents (5) | |
| terai (5) | |
| terne (5) | |
| terns (5) | |
| terra (5) | |
| terse (5) | |
| testa (5) | |
| tests (5) | |
| tetra (5) | |
| tiers (5) | |
| tinea (5) | |
| tines (5) | |
| tires (5) | |
| titer (5) | |
| titre (5) | |
| treat (5) | |
| treen (5) | |
| trees (5) | |
| tress (5) | |
| trets (5) | |
| trier (5) | |
| tries (5) | |
| trine (5) | |
| trite (5) | |
| anes (1) | |
| ante (1) | |
| area (1) | |
| ares (1) | |
| arse (1) | |
| asea (1) | |
| ates (1) | |
| earn (1) | |
| ears (1) | |
| ease (1) | |
| east (1) | |
| eats (1) | |
| eras (1) | |
| erne (1) | |
| erns (1) | |
| errs (1) | |
| erst (1) | |
| eses (1) | |
| etas (1) | |
| etna (1) | |
| ires (1) | |
| near (1) | |
| neat (1) | |
| nene (1) | |
| ness (1) | |
| nest (1) | |
| nets (1) | |
| nett (1) | |
| nine (1) | |
| nite (1) | |
| rare (1) | |
| rase (1) | |
| rate (1) | |
| rear (1) | |
| rees (1) | |
| rein (1) | |
| reis (1) | |
| rent (1) | |
| rest (1) | |
| rete (1) | |
| rets (1) | |
| rise (1) | |
| rite (1) | |
| sane (1) | |
| sate (1) | |
| sear (1) | |
| seas (1) | |
| seat (1) | |
| seen (1) | |
| seer (1) | |
| sees (1) | |
| seis (1) | |
| sene (1) | |
| sent (1) | |
| sera (1) | |
| sere (1) | |
| sers (1) | |
| seta (1) | |
| sets (1) | |
| sett (1) | |
| sine (1) | |
| sire (1) | |
| site (1) | |
| stet (1) | |
| tare (1) | |
| tate (1) | |
| tear (1) | |
| teas (1) | |
| teat (1) | |
| teen (1) | |
| tees (1) | |
| tens (1) | |
| tent (1) | |
| tern (1) | |
| test (1) | |
| tets (1) | |
| tier (1) | |
| ties (1) | |
| tine (1) | |
| tire (1) | |
| tree (1) | |
| tret (1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment