Напишите программу или функцию, которая принимает математическое выражение в азбуке Морзе в качестве входных данных и возвращает решение в азбуке Морзе.
Допустимые операции: плюс: +
и минус: _
(подчеркивание). Вы можете предположить, что вы будете получать только неотрицательные целочисленные данные и что результат будет неотрицательным.
Выражение будет содержать не менее двух терминов и не более десяти терминов. Не будет двух смежных операторов, т. .----+_-....
Е. Круглых скобок не будет.
Цифры разделены пробелами. Вы можете выбрать, чтобы операторы отделялись от чисел одним пробелом с каждой стороны (см. Примеры).
Морзе эквивалент для цифр 0-9:
0 -----
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.
Примеры:
Input
Output
.----+.---- (1+1=2) Optional input: .---- + .----
..---
-...._...-- (6-3=3) Optional input: -.... _ ...--
...--
..---_...--+..--- (2-3+2=1)
1
..---+...--_....-+---.._..... (2+3-4+8-5=4)
....-
.---- ..---_-....+...-- ...-- (12-6+33=39)
...-- ----.
----. -----+----.+..--- ----._..... .....+---..+-...._.----+----.+----._..--- ----- (90+9+29-55+8+6-1+9+9-20=84)
---.. ....-
Применяются стандартные правила, касающиеся форматов ввода / вывода и т. Д. Допускается несколько пробелов и одна новая строка. Вы не можете разделить число на несколько строк. Вы не можете использовать eval
или эквивалент.
Это код гольф, поэтому выигрывает самый короткий код в байтах.
источник
J_.:s*R5"-.-"5
для построения чисел. Возможно даже сократить при использовании упакованных строк.Сетчатка, 132 байта
Грязное решение для первого прохода.
Попробуйте онлайн!
источник
MATL ,
75716968 байтПопробуйте онлайн!
Общее объяснение
Ниже я использую формат кода, чтобы отступы выражали вложенность операций.
Детальное объяснение
источник
Javascript (es6) 236 байт
много места для улучшения
распалась
использование
источник
Чистая Баш,
366317Хорошо, я мог бы сохранить 10 байтов до 307 , написав первую строку:
вместо (но мне нравится):
Образец:
или если
morse
конвертер не установлен:источник