Scrivi una funzione o un programma che può fare una semplice aritmetica (addizione, sottrazione, moltiplicazione e divisione) sia nella base 10 che nella base 2.
La funzione prenderà un'espressione matematica come input e produrrà il risultato corretto nella base corretta. L'input sarà composto da n
numeri separati da uno o più operatori ( + - * /
).
Se tutti i valori di input contengono solo 0 e 1, tutti i valori sono considerati binari. Se almeno una cifra è 2-9
, tutti i valori sono considerati base 10.
Regole:
- Puoi presumere che ci sarà un solo operatore tra i numeri (
10*-1
non apparirà) - Puoi presumere che non ci saranno parentesi.
- Precedenza dell'operatore normale (prova l'espressione nel calcolatore di Google in caso di dubbi).
- Non puoi presumere che ci saranno solo numeri interi
- Non ci saranno zeri iniziali in input o output
- Si può presumere che verrà fornito solo un input valido
- Puoi presumere che tutti i valori di input siano positivi (ma l'operatore meno può rendere possibile un output negativo
1-2=-1
e10-100=-10
) - REPL non è accettato
- È possibile scegliere di accettare l'input come argomenti separati o come argomento singolo, ma l'input deve essere nell'ordine corretto.
- Vale a dire che si può rappresentare
1-2
con gli argomenti di input1
,-
,2
, ma non1
,2
,-
.
- Vale a dire che si può rappresentare
- È necessario accettare i simboli
+ - * /
nell'input, noplus
,minus
ecc. - Devi supportare valori in virgola mobile (o fino al limite massimo della tua lingua, tuttavia non è accettato il supporto solo di numeri interi).
eval
è accettato
Esempi:
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
Questo è il codice golf, quindi vincerà il codice più breve in byte.
110/10
, è11.0
accettabile?