From d0886ff7d15968039a51da6de9ea4789d15335ed Mon Sep 17 00:00:00 2001 From: "Raymond E. Hogenson" Date: Tue, 29 Sep 2015 14:22:20 -0800 Subject: 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. --- words.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 words.py (limited to 'words.py') 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) -- cgit v1.3.1