Escreva um programa ou função que receba um número inteiro positivo N. Emita uma lista de todos os números decimais distintos que podem ser escritos com exatamente N caracteres usando dígitos ( 0123456789
), pontos decimais ( .
) e sinais negativos ( -
).
Por exemplo, alguns números que seriam na lista de saída N = 4 s 1337
, 3.14
, .999
, -789
, -2.7
, e -.09
.
Os números devem ser escritos da maneira normal, mas da forma mais curta possível . Isso significa:
O ponto decimal só deve ser incluído se o número não for um número inteiro.
- por exemplo,
45.0
e45.
deve ser escrito como simples45
-45.00
deve ser escrito como-45
- por exemplo,
Não deve haver zeros à esquerda do ponto decimal.
03
e003
deve ser escrito como3
, mas30
e300
está bem como está0.3
e00.3
deve ser escrito como.3
-03
deve ser escrito como-3
-0.3
deve ser escrito como-.3
Não deve haver zeros à direita do ponto decimal
.50
e.500
deve ser escrito como.5
900.090
deve ser escrito como900.09
A exceção às duas últimas regras é o próprio zero, que deve sempre ser escrito como simples
0
.Sinais positivos (
+
) não devem ser usados, pois aumentam desnecessariamente o número.
Observe também que o sinal negativo ( -
) não deve ser usado como sinal de subtração. Ele deve aparecer apenas como o primeiro caractere de números menores que zero.
Formatação
A ordem da lista de números de saída não importa. Pode ser ascendente, descendente ou completamente misturado. É importante apenas que todos os números distintos que podem ser escritos em N caracteres estejam presentes.
A lista pode ser formatada de maneira razoável, usando espaços, novas linhas, vírgulas ou talvez algo mais entre os números, desde que as coisas sejam consistentes. Os colchetes à esquerda e à direita (ou similares) estão bem, mas coisas como aspas em torno dos números não. (ou seja, não misture visivelmente strings e ints / floats na saída.)
Por exemplo, quando N = 1, algumas saídas válidas seriam:
0 1 2 3 4 5 6 7 8 9
[1, 2, 3, 4, 5, 6, 7, 9, 0]
ans = { 5 8 9 1 3 2 0 3 4 7 6 }
Mas isso seria inválido:
[0, 1, 2, 3, 4, "5", "6", "7", "8", "9"]
Exemplos
N = 1 -> 0 1 2 3 4 5 6 7 8 9
N = 2 -> -9 -8 -7 -6 -5 -4 -3 -2 -1 .1 .2 .3 .4 .5 .6 .7 .8 .9 10 11 12 ... 97 98 99
N = 3 -> -99 -98 ... -11 -10 -.9 -.8 ... -.2 -.1 .01 .02 ... .98 .99 1.1 1.2 ... 1.9 2.1 2.2 ... 2.9 3.1 ...... 9.9 100 101 ... 998 999
As listas estão em ordem crescente, elipsizadas em alguns lugares para facilitar a leitura.
Pontuação
O código mais curto em bytes vence. Em caso de empate, a resposta mais votada ganha
Also note that the negative sign (-) should not be used as a subtraction sign. It should only appear as the first character of numbers less than zero.
0
".
-0
ser uma saída válida?