A volte è utile eseguire un problema di matematica con più input. L'obiettivo di questa sfida è creare un programma che faciliti questo compito.
Espressioni generatrici di numeri
Devi supportare 3 tipi di espressione:
- Generatore di numeri singoli: molto semplice, solo un numero letterale
- Generatore di più numeri: un po 'più complicato. Questi sono racchiusi tra parentesi quadre (
[]). I numeri sono,separati da virgola ( ) nell'espressione. Esempio[-1,2,3.26]. - Generatore di portata: questo è circondato da parentesi graffe (
{}). Avrà 3 numeri separati da una virgola. Il formato di questa espressione è{start,stop,step}.startestopsono inclusivi.
Regole per la valutazione
- È necessario supportare l'ordine delle operazioni. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- Non è necessario supportare la parentesi.
- Nell'espressione può verificarsi qualsiasi numero di spazi.
- È necessario supportare numeri in virgola mobile (qualsiasi precisione predefinita per la lingua va bene).
- Divisione per
0risultati inNaN(non un numero).
Il programma deve supportare moltiplicazione ( *), divisione ( /), addizione ( +) e sottrazione ( -).
Produzione
Ogni linea di uscita è una delle combinazioni dei generatori. Il formato è l'espressione (con i numeri reali sostituiti in esso) seguita da un segno di uguale ( =) e dal risultato della valutazione. Tutte le combinazioni dei generatori devono essere rappresentate nell'output.
Esempi
( >>>indica input)
>>>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
Il programma deve essere breve, quindi posso memorizzarlo e usarlo ovunque.
Grazie a @PeterTaylor e @geokavel per avermi aiutato con questo post nella sandbox
x/0comporta una valutazione istantanea su NaN o devo considerare NaN come un valore?