-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmorse.py
85 lines (77 loc) · 1.82 KB
/
morse.py
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
class Solution:
def run(self, morseToEnglish, textToTranslate):
#
# Write your code below; return type and arguments should be according to the problem's requirements
#
translatedText = ''
if textToTranslate == '':
return 'Invalid Morse Code Or Spacing'
mTE_decode = {
".-": "A",
"-...": "B",
# "-…": 'B',
"-.-.": "C",
"-..": "D",
".": "E",
"..-.": "F",
"--.": "G",
"....": "H",
# "….": 'H',
"..": "I",
".---": "J",
"-.-": "K",
".-..": "L",
"--": "M",
"-.": "N",
"---": "O",
".--.": "P",
"--.-": "Q",
".-.": "R",
"...": "S",
# "…": 'S',
"-": "T",
"..-": "U",
"...-": "V",
# "…-": 'V',
".--": "W",
"-..-": "X",
"-.--": "Y",
"--..": "Z",
".-.-.-": ".",
"-----": "0",
".----": "1",
"..---": "2",
"...--": "3",
"....-": "4",
".....": "5",
"-....": "6",
"--...": "7",
"---..": "8",
"----.": "9"
}
eTM_decode = {k:v for v,k in mTE_decode.items()}
if morseToEnglish:
for morseWord in textToTranslate.split(' '): # Split into words
if morseWord != morseWord.strip(): # Invalid spacing
return 'Invalid Morse Code Or Spacing'
for morseLetter in morseWord.split():
try:
translatedText += f'{mTE_decode[morseLetter]}'
except KeyError: # Invalid morse
return 'Invalid Morse Code Or Spacing'
translatedText += ' ' # Space between words
else: # English to Morse
for englishWord in textToTranslate.upper().split(): # Split words
for englishLetter in englishWord:
translatedText += f'{eTM_decode[englishLetter]} '
translatedText += ' ' # Three spaces between words in Morse
return translatedText.strip().lower()
# Solution.run(
# self,
# False,
# 'UHFLOA V'
# )
# run(
# False,
# 'The wizard quickly jinxed the gnomes before they vaporized.'
# )