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á nnú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*-1no 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=-1y10-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-2con los argumentos de entrada1,-,2, pero no1,2,-.
- Es decir, usted puede representarse
- Debe aceptar los símbolos
+ - * /en la entrada, noplus,minusetc. - Debe admitir valores de coma flotante (o hasta el límite máximo de su idioma, sin embargo, no solo se admiten enteros).
evales 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.0aceptable?