File size: 1,630 Bytes
62b040e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # Dictionary mapping Morse code sequences to English letters
MORSE_TO_TEXT = {
'.-': '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', '-----': '0', '.----': '1', '..---': '2', '...--': '3',
'....-': '4', '.....': '5', '-....': '6', '--...': '7', '---..': '8',
'----.': '9'
}
def decode_morse(morse_code: str) -> str:
"""
Decodes a Morse code string into plain text.
- Single spaces separate individual letters.
- Triple spaces (or a unique delimiter) separate entire words.
"""
decoded_message = []
# Split the message into words using three spaces as a delimiter
words = morse_code.split(' ')
for word in words:
decoded_word = ""
# Split each word into individual letter tokens
letters = word.split(' ')
for letter in letters:
# Map the Morse token to text, ignore if not found
if letter in MORSE_TO_TEXT:
decoded_word += MORSE_TO_TEXT[letter]
decoded_message.append(decoded_word)
# Join words with a single space
return ' '.join(decoded_message)
# Example execution
if __name__ == "__main__":
# Test Morse code for "HELLO WORLD"
morse = input("Please input your morse code in ...s and ---s")
print("Decoded data:", decode_morse(sample_morse))
|