ich versuche immer mal wieder kompakten Code zu schreiben. Vor allem wenn ich eine Rätselaufgabe gelöst habe, weil da kommt es mir dann nicht mehr auf die Lesbarkeit an, sondern eher um weitere Möglichkeiten kennen zu lernen. Heute morgen war wieder so was. Es geht um die Funktion `translate_crypt_to_human` ich habe im Code unten die 2 kompaktesten Lösungen drin gelassen und bin auf der Suche nach etwas kürzerem. Im Prinzip Code-Golf nur mit sprechenden Namen.
Code: Alles auswählen
EXAMPLES = [
("]()]|_]|_]][-]|-|]", "hello"),
("{|^{|{{|_{]3{", "blip"),
]
def identify_words(crypt):
letters = [letter for letter in crypt.split(crypt[0]) if letter]
letters.reverse()
return letters
def translate_crypt_to_human(examples):
return {
crypt: letter
for crypt_text, human in examples
for crypt, letter in zip(identify_words(crypt_text), list(human))
}
def translate_crypt_to_human(examples):
crypt_to_human = {}
for crypt_text, human in examples:
crypt_to_human |= dict(zip(identify_words(crypt_text), list(human)))
return crypt_to_human
def translate_crypt_to_human(examples):
crypt_to_human = {}
for crypt_text, human in examples:
crypt_to_human.update(zip(identify_words(crypt_text), list(human)))
return crypt_to_human
def main():
print(translate_crypt_to_human(EXAMPLES))
if __name__ == "__main__":
main()
Danke und Grüße
Dennis