|
1 | | -import pprint, time |
2 | | - |
3 | | - |
4 | | -def getWordPattern(word): |
| 1 | +def get_word_pattern(word: str) -> str: |
| 2 | + """ |
| 3 | + >>> get_word_pattern("pattern") |
| 4 | + '0.1.2.2.3.4.5' |
| 5 | + >>> get_word_pattern("word pattern") |
| 6 | + '0.1.2.3.4.5.6.7.7.8.2.9' |
| 7 | + >>> get_word_pattern("get word pattern") |
| 8 | + '0.1.2.3.4.5.6.7.3.8.9.2.2.1.6.10' |
| 9 | + """ |
5 | 10 | word = word.upper() |
6 | | - nextNum = 0 |
7 | | - letterNums = {} |
8 | | - wordPattern = [] |
| 11 | + next_num = 0 |
| 12 | + letter_nums = {} |
| 13 | + word_pattern = [] |
9 | 14 |
|
10 | 15 | for letter in word: |
11 | | - if letter not in letterNums: |
12 | | - letterNums[letter] = str(nextNum) |
13 | | - nextNum += 1 |
14 | | - wordPattern.append(letterNums[letter]) |
15 | | - return ".".join(wordPattern) |
| 16 | + if letter not in letter_nums: |
| 17 | + letter_nums[letter] = str(next_num) |
| 18 | + next_num += 1 |
| 19 | + word_pattern.append(letter_nums[letter]) |
| 20 | + return ".".join(word_pattern) |
16 | 21 |
|
17 | 22 |
|
18 | | -def main(): |
19 | | - startTime = time.time() |
20 | | - allPatterns = {} |
| 23 | +if __name__ == "__main__": |
| 24 | + import pprint |
| 25 | + import time |
21 | 26 |
|
22 | | - with open("Dictionary.txt") as fo: |
23 | | - wordList = fo.read().split("\n") |
| 27 | + start_time = time.time() |
| 28 | + with open("dictionary.txt") as in_file: |
| 29 | + wordList = in_file.read().splitlines() |
24 | 30 |
|
| 31 | + all_patterns = {} |
25 | 32 | for word in wordList: |
26 | | - pattern = getWordPattern(word) |
27 | | - |
28 | | - if pattern not in allPatterns: |
29 | | - allPatterns[pattern] = [word] |
| 33 | + pattern = get_word_pattern(word) |
| 34 | + if pattern in all_patterns: |
| 35 | + all_patterns[pattern].append(word) |
30 | 36 | else: |
31 | | - allPatterns[pattern].append(word) |
| 37 | + all_patterns[pattern] = [word] |
32 | 38 |
|
33 | | - with open("Word Patterns.txt", "w") as fo: |
34 | | - fo.write(pprint.pformat(allPatterns)) |
| 39 | + with open("word_patterns.txt", "w") as out_file: |
| 40 | + out_file.write(pprint.pformat(all_patterns)) |
35 | 41 |
|
36 | | - totalTime = round(time.time() - startTime, 2) |
37 | | - print(("Done! [", totalTime, "seconds ]")) |
38 | | - |
39 | | - |
40 | | -if __name__ == "__main__": |
41 | | - main() |
| 42 | + totalTime = round(time.time() - start_time, 2) |
| 43 | + print(f"Done! {len(all_patterns):,} word patterns found in {totalTime} seconds.") |
| 44 | + # Done! 9,581 word patterns found in 0.58 seconds. |
0 commit comments