Escriba una función o programa que pueda hacer aritmética simple (suma, resta, multiplicación y división) tanto en la base 10 como en la base 2.
La función tomará una expresión matemática como entrada y generará el resultado correcto en la base correcta. La entrada será n
números separados por uno o varios operadores ( + - * /
).
Si todos los valores de entrada contienen solo 0 y 1, todos los valores se consideran binarios. Si al menos un dígito es 2-9
, todos los valores se consideran base 10.
Reglas:
- Puede suponer que solo habrá un operador entre los números (
10*-1
no aparecerá) - Puede suponer que no habrá paréntesis.
- Precedencia de operador normal (pruebe la expresión en la calculadora de Google si tiene dudas).
- No puedes asumir que solo habrá enteros
- No habrá ceros a la izquierda en la entrada o salida
- Puede suponer que solo se proporcionarán datos válidos
- Puede suponer que todos los valores de entrada son positivos (pero el operador menos puede hacer posible una salida negativa,
1-2=-1
y10-100=-10
) - REPL no es aceptado
- Usted puede optar por tomar la entrada como argumentos separados, o como un único argumento, pero la entrada tiene que estar en el orden correcto.
- Es decir, usted puede representarse
1-2
con los argumentos de entrada1
,-
,2
, pero no1
,2
,-
.
- Es decir, usted puede representarse
- Debe aceptar los símbolos
+ - * /
en la entrada, noplus
,minus
etc. - Debe admitir valores de coma flotante (o hasta el límite máximo de su idioma, sin embargo, no solo se admiten enteros).
eval
es aceptado
Ejemplos:
1+1
10
1010+10-1
1011
102+10-1
111
1+2+3
6
10*10*10
1000
11*11*11
11011
10*11*12+1
1321
10.1*10.1
110.01
20.2*20.2
408.04
10/5
2
110/10
11
Also accepted (optional line or comma-separated input):
10
+
10
-
1
11 <-- This is the output
Este es el código de golf, por lo que ganará el código más corto en bytes.
110/10
, ¿es11.0
aceptable?