Desafío
Escriba una calculadora que tome la entrada en forma verbal (como se podría decir una ecuación) y que también salga en forma verbal (como se podría decir un número).
Reglas
La calculadora debería poder:
- sumar, restar, multiplicar y dividir
- manejar operandos entre un millón y un millón negativos
- manejar salidas entre mil millones y mil millones negativos
- manejar puntos decimales en su entrada y colocarlos correctamente en su salida
- manejar la salida decimal al lugar de las centésimas, redondeando donde sea necesario
Todas las operaciones que arrojen resultados fraccionales deben redondearse al centésimo más cercano (de forma idéntica al formato de salida).
Informe con la salida "E" (por error) cuando la entrada haga que el programa falle debido a un formato incorrecto o dividido por 0; Básicamente, el programa no debería bloquearse con una entrada incorrecta, porque sería una calculadora pésima.
Se permite la calculadora , pero no se requiere que informe errores cuando los operandos o la salida escapan de sus límites. Esto está destinado a simplificar el problema, pero si no está de acuerdo conmigo, no dude en hacer una calculadora capaz de manejar correctamente mayores operandos y salidas sin informar errores.
Salida "E" en el caso de que un operando para una operación exceda los límites definidos para los operandos.
Salida "E" en caso de que la salida exceda los límites descritos para las salidas
La forma en que el programa maneja la distinción entre mayúsculas y minúsculas y el espacio en blanco se deja al golfista, como es la elección del inglés británico o estadounidense. 1
Los programas que omiten la implementación de la calculadora mediante el uso de un idioma o biblioteca que ya haya implementado la funcionalidad descrita anteriormente no serán elegibles para la victoria.
Ganador
El programa con el menor número de caracteres gana.
Ejemplos
Entrada: dos más dos
Salida: cuatro
Entrada: veintiuno punto cinco menos un punto cinco
Salida: veinte
Entrada: uno menos dos
Salida: uno negativo
Entrada: cinco veces cinco
Salida: veinticinco
Entrada: veinticinco dividido por cinco
Salida: cinco
Entrada: dos más dos menos cinco por cinco dividido por cero cero negativo cinco
Salida: diez
Entrada un millón de veces mil
Salida: mil millones
Entrada: un millón de veces mil más uno
Salida: E
Entrada: dos millones más un millón
Salida: E
Entrada: un millón más un millón más un millón
Salida: E
two plus two minus five times five divided by negative zero point five
->2 + 2 - 5 * 5 / -0.5
->54
.one million one
la entrada oone billion one
en la salida? Además, ¿el límite 1e6 o el límite 1e9 se aplica también a los resultados intermedios?one hundred divided by three point nought
? (Además, ¿por qué es la salida del ejemplo final enE
lugar de hacerlothree million
?)Respuestas:
En primer lugar, esto es totalmente engañoso y no está completo según las especificaciones.
requiere la
--disable-web-security
bandera en cromo, +22Javascript 509 + 22 = 531
El primero de la especificación es también la salida de ejemplo
Las
two plus two minus five times five divided by negative zero point five
salidas de entradaCualquier otro caso debe manejarse bien (ahora), esto todavía es bastante sencillo, solo quería que se arreglara.
Ah, y si realmente va a probarlo, puede tomar unos segundos, ya que carga la página completa de Wolfram Alpha hasta dos veces.
Bueno, sin embargo, podría haber mucho que mejorar.
fuente
Python, 982
Creo que funciona como debería de acuerdo con las especificaciones, pero probablemente haya algunos errores más. Podría actuar de manera extraña para la entrada> = mil millones o cualquier palabra inesperada que interprete incorrectamente.
Aquí hay una versión ligeramente más legible con algunos cambios:
fuente
Aquí vamos. Jugar al golf antes de la versión la rompió, pero ahora estamos de vuelta en línea. Estoy seguro de que se puede jugar más golf. Trabajaré más en eso mañana. Sin embargo, fue bastante difícil hacerlo funcionar correctamente sin jugar al golf, y mis ojos están cansados de mirarlo. Jaja
Java - 3220
Con saltos de línea y pestañas
fuente