Stavo navigando su esolangs e ho provato questa lingua: https://github.com/catseye/Quylthulg .
Una cosa interessante di questo linguaggio è che non usa prefisso, postfisso o infisso, li usa tutti e tre , chiamandolo notazione "panfix".
Ecco un esempio Per rappresentare normale infisso 1+2
in panfix, diventa: +1+2+
. Notare come si trova l'operatore prima, tra e dopo gli operandi. Un altro esempio è (1+2)*3
. Questo diventa *+1+2+*3*
. Notare di nuovo come si *
trova in tutti e tre i punti rispetto agli operandi +1+2+
e 3
.
La sfida
Come avrai intuito, il tuo compito in questa sfida è convertire un'espressione da infix a panfix.
Alcuni chiarimenti:
- Devi solo affrontare le quattro operazioni di base:
+-*/
- Non dovrai avere a che fare con le versioni unarie di quelle, solo binarie
- Devi fare i conti con la parentesi
- Assumi le normali regole di precedenza di
*/
allora+-
e associa la sinistra a tutte. - I numeri saranno numeri interi non negativi
- Opzionalmente puoi avere uno spazio sia in input che in output
Casi 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-*
Questo è code-golf , quindi vince il codice più breve in byte !
S.split``
dovrebbe essere[...S]
, anche se in realtà potrebbe essere utile abbinare in/\d+|./g
anticipo e lavorare invece su quello.