Czasami przydatne jest uruchomienie zadania matematycznego z wieloma danymi wejściowymi. Celem tego wyzwania jest stworzenie programu, który ułatwia to zadanie.
Wyrażenia generujące liczby
Musisz obsługiwać 3 typy wyrażeń:
- Generator pojedynczych liczb: bardzo prosty, tylko liczba dosłowna
- Generator wielu numerów: odrobinę bardziej skomplikowany. Te są otoczone nawiasami kwadratowymi (
[]). Liczby są oddzielone przecinkami (,) w wyrażeniu. Przykład[-1,2,3.26]. - Generator zasięgu: ten jest otoczony nawiasami klamrowymi (
{}). Będzie miał 3 liczby oddzielone przecinkiem. Format tego wyrażenia to{start,stop,step}.startistopsą włącznie.
Zasady oceny
- Musisz obsługiwać kolejność operacji. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- Nie musisz obsługiwać nawiasów.
- W wyrażeniu może wystąpić dowolna liczba spacji.
- Musisz obsługiwać liczby zmiennoprzecinkowe (bez względu na to, jaką precyzją domyślny jest Twój język).
- Podziel według
0wyników wNaN(nie liczba).
Twój program musi obsługiwać mnożenie ( *), dzielenie ( /), dodawanie ( +) i odejmowanie ( -).
Wynik
Każda linia wyjściowa jest jedną z kombinacji generatorów. Format to wyrażenie (z podstawionymi liczbami rzeczywistymi), po którym następuje znak równości ( =) i wynik oceny. Wszystkie kombinacje generatorów muszą być przedstawione w danych wyjściowych.
Przykłady
( >>>oznacza wejście)
>>>3 * [3,2]
3 * 3 = 9
3 * 2 = 6
>>>{1,2,3}
1 = 1 <-- this is because 1 + 3 > the end
>>>{0,2,1} + {0,1,1}
0 + 0 = 0
1 + 0 = 1
2 + 0 = 2
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
>>>6/[2,3]
6/2 = 3
6/3 = 2
>>>{1.5,2.5,0.5}
1.5 = 1.5
2 = 2
2.5 = 2.5
>>>3-{6,5,-1}
3-6 = -3
3-5 = -2
>>>5/{-1,1,1}
5/-1 = -5
5/0 = NaN
5/1 = 5
>>>4.4 / [1,2.2] + {0,2,1}
4.4 / 1 + 0 = 4.4
4.4 / 1 + 1 = 5.4
4.4 / 1 + 2 = 6.4
4.4 / 2.2 + 0 = 2
4.4 / 2.2 + 1 = 3
4.4 / 2.2 + 2 = 4
>>> [1,2] / 0 + 5
1 / 0 + 5 = NaN
2 / 0 + 5 = NaN
Program musi być krótki, aby móc go zapamiętać i używać w dowolnym miejscu.
Dzięki @PeterTaylor i @geokavel za pomoc w tym poście w piaskownicy
x/0powoduje natychmiastową ocenę NaN, czy też muszę traktować NaN jako wartość?