Musisz napisać program, który ocenia ciąg znaków, który zostałby wprowadzony do zaawansowanego kalkulatora.
Program musi zaakceptować dane wejściowe za pomocą stdin i wydać poprawną odpowiedź. W przypadku języków, które nie mają funkcji akceptujących standard, możesz przejąć funkcje readLine
i print
obsłużyć te zadania.
Wymagania:
- Nie używa żadnych funkcji „eval”
- Obsługuje liczby zmiennoprzecinkowe i liczby ujemne
- Obsługuje co najmniej operatory +, -, *, / i ^
- Obsługuje nawiasy i nawiasy do zastępowania normalnej kolejności
- Obsługuje dane wejściowe zawierające jedną lub więcej spacji między operatorami a liczbami
- Ocenia dane wejściowe przy użyciu standardowej kolejności operacji
Przypadki testowe
Wkład
10 - 3 + 2
Wydajność
9
Wkład
8 + 6 / 3 - 7 + -5 / 2.5
Wydajność
1
Wkład
4 + [ ( -3 + 5 ) * 3.5 ] ^ 2 - 12
Wydajność
41
.0
na końcu są liczby końcowe, jeśli są liczbami całkowitymi? Ponadto: jak dokładny musi być kalkulator (w odniesieniu do precyzji zmiennoprzecinkowej i tym podobnych)?.0
koniec. Nie jestem zbyt pewny precyzji, ale im więcej, tym lepiej.Odpowiedzi:
C ++,
640583Zębaty
Mój pierwszy golfowy kod, więc czekam na komentarze i krytykę!
źródło
using namespace std
a główna funkcja nie jest w porządku, prawda?PHP -
394354312 znakówZębaty:
źródło
Postscriptum, 446
Wykorzystuje algorytm stoczni manewrowej.
Nie grał w golfa i skomentował:
DO ZROBIENIA : Właściwa asocjatywność potęgowania
źródło
Python 2 ,
339335 bajtówWypróbuj online!
źródło
Postscriptum,
1000695665494Pomysły na ukradki od ThomasW.
Dodano funkcję: akceptuje ciągi znaków ze spacjami lub bez nich wokół operatorów.[funkcja usunięta]Korzystanie
ARGUMENTS
jest krótszy niż%stdin
, i łatwiejsze do badania, do startu!Uproszczono podstawianie polegające na zastąpieniu nawiasów parenami.
Kod:
Nie golfił i skomentował:
źródło