Jeremy Stein - Journal
« Amazon Alabama Union Vote | Student Aid » |
Crypto Quip Helper in Python
I like to do the Crypto Quip. It’s frustrating to deal with the mechanics of finding all the matching letters, so I wrote a quick program to track my progress for me:
crypto = "MS SFFV JD PFRIQ SF WZSPDI JMHHMFXQ FK KZHHDX HDZBDQ M'C NZHH MS Z WIFRXC IZVMXW ZNPMDBDJDXS."
common = "EARIOTNSLCUDPMHGBFYWKVXZJQ"
subs = {}
def dosubs():
plain = ""
for ch in crypto:
if ch.isalpha():
if ch in subs:
plain += subs[ch]
else:
plain += ' '
else:
plain += ch
return plain
def count():
freq = {}
for ch in crypto:
if ch.isalpha() and ch not in subs:
if ch in freq:
freq[ch] += 1
else:
freq[ch] = 1
cc = sorted(freq,key=freq.get,reverse=True)
i = 0
for ch in cc:
print(freq[ch], end=' ')
print(ch, end=' ')
while common[i] in subs.values():
i+=1
print(common[i])
i+=1
command = ""
while command != '!':
print(dosubs())
print(crypto)
command = input(":").upper()
if len(command) == 2:
if command[1] in subs.values():
print(command[1] + " already assigned.")
else:
subs[command[0]] = command[1]
elif command == '?':
count()
elif command[0].isalpha():
subs.pop(command[0], None)
No Comments
Be the first to comment!
« Amazon Alabama Union Vote | Student Aid » |
Leave a Reply