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 nZahlen, 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*-1wird 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=-1und10-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-2mit den Eingabeargumente1,-,2, aber nicht1,2,-.
- Dh Sie repräsentieren kann
- Sie müssen die Symbole akzeptieren
+ - * /in der Eingabe, nichtplus,minususw. - Sie müssen Gleitkommawerte unterstützen (oder bis zur maximalen Grenze Ihrer Sprache, es werden jedoch keine Ganzzahlen unterstützt).
evalist 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/10ist11.0akzeptabel?