Escreva uma função ou programa que possa fazer aritmética simples (adição, subtração, multiplicação e divisão) na base 10 e na base 2.
A função pegará uma expressão matemática como entrada e produzirá o resultado correto na base correta. A entrada será n
números separados por um ou vários operadores ( + - * /
).
Se todos os valores de entrada contiverem apenas 0 e 1, todos os valores serão considerados binários. Se pelo menos um dígito for 2-9
, todos os valores serão considerados como base 10.
Regras:
- Você pode assumir que haverá apenas um operador entre os números (
10*-1
não aparecerá) - Você pode assumir que não haverá parênteses.
- Precedência normal do operador (tente a expressão na calculadora do Google em caso de dúvida).
- Você não pode assumir que haverá apenas números inteiros
- Não haverá zeros à esquerda na entrada ou na saída
- Você pode assumir que apenas dados válidos serão fornecidos
- Você pode assumir que todos os valores de entrada são positivos (mas o operador negativo pode tornar a saída negativa possível
1-2=-1
e10-100=-10
) - REPL não é aceito
- Você pode optar por receber a entrada como argumentos separados ou como um único argumento, mas a entrada deve estar na ordem correta.
- Ou seja, você pode representar
1-2
com os argumentos de entrada1
,-
,2
, mas não1
,2
,-
.
- Ou seja, você pode representar
- Você deve aceitar os símbolos
+ - * /
na entrada, nãoplus
,minus
etc. - Você deve suportar valores de ponto flutuante (ou até o limite máximo do seu idioma, no entanto, o suporte apenas a números inteiros não é aceito).
eval
é aceito
Exemplos:
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 é um código de golfe, portanto o código mais curto em bytes vencerá.
110/10
, é11.0
aceitável?