Przeglądałem esolangi i trafiłem na ten język: https://github.com/catseye/Quylthulg .
Jedną interesującą rzeczą w tym języku jest to, że nie używa on przedrostka, postfiksa ani poprawki, używa wszystkich trzech , nazywając to notacją „panfix”.
Oto przykład. Do reprezentowania normalnej Infix 1+2
w panfix, staje się: +1+2+
. Zauważ, że operator jest zarówno przed, jak i po operandach. Innym przykładem jest (1+2)*3
. To się staje *+1+2+*3*
. Zauważ ponownie, jak *
jest we wszystkich trzech miejscach w odniesieniu do operandów +1+2+
i 3
.
Wyzwanie
Jak zapewne zgadłeś, Twoim zadaniem w tym wyzwaniu jest konwersja wyrażenia z infix na panfix.
Kilka wyjaśnień:
- Musisz tylko poradzić sobie z czterema podstawowymi operacjami:
+-*/
- Nie będziesz musiał radzić sobie z pojedynczymi wersjami tych, tylko binarnymi
- Musisz poradzić sobie z nawiasami
- Zakładamy normalnych zasad pierwszeństwa
*/
wtedy+-
i lewo skojarzenie dla nich wszystkich. - Liczby będą liczbami całkowitymi nieujemnymi
- Opcjonalnie możesz mieć spacje na wejściu i wyjściu
Przypadki testowe
1+2 -> +1+2+
1+2+3 -> ++1+2++3+
(1+2)*3 -> *+1+2+*3*
10/2*5 -> */10/2/*5*
(5+3)*((9+18)/4-1) -> *+5+3+*-/+9+18+/4/-1-*
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach !
S.split``
powinno być[...S]
, chociaż może faktycznie pomóc z góry dopasować/\d+|./g
i pracować nad tym.