Avalie uma expressão omnifixo fornecida.
Omnifix é como a notação de infixo da matemática normal, mas com cópias adicionais de cada símbolo em torno dos argumentos. Os símbolos externos substituem os parênteses e, portanto, não há necessidade de parênteses adicionais.
Você deve suportar adição, subtração, multiplicação, divisão e números reais positivos (números negativos podem ser escritos -0-n-
) dentro de um intervalo razoável para o seu idioma.
Mais e menos devem ser +
e -
, mas você pode usar *
ou ×
por tempos e /
ou ÷
por divisão. Outros símbolos razoáveis serão permitidos mediante solicitação.
Brownie aponta para explicação e recursos adicionais (como operações adicionais, números negativos, seqüências de caracteres etc.) Mesmo que sua resposta não possua esses recursos, fique à vontade para mostrar como poderia.
Forneça um link para testar sua solução, se possível.
Exemplos
Para maior clareza, as explicações abaixo usam alto menos ( ¯
) para indicar números negativos. Você pode retornar números negativos usando qualquer formato razoável.
-5-2-
→ 3
+2+×3×2×+
→ 8
( +2+×3×2×+
→ +2+6+
→ 8
)
-14--3-1--
→ 12
( -4--3-1--
→ -14-2-
→ 12
)
+2.1+×3.5×2.2×+
→ 9.8
( +2.1+×3.5×2.2×+
→ +2.1+7.7+
→ 9.8
)
×3×÷-0-6-÷2÷×
→ -9
( ×3×÷-0-6-÷2÷×
→ ×3×÷¯6÷2÷×
→ ×3ׯ3×
→ ¯9
)
÷4÷-3-÷1÷2÷-÷
→ 1.6
( ÷4÷-3-÷1÷2÷-÷
→ ÷4÷-3-0.5-÷
→ ÷4÷2.5÷
→ 1.6
)
-
s pode ser confundido com -
s enquanto ¯
s não pode ser confundido com -
s.
The explanations below use high minus (`¯`) to indicate negative numbers.
Você definitivamente ama APL.