Contexte
Vous avez récemment été embauché par un petit cabinet comptable. Le monde de la comptabilité vous est quelque peu étranger, vous ne savez donc pas si vous suivez toutes les directives professionnelles. En particulier, vous ne savez pas quand vous devez arrondir tous ces chiffres et dans quelle direction, donc la plupart du temps, vous vous contentez de l'ailer et d'espérer le meilleur.
Contribution
Votre entrée est une chaîne unique qui représente un calcul simple. Il contient un certain nombre d'entiers non négatifs délimités par les caractères +-*/
. La chaîne se lit de gauche à droite et les règles de priorité normales sont ignorées, ce qui "23+1*3/4"
signifie "commencez par 23, ajoutez 1, multipliez par 3 et divisez par 4", le résultat étant 18. L'entrée ne contiendra pas de nombres commençant par 0
(sauf 0
lui-même), ni une division par zéro.
Production
À chaque étape du calcul, vous pouvez soit arrondir le résultat vers le haut ou vers le bas à l'entier le plus proche, soit le conserver tel quel. Enfin, vous arrondissez vers le haut ou vers le bas pour obtenir un résultat entier. Votre sortie est la liste des entiers pouvant résulter d'un tel calcul, triés et sans doublons.
Règles
Vous pouvez écrire soit un programme complet soit une fonction. Le nombre d'octets le plus bas gagne et les failles standard sont interdites.
Cas de test
"42" -> [42]
"2+0+4-0" -> [6]
"23+1*3/4" -> [18]
"5/2" -> [2,3]
"5/2+7/3*6-1" -> [17,18,19,23]
"23/2/2*30-170/3" -> [-7,-6,-2,-1,0,1,3,4]
"1/3*2*2*2*2*2*2" -> [0,16,20,21,22,24,32,64]
"1/3*9" -> [0,3,9]
1/3*9
, qui peut échouer si vous utilisez des nombres à virgule flottante.