Schreiben Sie eine Funktion oder ein Programm, die bzw. das eine einfache Arithmetik (Addition, Subtraktion, Multiplikation und Division) sowohl in Basis 10 als auch in Basis 2 ausführen kann.
Die Funktion nimmt einen mathematischen Ausdruck als Eingabe und gibt das richtige Ergebnis in der richtigen Basis aus. Bei der Eingabe handelt es sich um n
Zahlen, die durch einen oder mehrere Operatoren ( + - * /
) getrennt werden.
Wenn alle Eingabewerte nur 0 und 1 enthalten, werden alle Werte als binär betrachtet. Wenn mindestens eine Ziffer vorhanden ist 2-9
, werden alle Werte als Basis 10 betrachtet.
Regeln:
- Sie können davon ausgehen, dass es nur einen Operator zwischen den Nummern gibt (
10*-1
wird nicht angezeigt). - Sie können davon ausgehen, dass es keine Klammern gibt.
- Normale Operatorrangfolge (im Zweifelsfall den Ausdruck im Google-Rechner verwenden).
- Sie können nicht davon ausgehen, dass es nur ganze Zahlen geben wird
- Es gibt keine führenden Nullen in der Eingabe oder Ausgabe
- Sie können davon ausgehen, dass nur gültige Eingaben gemacht werden
- Sie können davon ausgehen, dass alle Eingabewerte positiv sind (der Minus-Operator kann jedoch eine negative Ausgabe ermöglichen
1-2=-1
und10-100=-10
). - REPL wird nicht akzeptiert
- Sie können die Eingabe als separate Argumente oder als einzelnes Argument verwenden, die Eingabe muss jedoch in der richtigen Reihenfolge erfolgen.
- Dh Sie repräsentieren kann
1-2
mit den Eingabeargumente1
,-
,2
, aber nicht1
,2
,-
.
- Dh Sie repräsentieren kann
- Sie müssen die Symbole akzeptieren
+ - * /
in der Eingabe, nichtplus
,minus
usw. - Sie müssen Gleitkommawerte unterstützen (oder bis zur maximalen Grenze Ihrer Sprache, es werden jedoch keine Ganzzahlen unterstützt).
eval
ist akzeptiert
Beispiele:
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
Dies ist Codegolf, also gewinnt der kürzeste Code in Bytes.
110/10
ist11.0
akzeptabel?