summaryrefslogtreecommitdiff
path: root/morse.py
diff options
context:
space:
mode:
Diffstat (limited to 'morse.py')
-rwxr-xr-xmorse.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/morse.py b/morse.py
new file mode 100755
index 0000000..f99e2bd
--- /dev/null
+++ b/morse.py
@@ -0,0 +1,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))