A veces es útil ejecutar un problema matemático con múltiples entradas. El objetivo de este desafío es hacer un programa que facilite esta tarea.
Expresiones generadoras de números
Debe admitir 3 tipos de expresión:
- Generador de números únicos: muy simple, solo un número literal
- Generador de números múltiples: un poco más complicado. Estas están rodeadas de corchetes (
[]
). Los números están,
separados por comas ( ) en la expresión. Ejemplo[-1,2,3.26]
. - Generador de rango: este está rodeado de llaves (
{}
). Tendrá 3 números separados por una coma. El formato de esta expresión es{start,stop,step}
.start
ystop
son inclusivos
Reglas para la evaluación
- Debe apoyar el orden de las operaciones. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- No necesita apoyar paréntesis.
- Cualquier número de espacios puede ocurrir en la expresión.
- Debe admitir números de coma flotante (cualquiera que sea la precisión de su idioma está bien)
- División por
0
resultados enNaN
(no un número).
Su programa debe admitir multiplicación ( *
), división ( /
), suma ( +
) y resta ( -
).
Salida
Cada línea de salida es una de las combinaciones de los generadores. El formato es la expresión (con los números reales sustituidos en él) seguido de un signo igual ( =
) y el resultado de la evaluación. Todas las combinaciones de los generadores deben estar representadas en la salida.
Ejemplos
( >>>
denota entrada)
>>>3 * [3,2]
3 * 3 = 9
3 * 2 = 6
>>>{1,2,3}
1 = 1 <-- this is because 1 + 3 > the end
>>>{0,2,1} + {0,1,1}
0 + 0 = 0
1 + 0 = 1
2 + 0 = 2
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
>>>6/[2,3]
6/2 = 3
6/3 = 2
>>>{1.5,2.5,0.5}
1.5 = 1.5
2 = 2
2.5 = 2.5
>>>3-{6,5,-1}
3-6 = -3
3-5 = -2
>>>5/{-1,1,1}
5/-1 = -5
5/0 = NaN
5/1 = 5
>>>4.4 / [1,2.2] + {0,2,1}
4.4 / 1 + 0 = 4.4
4.4 / 1 + 1 = 5.4
4.4 / 1 + 2 = 6.4
4.4 / 2.2 + 0 = 2
4.4 / 2.2 + 1 = 3
4.4 / 2.2 + 2 = 4
>>> [1,2] / 0 + 5
1 / 0 + 5 = NaN
2 / 0 + 5 = NaN
El programa debe ser breve para que pueda memorizarlo y usarlo en cualquier lugar.
Gracias a @PeterTaylor y @geokavel por ayudarme con esta publicación en el sandbox.
x/0
resulta en una evaluación instantánea de NaN, o tengo que tratar el NaN como un valor?