Napisz program lub funkcję, która pobiera wyrażenie matematyczne w kodzie Morse'a jako dane wejściowe i zwraca rozwiązanie w kodzie Morse'a.
Prawidłowe operacje to plus: +
i minus: _
(podkreślenie). Możesz założyć, że otrzymasz tylko nieujemną liczbę całkowitą i że wynik będzie nieujemny.
Wyrażenie będzie zawierać co najmniej dwa terminy i maksymalnie dziesięć terminów. Nie będzie dwóch sąsiednich operatorów, tzn. .----+_-....
I nie będzie nawiasów.
Cyfry są oddzielone pojedynczymi spacjami. Możesz wybrać oddzielenie operatorów od liczb pojedynczym odstępem po każdej stronie (patrz przykłady).
Odpowiednikiem Morse'a dla cyfr 0–9 są:
0 -----
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.
Przykłady:
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)
---.. ....-
Obowiązują standardowe zasady dotyczące formatów we / wy itp. Akceptowanych jest kilka końcowych spacji i jedna nowa linia. Nie można podzielić liczby na kilka wierszy. Nie możesz użyć eval
ani jego odpowiednika.
To jest kod golfowy, więc wygrywa najkrótszy kod w bajtach.
J_.:s*R5"-.-"5
do konstruowania liczb. Prawdopodobnie nawet skrócić, gdy używasz spakowanych ciągów.