initial commit

This commit is contained in:
Keith Kris
2022-01-13 20:38:59 -05:00
committed by Brennen Raimer
commit ae669ff950
2 changed files with 9499 additions and 0 deletions

168
rankwords.py Normal file
View File

@@ -0,0 +1,168 @@
#! /usr/bin/python
import re
letterscore = {
"s": 26,
"e": 25,
"a": 24,
"o": 23,
"r": 22,
"i": 21,
"l": 20,
"t": 19,
"n": 18,
"u": 17,
"d": 16,
"c": 15,
"y": 14,
"p": 13,
"m": 12,
"h": 11,
"g": 10,
"b": 9,
"k": 8,
"f": 7,
"w": 6,
"v": 5,
"z": 4,
"x": 3,
"j": 2,
"q": 1,
"\n": 0
}
def trimWordList(toRemove, words):
for word in toRemove:
try:
words.pop(word)
except(KeyError):
pass
def rankWord(word, words):
word=word.lower()
score=0
for letter in word:
score=score+letterscore[letter]
multiplier=countDistinct(word)
words[word] = score*multiplier
return score*multiplier
def rankLetters(words):
lettercount = {
"\n": 0
}
for word in words:
for letter in word:
if letter in lettercount.keys():
lettercount[letter]=lettercount[letter]+1
else:
lettercount[letter]=1
sort_letters = sorted(lettercount.items(), key=lambda x: x[1])
for key in letterscore:
letterscore[key] = 0
rank=0
for i in sort_letters:
letterscore[i[0]] = rank
rank+=1
def matchKnown(mask, words):
toRemove = []
for word in words:
if not re.search(mask, word):
toRemove.append(word)
trimWordList(toRemove, words)
def removeExcluded(mask, words):
toRemove = []
for word in words:
for letter in mask:
if re.search(letter, word):
toRemove.append(word)
trimWordList(toRemove, words)
def matchIncluded(mask, words):
toRemove = []
for word in words:
for letter in mask:
if not re.search(letter, word):
toRemove.append(word)
trimWordList(toRemove, words)
def removeMask(masks, words):
toRemove = []
for word in words:
index=0
for letter in word:
for excluded in masks[index]:
if letter == excluded:
toRemove.append(word)
index+=1
trimWordList(toRemove, words)
def countDistinct(str):
s = set(str)
return len(s)
def loadWords(file, words):
with open(file) as f:
for line in f:
words[line.rstrip()]=0;
def parseMask(mask, masks):
index=0
for letter in mask:
if letter != ".":
masks[index].append(letter)
index+=1
else:
index+=1
if __name__ == "__main__":
import sys
words = {}
loadWords(sys.argv[1], words)
masks=[]
maskList=[[]]
for index in range(0,len(next(iter(words)))-1):
new=[]
maskList.append(new)
matchKnown(sys.argv[2], words)
removeExcluded(sys.argv[4], words)
matchIncluded(sys.argv[3], words)
for index in range(5, len(sys.argv)):
masks.append(sys.argv[index])
for mask in masks:
parseMask(mask, maskList)
removeMask(maskList, words)
rankLetters(words)
for word in words:
words[word] = rankWord(word, words)
for word in words:
print str(words[word]) + " " + word

9331
words Normal file

File diff suppressed because it is too large Load Diff