diff options
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) |
