Напишите программу или функцию, которая принимает математическое выражение в азбуке Морзе в качестве входных данных и возвращает решение в азбуке Морзе.
Допустимые операции: плюс: +
и минус: _
(подчеркивание). Вы можете предположить, что вы будете получать только неотрицательные целочисленные данные и что результат будет неотрицательным.
Выражение будет содержать не менее двух терминов и не более десяти терминов. Не будет двух смежных операторов, т. .----+_-....
Е. Круглых скобок не будет.
Цифры разделены пробелами. Вы можете выбрать, чтобы операторы отделялись от чисел одним пробелом с каждой стороны (см. Примеры).
Морзе эквивалент для цифр 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
для построения чисел. Возможно даже сократить при использовании упакованных строк.