Je parcourais les esolangs et suis tombé sur cette langue: https://github.com/catseye/Quylthulg .
Une chose intéressante à propos de ce langage, c'est qu'il n'utilise pas de préfixe, de suffixe ou d'infixe, il utilise les trois , appelant cela la notation "panfix".
Voici un exemple. Pour représenter infix normale 1+2
dans panfix, il devient: +1+2+
. Remarquez comment l'opérateur est à la fois avant, entre et après les opérandes. Un autre exemple est (1+2)*3
. Cela devient *+1+2+*3*
. Remarquez à nouveau comment se *
trouve dans les trois endroits par rapport aux opérandes +1+2+
et 3
.
Le défi
Comme vous l'avez peut-être deviné, votre tâche dans ce défi est de convertir une expression d'infixe en panfix.
Quelques précisions:
- Vous n'avez qu'à gérer les quatre opérations de base:
+-*/
- Vous n'aurez pas à vous occuper des versions unaires de celles-ci, seulement binaires
- Vous devez gérer les parenthèses
- Supposons les règles de priorité normales d'
*/
alors+-
et d'associativité gauche pour chacun d'eux. - Les nombres seront des entiers non négatifs
- Vous pouvez éventuellement avoir des espaces à la fois en entrée et en sortie
Cas de test
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-*
C'est le code-golf , donc le code le plus court en octets gagne!
S.split``
devrait être[...S]
, même si cela peut réellement aider à faire correspondre à l'/\d+|./g
avance et à travailler à la place.