diff --git a/strings/anagrams.py b/strings/anagrams.py index fb9ac0bd1..71cc142fb 100644 --- a/strings/anagrams.py +++ b/strings/anagrams.py @@ -6,19 +6,26 @@ from pathlib import Path def signature(word: str) -> str: - """Return a word sorted - >>> signature("test") - 'estt' - >>> signature("this is a test") - ' aehiisssttt' - >>> signature("finaltest") - 'aefilnstt' """ - return "".join(sorted(word)) + Return a word's frequency-based signature. + + >>> signature("test") + 'e1s1t2' + >>> signature("this is a test") + ' 3a1e1h1i2s3t3' + >>> signature("finaltest") + 'a1e1f1i1l1n1s1t2' + """ + frequencies = collections.Counter(word) + return "".join( + f"{char}{frequency}" for char, frequency in sorted(frequencies.items()) + ) def anagram(my_word: str) -> list[str]: - """Return every anagram of the given word + """ + Return every anagram of the given word from the dictionary. + >>> anagram('test') ['sett', 'stet', 'test'] >>> anagram('this is a test') @@ -40,5 +47,5 @@ if __name__ == "__main__": all_anagrams = {word: anagram(word) for word in word_list if len(anagram(word)) > 1} with open("anagrams.txt", "w") as file: - file.write("all_anagrams = \n ") + file.write("all_anagrams = \n") file.write(pprint.pformat(all_anagrams))