diff options
| author | Raymond E. Hogenson <rayhogenson@gmail.com> | 2015-09-29 14:22:20 -0800 |
|---|---|---|
| committer | Raymond E. Hogenson <rayhogenson@gmail.com> | 2015-09-29 14:22:20 -0800 |
| commit | d0886ff7d15968039a51da6de9ea4789d15335ed (patch) | |
| tree | 0e62906956b4fcca85689a36d2f1a294ea58900b /words.py | |
| download | words-d0886ff7d15968039a51da6de9ea4789d15335ed.tar.zst | |
Add the existing files
words.txt is just a copy of /usr/share/dict/words or something like
that. This program really does work very well, so I'd appreciate it if
you didn't disrespect it, thank you very much. For some reason it's not
working now, but I think that's not my fault.
Diffstat (limited to 'words.py')
| -rw-r--r-- | words.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/words.py b/words.py new file mode 100644 index 0000000..b3420ab --- /dev/null +++ b/words.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import random + +wordList = open("words.txt") +letterNumerators = [[0 for i in range(27)] for i in range(27)] +letterDenominators = [0 for i in range(27)] +wordBeginnings = [0 for i in range(27)] +wordsNum = 0 + +for line in wordList: + line = line.lower() + line = line[:-1] + acceptable = True + for letter in line: + if (ord(letter) < 97 or ord(letter) > 122): + acceptable = False + + if len(line) < 0: + acceptable = False + if acceptable: + wordsNum += 1 + wordBeginnings[ord(line[0]) - 96] += 1 + for i in range(len(line) - 1): + letterDenominators[ord(line[i]) - 96] += 1 + letterNumerators[ord(line[i]) - 96][ord(line[i + 1]) - 96] += 1 + letterDenominators[ord(line[-1]) - 96] += 1 + letterNumerators[ord(line[-1]) - 96][0] += 1 + + +while True: + newWord = "" + j = 0 + number = random.SystemRandom().random() * wordsNum + for i in range(len(wordBeginnings)): + number -= wordBeginnings[i] + if number < 0: + newWord += (chr(i + 96)) + break + + newWordFinished = False + while not newWordFinished: + number = letterDenominators[ord(newWord[j]) - 96] * random.SystemRandom().random() + for i in range(len(letterNumerators[ord(newWord[j]) - 96])): + number -= letterNumerators[ord(newWord[j]) - 96][i] + if number < 0: + if i == 0: + newWordFinished = True + break + j = j + 1 + newWord += (chr(i + 96)) + break + + print(newWord) |
