summaryrefslogtreecommitdiff
path: root/morse.py
blob: f99e2bd824588b9cd23cb428a6d1459e154a4554 (plain)
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))