Я просматривал esolangs и случайно наткнулся на этот язык: https://github.com/catseye/Quylthulg .
Что интересно в этом языке, так это то, что он не использует префикс, постфикс или инфикс, он использует все три из них , называя это обозначением «panfix».
Вот пример. Чтобы представить нормальный инфикс 1+2
в panfix, она становится: +1+2+
. Обратите внимание, как оператор находится до, между и после операндов. Еще один пример (1+2)*3
. Это становится *+1+2+*3*
. Еще раз обратите внимание, как *
во всех трех местах относительно операндов +1+2+
и 3
.
Соревнование
Как вы уже догадались, ваша задача в этом вызове - преобразовать выражение из инфикса в панфикс.
Несколько уточнений:
- Вам нужно только разобраться с четырьмя основными операциями:
+-*/
- Вам не придется иметь дело с унарными версиями, только двоичными
- Вы должны иметь дело с круглыми скобками
- Предположим, нормальные правила предшествования
*/
тогда+-
и оставил ассоциативность для всех из них. - Числа будут неотрицательными целыми числами
- Вы можете опционально иметь пробелы как на входе, так и на выходе.
Тестовые случаи
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-*
Это код-гольф , поэтому выигрывает самый короткий код в байтах !
S.split``
должно быть[...S]
, хотя на самом деле это может помочь на/\d+|./g
начальном этапе и вместо этого работать над этим.