Skip to content

Instantly share code, notes, and snippets.

@flubstep
Created January 4, 2016 08:17
Show Gist options
  • Save flubstep/469a624b3786bf514435 to your computer and use it in GitHub Desktop.
Save flubstep/469a624b3786bf514435 to your computer and use it in GitHub Desktop.
codes = """
a .-
b -...
c -.-.
d -..
e .
f ..-.
g --.
h ....
i ..
j .---
k -.-
l -.--
m --
n -.
o ---
p .--.
q --.-
r .-.
s ...
t -
u ..-
v ...-
w .--
x -..-
y -.--
z --..
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.
0 -----
? ..--..
""".strip().splitlines()
translation = {}
for codeline in codes:
(letter, code) = codeline.split()
translation[letter] = code
dwords = set(open('/usr/share/dict/words').read().split())
def possible(s):
if s == '':
return ['']
else:
results = []
for letter, code in translation.items():
if s.startswith(code):
subs = possible(s[len(code):])
results += [(letter + sub) for sub in subs]
return results
assert(possible('.') == ['e'])
words = possible("---..-.-.-.")
for word in words:
if word in dwords:
print(word, "FOUND")
else:
print(word)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment