Перевод текста в азбуку Морзе¶
Азбука Морзе, также известная как код Морзе, — это система передачи текстовой информации. Она основана на использовании двух сигналов различной продолжительности — точки (короткий сигнал) и тире (длинный сигнал). Эта система была разработана американским изобретателем Сэмюэлем Морзе в первой половине XIX века и стала одним из первых методов телеграфной связи.
Каждая буква алфавита, цифра и некоторые знаки препинания представлены уникальной комбинацией точек и тире, например, буква A передается как точка-тире (.–), а буква B — тире-точка-точка-точка (-...). Между двумя последовательными точками или тире внутри одного знака делается короткая пауза, между разными знаками (буквами или цифрами) — пауза чуть длиннее. В свою очередь, пауза между словами еще больше.
Азбука Морзе широко использовалась в телеграфии для передачи сообщений на большие расстояния. Также она нашла применение в радиосвязи, особенно в морской и авиационной отраслях.
В наши дни азбуку Морзе продолжают изучать и применять энтузиасты радио и любители ретро-технологий, так как передача сигнала может осуществляться с помощью простых устройств, таких, как телеграфный ключ, и даже при плохих условиях связи сигналы могут быть распознаны благодаря их простоте.
Теперь, опираясь на описанные выше теоретические основы этой системы, зададим словарь для латинских букв и арабских цифр.
# Словарь для преобразования символов в азбуку Морзе
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' => "----.",
' ' => "/" # Пробел между словами обозначается слешем
)
Определим функцию перевода строки в формате кода Морзе. Данная функция выполняет поиск значения в словаре. Если значение не найдено, то она оставляет его без изменений.
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
# Пример использования функции
input_text = "ENGEE!"
output_morse = text_to_morse(input_text)
println(output_morse)
Вывод¶
Результаты демонстрации подтверждают, что данная функция работает корректно. В связи с тем, что для восклицательного знака не задано значение в словаре, на выходе мы получаем этот знак.