[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ImadBel-code/python/master/algorithms/strings/morse_code.py [Back]  [Original]

#!/usr/bin/env python
"""
Pythonic Implementation of Morse Code encoding
"""

__author__ = "Aditya Krishnakumar"


# The alphabet dictionary for morse codes
morseAlphabet = {
    "A": ".-",
    "B": "-...",
    "C": "-.-.",
    "D": "-..",
    "E": ".",
    "F": "..-.",
    "G": "--.",
    "H": "....",
    "I": "..",
    "J": ".---",
    "K": "-.-",
    "L": ".-..",
    "M": "--",
    "N": "-.",
    "O": "---",
    "P": ".--.",
    "Q": "--.-",
    "R": ".-.",
    "S": "...",
    "T": "-",
    "U": "..-",
    "V": "...-",
    "W": ".--",
    "X": "-..-",
    "Y": "-.--",
    "Z": "--..",
    "1": ".----",
    "2": "..---",
    "3": "...--",
    "4": "....-",
    "5": ".....",
    "6": "-....",
    "7": "--...",
    "8": "---..",
    "9": "----.",
    "0": "-----"
}

# Lambda function for decoding the code to alphabet
inverseAlphabet = reduce(lambda a, b: dict(a.items() + b.items()),
                         [{
                             morseAlphabet[k]: k
                         } for k in morseAlphabet.keys()], {})


def encode(_text):
    return ' '.join([morseAlphabet[_c.upper()] for _c in _text[:]])


def decode(_text):
    return ''.join([inverseAlphabet[_c] for _c in _text.split(' ')])

# Dry runner
def test():
    print decode(encode("TEST")) == "TEST"


if __name__ == "__main__":
    test()

Web Proxy Viewer  |  New URL  |  Original Page