Eu estava navegando em esolangs e me deparei com este idioma: https://github.com/catseye/Quylthulg .
Uma coisa interessante sobre essa linguagem é que ela não usa prefixo, postfix ou infix, usa as três , chamando-a de notação "panfix".
Aqui está um exemplo. Para representar infix normais 1+2em panfix, torna-se: +1+2+. Observe como o operador está antes, no meio e depois dos operandos. Outro exemplo é (1+2)*3. Isso se torna *+1+2+*3*. Observe novamente como *está em todos os três lugares em relação aos operandos +1+2+e 3.
O desafio
Como você deve ter adivinhado, sua tarefa neste desafio é converter uma expressão de infix em panfix.
Alguns esclarecimentos:
- Você só precisa lidar com as quatro operações básicas:
+-*/ - Você não terá que lidar com as versões unárias daquelas, apenas binárias
- Você tem que lidar com parênteses
- Suponha as regras de precedência normais da
*/época+-e associe à esquerda para todas elas. - Os números serão números inteiros não negativos
- Opcionalmente, você pode ter espaços na entrada e na saída
Casos de teste
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-*
Isso é código-golfe , então o código mais curto em bytes vence!

S.split``deve ser[...S], embora possa realmente ajudar a combinar/\d+|./gantecipadamente e trabalhar com isso.