Ich habe Esolangs durchsucht und diese Sprache gefunden: https://github.com/catseye/Quylthulg .
Eine interessante Sache an dieser Sprache ist, dass sie kein Präfix, Postfix oder Infix verwendet. Sie verwendet alle drei und nennt es "Panfix" -Notation.
Hier ist ein Beispiel. Zur Darstellung von normaler Infix 1+2
in panfix, wird es: +1+2+
. Beachten Sie, wie sich der Operator vor, zwischen und nach den Operanden befindet. Ein anderes Beispiel ist (1+2)*3
. Das wird *+1+2+*3*
. Beachten Sie noch einmal, wie *
es an allen drei Stellen in Bezug auf die Operanden +1+2+
und ist 3
.
Die Herausforderung
Wie Sie vielleicht erraten haben, besteht Ihre Aufgabe in dieser Herausforderung darin, einen Ausdruck von infix nach panfix zu konvertieren.
Einige Klarstellungen:
- Sie müssen sich nur mit den vier Grundoperationen befassen:
+-*/
- Sie müssen sich nicht mit den unären Versionen davon befassen, sondern nur mit Binärdateien
- Sie müssen mit Klammern umgehen
- Nehmen Sie die normalen Prioritätsregeln von
*/
damals an+-
und lassen Sie für alle Assoziativität übrig. - Die Zahlen sind nichtnegative Ganzzahlen
- Optional können Sie sowohl in der Eingabe als auch in der Ausgabe Leerzeichen einfügen
Testfälle
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-*
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes !
S.split``
sollte es sein[...S]
, obwohl es tatsächlich hilfreich sein kann, im Voraus zu passen/\d+|./g
und stattdessen daran zu arbeiten.