fundo
Você foi contratado recentemente por uma pequena empresa de contabilidade. O mundo da contabilidade é um pouco estranho para você, então você não tem certeza se está seguindo todas as diretrizes profissionais. Em particular, você não sabe quando deve arredondar todos esses números e em que direção; portanto, na maioria das vezes, você apenas voa e espera o melhor.
Entrada
Sua entrada é uma única sequência que representa um cálculo simples. Ele contém um número de números inteiros não negativos delimitados pelos caracteres +-*/
. A sequência lê da esquerda para a direita e as regras de precedência normais são ignoradas, portanto "23+1*3/4"
significa "começar com 23, adicionar 1, multiplicar por 3 e dividir por 4", o resultado sendo 18. A entrada não conterá números que começam com 0
(exceto 0
ele próprio), nem uma divisão por zero.
Resultado
Em cada estágio do cálculo, você pode arredondar o resultado para cima ou para baixo até o número inteiro mais próximo ou mantê-lo como está. Por fim, você arredonda para cima ou para baixo para obter um resultado inteiro. Sua saída é a lista de números inteiros que podem resultar desse cálculo, classificados e sem duplicatas.
Regras
Você pode escrever um programa completo ou uma função. A contagem de bytes mais baixa vence e as brechas padrão não são permitidas.
Casos de teste
"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
, que pode falhar se você usar números de ponto flutuante.