Écrivez une fonction ou un programme qui peut faire de l'arithmétique simple (addition, soustraction, multiplication et division) en base 10 et en base 2.
La fonction prendra une expression mathématique en entrée et produira le résultat correct dans la base correcte. L'entrée sera des n
nombres séparés par un ou plusieurs opérateurs ( + - * /
).
Si toutes les valeurs d'entrée ne contiennent que 0 et 1, toutes les valeurs sont considérées comme binaires. Si au moins un chiffre est 2-9
, toutes les valeurs sont considérées comme la base 10.
Règles:
- Vous pouvez supposer qu'il n'y aura qu'un seul opérateur entre les numéros (
10*-1
n'apparaîtra pas) - Vous pouvez supposer qu'il n'y aura pas de parenthèses.
- Priorité normale de l'opérateur (essayez l'expression dans la calculatrice Google en cas de doute).
- Vous ne pouvez pas supposer qu'il n'y aura que des entiers
- Il n'y aura pas de zéros non significatifs en entrée ou en sortie
- Vous pouvez supposer que seule une entrée valide sera donnée
- Vous pouvez supposer que toutes les valeurs d'entrée sont positives (mais l'opérateur moins peut rendre possible une sortie négative,
1-2=-1
et10-100=-10
) - REPL n'est pas accepté
- Vous pouvez choisir de prendre l'entrée en tant qu'arguments séparés ou en tant qu'argument unique, mais l'entrée doit être dans le bon ordre.
- -À- dire que vous pouvez représenter
1-2
avec les arguments d'entrée1
,-
,2
mais pas1
,2
,-
.
- -À- dire que vous pouvez représenter
- Vous devez accepter les symboles
+ - * /
dans l'entrée, pasplus
,minus
etc. - Vous devez prendre en charge les valeurs à virgule flottante (ou jusqu'à la limite maximale de votre langue, mais la prise en charge uniquement des nombres entiers n'est pas acceptée).
eval
est accepté
Exemples:
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
Il s'agit du code golf, donc le code le plus court en octets gagnera.
110/10
, est-ce11.0
acceptable?