1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#!/usr/bin/env python3
import sys
morse = [
".-",
"-...",
"-.-.",
"-..",
".",
"..-.",
"--.",
"....",
"..",
".---",
"-.-",
".-..",
"--",
"-.",
"---",
".--.",
"--.-",
".-.",
"...",
"-",
"..-",
"...-",
".--",
"-..-",
"-.--",
"--..",
]
mhz = [
["shell", "3.505"],
["halls", "3.515"],
["slick", "3.522"],
["trick", "3.532"],
["boxes", "3.535"],
["leaks", "3.542"],
["strobe", "3.545"],
["bistro", "3.552"],
["flick", "3.555"],
["bombs", "3.565"],
["break", "3.572"],
["brick", "3.575"],
["steak", "3.582"],
["sting", "3.592"],
["vector", "3.595"],
["beats", "3.600"],
]
def find(it, v):
for i, x in enumerate(it):
if x == v:
return i
return -1
word = []
for i, arg in enumerate(sys.argv[1:]):
if arg == "x" or arg == "X":
word.append(-1)
else:
v = find(morse, arg)
if v == -1:
print("Letter {} invalid".format(i+1))
word.append(v)
for i in range(5):
w = word[i:] + word[:i]
text = "".join(chr(c + ord('a')) for c in w)
poss = []
for [mt, m] in mhz:
if all([a == "`" or a == b for (a,b) in zip(text, mt)]):
poss.append(m)
print(text + ": " + str(poss))
|