Фон
Вас недавно наняла небольшая бухгалтерская фирма. Мир бухгалтерского учета несколько чужд для вас, поэтому вы не уверены, что следуете всем профессиональным правилам. В частности, вы не знаете, когда вам следует округлять все эти числа и в каком направлении, поэтому большую часть времени вы просто набираете его и надеетесь на лучшее.
вход
Ваш ввод представляет собой одну строку, которая представляет простой расчет. Он содержит некоторое количество неотрицательных целых чисел, разделенных символами +-*/
. Строка читается слева направо, и нормальные правила приоритета игнорируются, поэтому "23+1*3/4"
означает «начать с 23, добавить 1, умножить на 3 и разделить на 4», в результате получится 18. Ввод не будет содержать чисел, начинающихся с 0
(кроме 0
себя), ни деление на ноль.
Выход
На каждом этапе вычислений вы можете либо округлить результат вверх или вниз до ближайшего целого числа, либо оставить его как есть. Наконец, вы округляете вверх или вниз, чтобы получить целочисленный результат. Ваш вывод - это список целых чисел, которые могут возникнуть в результате такого расчета, отсортированный и без дубликатов.
правила
Вы можете написать либо полную программу, либо функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Тестовые случаи
"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
, который может не сработать, если вы используете числа с плавающей запятой.