Sie müssen ein Programm schreiben, das eine Zeichenfolge auswertet, die in einen erweiterten Rechner eingegeben werden würde.
Das Programm muss Eingaben mit stdin akzeptieren und die richtige Antwort ausgeben. Für Sprachen, die keine Funktionen zum Akzeptieren von stdin haben, können Sie die Funktionen übernehmen readLine
und print
diese Aufgaben erledigen.
Bedarf:
- Verwendet keine Art von "Auswertungs" -Funktionen
- Kann mit Fließkomma- und negativen Zahlen umgehen
- Unterstützt mindestens die Operatoren +, -, *, / und ^
- Unterstützt Klammern und Klammern zum Überschreiben der normalen Reihenfolge
- Kann Eingaben verarbeiten, die ein oder mehrere Leerzeichen zwischen Operatoren und Zahlen enthalten
- Wertet die Eingabe anhand der Standardreihenfolge aus
Testfälle
Eingang
10 - 3 + 2
Ausgabe
9
Eingang
8 + 6 / 3 - 7 + -5 / 2.5
Ausgabe
1
Eingang
4 + [ ( -3 + 5 ) * 3.5 ] ^ 2 - 12
Ausgabe
41
.0
am Ende nachgestellt sind, wenn es sich um Ganzzahlen handelt? Außerdem: Wie genau muss der Rechner sein (in Bezug auf Gleitkommapräzision und dergleichen)?.0
am Ende ein Trailing haben . Bei der Präzision bin ich mir nicht sicher, aber mehr ist besser.Antworten:
C ++,
640583Eingerückt
Mein erster Code Golf, also freue mich auf Kommentare & Kritik!
quelle
using namespace std
und eine Hauptfunktion ist nicht wirklich in Ordnung, oder?PHP -
394354312 ZeichenEingerückt:
quelle
Nachschrift, 446
Hierfür wird der Rangierbahnhof-Algorithmus verwendet.
Nicht golfen und kommentiert:
TODO : Rechte Assoziativität der Exponentation
quelle
Python 2 ,
339335 BytesProbieren Sie es online!
quelle
Postscript,
1000695665494Ideen von ThomasW gestohlen.
Funktion hinzugefügt: akzeptiert Zeichenfolgen mit oder ohne Leerzeichen um Operatoren.[Feature entfernt]Verwenden
ARGUMENTS
ist kürzer als%stdin
und einfacher zu testen, zu booten!Vereinfachte die Ersetzung, um Klammern nur durch Parens zu ersetzen.
Code:
Ungolfed und kommentiert:
quelle