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.
źródło
J_.:s*R5"-.-"5
do konstruowania liczb. Prawdopodobnie nawet skrócić, gdy używasz spakowanych ciągów.Siatkówka, 132 bajty
Brudne rozwiązanie pierwszego przejścia.
Wypróbuj online!
źródło
MATL ,
75716968 bajtówWypróbuj online!
Ogólne wyjaśnienie
Używam formatu kodu poniżej, aby wcięcie wyrażało zagnieżdżenie operacji.
Szczegółowe wyjaśnienie
źródło
JavaScript (es6) 236 bajtów
dużo miejsca na ulepszenia
rozbity
stosowanie
źródło
Pure Bash,
366317Ok, mógłbym zapisać 10 bajtów, aby osiągnąć 307 przez napisanie 1. linii:
zamiast (ale lubię):
Próba:
lub jeśli
morse
konwerter nie jest zainstalowany:źródło