将文字翻译成莫尔斯电码¶
莫尔斯电码又称摩尔斯电码,是一种传输文字信息的系统。它基于两个不同持续时间的信号,即点(短信号)和破折号(长信号)。该系统由美国发明家塞缪尔-莫尔斯于 19 世纪上半叶发明,是最早的电报通信方法之一。
每个字母、数字和一些标点符号都由独特的点和破折号组合表示,例如,字母 A 以点-破折号(.-)的形式传输,字母 B 则以破折号-点-点-点-点-点(-...)的形式传输。 一个字符内连续两个点或破折号之间的停顿很短,不同字符(字母或数字)之间的停顿稍长。反过来,单词之间的停顿更长。
莫尔斯电码被广泛应用于远距离电报传输。它还用于无线电通信,尤其是海运和航空业。
如今,无线电爱好者和复古技术爱好者仍在继续研究和使用莫尔斯电码,因为信号传输可以通过电报键等简单设备完成,而且由于其简单性,即使在通信条件差的情况下也能识别信号。
现在,根据上述该系统的理论基础,让我们来定义拉丁字母和阿拉伯数字字典。
In [ ]:
# Словарь для преобразования символов в азбуку Морзе
morse_code = Dict(
'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' => "----.",
' ' => "/" # Пробел между словами обозначается слешем
)
Out[0]:
我们来定义莫尔斯电码格式的字符串翻译函数。该函数在字典中搜索一个值。如果未找到该值,则保持不变。
In [ ]:
function text_to_morse(text::String)
morse_message = String[]
for char in uppercase(text)
if haskey(morse_code, char)
push!(morse_message, string(morse_code[char])) # Присваиваем значение из словаря
else
push!(morse_message, string(char)) # Оставляем исходный символ
end
end
return join(morse_message, " ") # Объединяем элементы вектора через пробел
end
Out[0]:
In [ ]:
# Пример использования функции
input_text = "ENGEE!"
output_morse = text_to_morse(input_text)
println(output_morse)
输出¶
演示结果证实该函数工作正常。由于感叹号在字典中没有值,我们在输出中得到了这个标记。