Manchmal ist es nützlich, ein mathematisches Problem mit mehreren Eingaben auszuführen. Ziel dieser Herausforderung ist es, ein Programm zu entwickeln, das diese Aufgabe erleichtert.
Zahlenerzeugende Ausdrücke
Sie müssen 3 Ausdruckstypen unterstützen:
- Single Number Generator: Sehr einfach, nur eine wörtliche Zahl
- Generator mit mehreren Nummern: Etwas komplizierter. Sie sind von eckigen Klammern (
[]) umgeben. Zahlen werden,im Ausdruck durch Kommas ( ) getrennt. Beispiel[-1,2,3.26]. - Bereichsgenerator: Dieser ist von geschweiften Klammern (
{}) umgeben. Es werden 3 durch Komma getrennte Zahlen angezeigt. Das Format dieses Ausdrucks ist{start,stop,step}.startundstopsind inklusive.
Regeln für die Bewertung
- Sie müssen die Reihenfolge der Operationen unterstützen. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- Klammern müssen nicht unterstützt werden.
- Der Ausdruck darf beliebig viele Leerzeichen enthalten.
- Sie müssen Gleitkommazahlen unterstützen (unabhängig von der Genauigkeit, mit der Ihre Sprache standardmäßig arbeitet).
- Division durch
0Ergebnisse inNaN(keine Zahl).
Ihr Programm muss Multiplikation ( *), Division ( /), Addition ( +) und Subtraktion ( -) unterstützen.
Ausgabe
Jede Ausgabezeile ist eine der Kombinationen der Generatoren. Das Format ist der Ausdruck (mit den reellen Zahlen), gefolgt von einem Gleichheitszeichen ( =) und dem Ergebnis der Auswertung. Alle Kombinationen der Generatoren müssen in der Ausgabe dargestellt werden.
Beispiele
( >>>bezeichnet die Eingabe)
>>>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
Das Programm muss kurz sein, damit ich es mir merken und überall verwenden kann.
Vielen Dank an @PeterTaylor und @geokavel, die mir bei diesem Beitrag im Sandkasten geholfen haben
x/0Ergebnis in sofortige Auswertung NaN, oder muss ich NaN als Wert behandeln?