Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- best = "JQBPCOUFVWMHAXZTRLIKNGEDSY" # 3038 words
- words = load('words_list')
- # rules = generateRules(alpha) # This generates all the rules (650)
- # rules = parseRules(words, rules) # This attributes them scores
- # rules = purgeRules(rules) # This removes rules opposite each other
- # eg (A,B) and (B,A), it removes the lower scoring rule.
- rules = load('purged-rules-backup')
- monsterBuild(alpha, rules)
- def wordAgainstRule(word,rule):
- pattern = rule[1]+".*"+rule[0]
- if (re.search(pattern,word)==None):
- #print("Rule Stands")
- return 1
- else:
- #print("Rule Broken")
- return 0
- def ruleAgainstList(words,rule):
- sum = 0
- for word in words:
- sum += wordAgainstRule(word,rule)
- return sum
- def parseRules(words,rules):
- for x in rules:
- x[2] = ruleAgainstList(words,x)
- rules.sort(key=lambda x: x[2])
- return rules
- def wordAgainstAlpha(word,alpha):
- for i in range(25):
- if (wordAgainstRule(word,[alpha[i],alpha[i+1],0])==0):
- #print("Not Alphabetical")
- return 0
- #print ("Alphabetical")
- return 1
- def purgeRules(rules):
- for x in rules:
- for y in rules:
- if (x[0] == y[1]) & (x[1] == y[0]):
- rules.pop(rules.index(y))
- def generateRules(alpha):
- rules = []
- for x in alpha:
- for y in alpha:
- if(x!=y):
- rules.append([x,y,0])
- return rules
- def buildAlpha(alpha,rules):
- for x in rules:
- if wordAgainstRule(alpha,x) == 0:
- return x
- def letterSwitch(alpha,rule):
- alphaArray = []
- alphaString = ""
- for x in alpha:
- alphaArray.append(x)
- popped = alphaArray.pop(alphaArray.index(rule[0]))
- alphaArray.insert(alphaArray.index(rule[1]), popped)
- for x in alphaArray:
- alphaString += x
- return alphaString
- def monsterBuild(alpha, rules):
- alphas = []
- rule = buildAlpha(alpha, rules)
- while rule:
- alpha = letterSwitch(alpha, rule)
- if alpha in alphas:
- rules.pop(rules.index(rule))
- else:
- alphas.append(alpha)
- rule = buildAlpha(alpha,rules)
- print(rule, alpha)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement