# 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):
letter = pair[0]
# 32 bits
@staticmethod
def _compute_word_letter_sig(
- letter_sigs: Mapping[str, int],
- word: str,
- population: Mapping[str, int],
+ letter_sigs: Mapping[str, int],
+ word: str,
+ population: Mapping[str, int],
) -> int:
sig = 0
for pair in sorted(population.items(), key=lambda x: x[1], reverse=True):
print(f'0x{sig:x}+{word}', file=f)
def lookup(
- self,
- word: str,
- *,
- include_fuzzy_matches: bool = False
+ self, word: str, *, include_fuzzy_matches: bool = False
) -> Dict[str, bool]:
"""Looks up a potentially scrambled word optionally including near
"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
+ self, sig: int, *, include_fuzzy_matches: bool = False
) -> 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