Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- #brutemorse.py
- morse2abc={".-":"a", "-...":"b", "-.-.":"c", "-..":"d", ".":"e", "..-.":"f", "--.":"g", "....":"h", "..":"i", ".---":"j", "-.-":"k", ".-..":"l", "--":"m", "-.":"n", "---":"o", ".--.":"p", "--.-":"q", ".-.":"r", "...":"s", "-":"t", "..-":"u", "...-":"v", ".--":"x", "-..-":"y", "-.--":"z"}
- abc2morse = dict((v,k) for k,v in morse2abc.items())
- def print_to_morse(string):
- return "/".join(abc2morse[c] for c in string)
- # morse_string = original input string of dots and dashes
- # maxlength = optional arg to limit length of decoded text
- def unmorse(morse_string, maxlength=0):
- unmorse_recursive(morse_string, 0, "", maxlength)
- def unmorse_recursive(morse_string, startindex, prev_text, maxlength=0):
- # try to decode next 1-4 dots and dashes into a character
- for i in range(startindex+1,startindex+5):
- substring_next = morse_string[startindex:i]
- if substring_next in morse2abc:
- next_char = morse2abc[substring_next]
- # if reached end of input string, print result
- if i == len(morse_string):
- text = prev_text + next_char
- if (maxlength == 0) or (len(text) == maxlength):
- print("{0} ({1})".format(text, print_to_morse(text)))
- # otherwise recurse
- else:
- unmorse_recursive(morse_string, i, prev_text + next_char, maxlength)
- unmorse("-............",6)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement