#!/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))