|
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