Parfois, il est utile d'exécuter un problème mathématique avec plusieurs entrées. Le but de ce défi est de créer un programme qui facilite cette tâche.
Expressions génératrices de nombres
Vous devez prendre en charge 3 types d'expression:
- Générateur de nombre unique: très simple, juste un nombre littéral
- Générateur de nombres multiples: Un peu plus compliqué. Ils sont entourés de crochets (
[]). Les nombres sont,séparés par des virgules ( ) dans l'expression. Exemple[-1,2,3.26]. - Générateur de portée: celui-ci est entouré d'accolades (
{}). Il aura 3 chiffres séparés par une virgule. Le format de cette expression est{start,stop,step}.startetstopsont inclusifs.
Règles d'évaluation
- Vous devez prendre en charge l'ordre des opérations. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- Vous n'avez pas besoin de prendre en charge les parenthèses.
- Un nombre quelconque d'espaces peut apparaître dans l'expression.
- Vous devez prendre en charge les nombres à virgule flottante (quelle que soit la précision par défaut de votre langue).
- Division par
0résultats enNaN(pas un nombre).
Votre programme doit prendre en charge la multiplication ( *), la division ( /), l'addition ( +) et la soustraction ( -).
Production
Chaque ligne de sortie est l'une des combinaisons des générateurs. Le format est l'expression (avec les nombres réels substitués) suivie d'un signe égal ( =) et le résultat de l'évaluation. Toutes les combinaisons des générateurs doivent être représentées dans la sortie.
Exemples
( >>>indique une entrée)
>>>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
Le programme doit être court pour que je puisse le mémoriser et l'utiliser n'importe où.
Merci à @PeterTaylor et @geokavel de m'avoir aidé avec ce post dans le bac à sable
x/0entraîne-t-il une évaluation instantanée de NaN, ou dois-je traiter NaN comme une valeur?