-
Notifications
You must be signed in to change notification settings - Fork 0
/
MORSE_DECODER.rb
63 lines (60 loc) · 1.33 KB
/
MORSE_DECODER.rb
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
$morse_dict = Hash[
"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" => "-----",
"SOS" => "...---...",
"sos" => "...---...",
"!" => "-.-.--",
"." => ".-.-.-"
]
def decodeMorse(morseCode)
words = []
morseCode.strip!
if morseCode.start_with? ".", "-"
arr = morseCode.split(" ")
arr.each{|x| words << x.split(" ")}
words.map!{|x| x.map{|y| $morse_dict.key(y)}}.map!(&:join)
return words.join(" ").upcase
else
arr = morseCode.downcase.split(" ")
arr.each{|x| words << x.split("")}
words.map!{|x| x.map{|y| $morse_dict[y]}}.map!{|x| x.join(" ")}
return words.join(" ")
end
end
puts "Please enter Morse Code to be decoded! Alternatively start with either a letter or number in order for your text to be converted to Morse."
puts decodeMorse(gets.chomp)