# 52 bits
@staticmethod
- def _compute_word_fingerprint(
- word: str, population: Mapping[str, int]
- ) -> int:
+ def _compute_word_fingerprint(word: str, population: Mapping[str, int]) -> int:
fp = 0
- for pair in sorted(
- population.items(), key=lambda x: x[1], reverse=True
- ):
+ for pair in sorted(population.items(), key=lambda x: x[1], reverse=True):
letter = pair[0]
if letter in fprint_feature_bit:
count = pair[1]
population: Mapping[str, int],
) -> int:
sig = 0
- for pair in sorted(
- population.items(), key=lambda x: x[1], reverse=True
- ):
+ for pair in sorted(population.items(), key=lambda x: x[1], reverse=True):
letter = pair[0]
if letter not in letter_sigs:
continue
"""
population = list_utils.population_counts(word)
fprint = Unscrambler._compute_word_fingerprint(word, population)
- letter_sig = Unscrambler._compute_word_letter_sig(
- letter_sigs, word, population
- )
+ letter_sig = Unscrambler._compute_word_letter_sig(letter_sigs, word, population)
assert fprint & letter_sig == 0
sig = fprint | letter_sig
return sig
"""
sig = Unscrambler.compute_word_sig(word)
- return self.lookup_by_sig(
- sig, include_fuzzy_matches=include_fuzzy_matches
- )
+ return self.lookup_by_sig(sig, include_fuzzy_matches=include_fuzzy_matches)
def lookup_by_sig(
self, sig: int, *, include_fuzzy_matches: bool = False