将文本翻译成莫尔斯电码
莫尔斯电码,也称为莫尔斯电码,是一种传输文本信息的系统。 它基于使用不同持续时间的两个信号—点(短信号)和破折号(长信号)。 这个系统是由美国发明家塞缪尔*莫尔斯在19世纪上半叶开发的,并成为最早的电报通信方法之一。
字母表中的每个字母,一个数字和一些标点符号都由点和破折号的独特组合表示,例如,字母A被传递为点-破折号(。-),而字母B是dash-dot-dot-dot(-。..).
在一个字符内的两个连续点或破折号之间,在不同的字符(字母或数字)之间进行短暂的暂停—暂停时间稍长。 反过来,单词之间的停顿甚至更长。
莫尔斯电码在电报中被广泛用于长距离传输信息。 它还在无线电通信中发现了应用,特别是在海事和航空工业中。
如今,莫尔斯电码继续被无线电爱好者和复古技术爱好者研究和应用,因为信号传输可以使用电报钥匙等简单设备进行,即使在较差的通信条件下,信号
现在,基于上述系统的理论基础,我们将为拉丁字母和阿拉伯数字定义一个字典。
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)
结论
演示的结果证实此功能正常工作。 由于感叹号没有字典值,我们在输出时得到这个符号。