TheAlgorithms-Python

Форк
0
44 строки · 1.1 Кб
1
from __future__ import annotations
2

3
import collections
4
import pprint
5
from pathlib import Path
6

7

8
def signature(word: str) -> str:
9
    """Return a word sorted
10
    >>> signature("test")
11
    'estt'
12
    >>> signature("this is a test")
13
    '   aehiisssttt'
14
    >>> signature("finaltest")
15
    'aefilnstt'
16
    """
17
    return "".join(sorted(word))
18

19

20
def anagram(my_word: str) -> list[str]:
21
    """Return every anagram of the given word
22
    >>> anagram('test')
23
    ['sett', 'stet', 'test']
24
    >>> anagram('this is a test')
25
    []
26
    >>> anagram('final')
27
    ['final']
28
    """
29
    return word_by_signature[signature(my_word)]
30

31

32
data: str = Path(__file__).parent.joinpath("words.txt").read_text(encoding="utf-8")
33
word_list = sorted({word.strip().lower() for word in data.splitlines()})
34

35
word_by_signature = collections.defaultdict(list)
36
for word in word_list:
37
    word_by_signature[signature(word)].append(word)
38

39
if __name__ == "__main__":
40
    all_anagrams = {word: anagram(word) for word in word_list if len(anagram(word)) > 1}
41

42
    with open("anagrams.txt", "w") as file:
43
        file.write("all_anagrams = \n ")
44
        file.write(pprint.pformat(all_anagrams))
45

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.