Debe escribir un programa que evalúe una cadena que se ingresaría en una calculadora avanzada.
El programa debe aceptar la entrada usando stdin y generar la respuesta correcta. Para los idiomas que no tienen funciones para aceptar stdin, puede asumir las funciones readLine
y print
manejar estas tareas.
Requisitos:
- No utiliza ningún tipo de funciones "eval"
- Puede manejar coma flotante y números negativos
- Admite al menos los operadores +, -, *, / y ^
- Admite paréntesis y paréntesis para anular el orden normal
- Puede manejar la entrada que contiene uno o más espacios entre los operadores y los números
- Evalúa la entrada usando el orden estándar de operaciones
Casos de prueba
Entrada
10 - 3 + 2
Salida
9
Entrada
8 + 6 / 3 - 7 + -5 / 2.5
Salida
1
Entrada
4 + [ ( -3 + 5 ) * 3.5 ] ^ 2 - 12
Salida
41
.0
al final si son enteros? Además: ¿qué tan precisa debe ser la calculadora (con respecto a la precisión de coma flotante y tal)?.0
al final. No estoy muy seguro de la precisión, pero más es mejor.Respuestas:
C ++,
640583Sangrado
Mi primer código de golf, así que espero comentarios y críticas!
fuente
using namespace std
y una función principal no está realmente bien, ¿verdad?PHP -
394354312 caracteresSangrado:
fuente
Postdata, 446
Esto utiliza el algoritmo de patio de maniobras.
Sin golf y comentado:
TODO : asociatividad derecha de exponenciación
fuente
Python 2 ,
339335 bytesPruébalo en línea!
fuente
Postdata,
1000695665494Robó ideas de ThomasW.
Característica agregada: acepta cadenas con o sin espacios alrededor de los operadores.[característica eliminada]¡Usar
ARGUMENTS
es más corto%stdin
y más fácil de probar que arrancar!Simplificó la sustitución para simplemente reemplazar los corchetes con parens.
Código:
Ungolfed y comentó:
fuente