Фон
Вас нещодавно найняла невелика бухгалтерія. Світ бухгалтерського обліку для вас дещо чужий, тому ви не впевнені, чи дотримуєтесь ви всіх професійних рекомендацій. Зокрема, ви не знаєте, коли вам слід обійти всі ці цифри і в якому напрямку, тож більшу частину часу ви просто крилате його і сподіваєтесь на краще.
Вхідні дані
Ваш вхід - це один рядок, який представляє простий обчислення. Він містить деяку кількість невід’ємних цілих чисел, розділених символами +-*/
. Рядок зчитується зліва направо, а нормальні правила пріоритету ігноруються, тому "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
, який може вийти з ладу, якщо ви використовуєте числа з плаваючою комою.