word = words_by_sigs[sig]
print(f'0x{sig:x}+{word}', file=f)
- def lookup(
- self, word: str, *, include_fuzzy_matches: bool = False
- ) -> Dict[str, bool]:
+ def lookup(self, word: str, *, window_size: int = 5) -> Dict[str, bool]:
"""Looks up a potentially scrambled word optionally including near
"fuzzy" matches.
>>> u = Unscrambler()
- >>> u.lookup('eanycleocipd', include_fuzzy_matches=False)
+ >>> u.lookup('eanycleocipd', window_size=0)
{'encyclopedia': True}
"""
sig = Unscrambler.compute_word_sig(word)
- return self.lookup_by_sig(sig, include_fuzzy_matches=include_fuzzy_matches)
+ return self.lookup_by_sig(sig, window_size=window_size)
- def lookup_by_sig(
- self, sig: int, *, include_fuzzy_matches: bool = False
- ) -> Dict[str, bool]:
+ def lookup_by_sig(self, sig: int, *, window_size: int = 5) -> Dict[str, bool]:
"""Looks up a word that has already been translated into a signature by
a previous call to Unscrambler.compute_word_sig. Optionally returns
near "fuzzy" matches.
18491949645300288339
>>> u = Unscrambler()
- >>> u.lookup_by_sig(sig, include_fuzzy_matches=True)
+ >>> u.lookup_by_sig(sig)
{'pupigerous': False, 'pupigenous': False, 'unpurposing': False, 'superpurgation': False, 'unsupporting': False, 'superseptuaginarian': True, 'purpurogallin': False, 'scuppaug': False, 'purpurigenous': False, 'purpurogenous': False, 'proppage': False}
"""
ret = {}
(exact, location) = list_utils.binary_search(self.sigs, sig)
- start = location - 5
+ start = location - window_size
if start < 0:
start = 0
- end = location + 6
+ end = location + 1 + window_size
if end > len(self.words):
end = len(self.words)
for x in range(start, end):
word = self.words[x]
fsig = self.sigs[x]
- if include_fuzzy_matches is True or (fsig == sig):
+ if window_size > 0 or (fsig == sig):
ret[word] = fsig == sig
return ret