Sonntag, 10. März 2013

Morse Code Palindrome

Das „Morse Code Palindrome“-Problem gehört zum „HP Code wars“-Wettbewerb 2013 und war eher sehr einfach zu lösen. Einmal galt es eine Botschaft in Morsecode zu übersetzen und dann die Botschaft auf ihre Palindrom-Eigenschaft hin zu untersuchen:
# HP Code wars 2013
# problem 12
# Morse Code Palindrome
# 6 points


def botschaft_decodieren(botschaft):
    """ Bekommt eine Botschaft und setzt sie
    in Morsezeichen um. Leerzeichen und Satzzeichen
    werden ignoriert. Kleinbuchstaben werden nicht
    erwartet oder beachtet.

    """
    morsecode = {"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": "--••"}
    codierte_botschaft = []
    for a in botschaft:
        codierte_botschaft.append(morsecode.get(a,""))
    return "".join(codierte_botschaft)


def palindrom_testen(datensatz):
    """ Testet auf ein Palindrom und
    schickt den Datensatz dazu zum decodieren

    """
    botschaft = botschaft_decodieren(datensatz)
    if botschaft == botschaft[::-1]:
        return True
    else:
        return False


data = """ELEGIZED 
QUIRKILY 
MERCURY 
FACE A WINE 
HAPPY DAY 
FEVER REBEL 
SOPRANOS 
EMIT OLD UFO TIME 
PROTEIN POWDER 
ANNEXING 
ENJOIN 
. """


datensaetze = data.split("\n")
for datensatz in datensaetze:
    datensatz = datensatz.strip(" ")

    if not datensatz == ".":

        if palindrom_testen(datensatz):
            print ("{} is a MCP".format(datensatz))
        else:
            print("{} is *not* a MCP".format(datensatz))
Anders als einige andere Aufgaben des diesjährigen Wettbewerbs eher keine Herausforderung.

Keine Kommentare:

Kommentar veröffentlichen