O título é composto, a partir de 'Sequence Index Digit Not'.
Desafio:
Dado um número inteiro n
que é >= 0
, produza o n
'número th da seguinte sequência.
Aqui estão os 50 primeiros itens, com o índice (indexado 0) acima:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
1 0 3 2 5 4 7 6 9 8 22 20 30 24 23 26 25 28 27 32 11 33 10 14 13 16 15 18 17 31 12 29 19 21 50 40 41 42 44 45 35 36 37 51 38 39 52 53 55 56 34
Como essa sequência funciona?
O número no índice n
deve ser o primeiro na ordem em que não há nenhum dígito em comum n
e ainda não ocorreu nos índices anteriores. Então, quando olhamos para uma sequência normal como esta em 0-60
:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Definimos os n
'th th values assim:
0
: O primeiro número (0
) contém o mesmo dígito, portanto, procuramos o próximo (1
), que não contém o mesmo dígito. Entãon=0
saídas1
.1
: O primeiro número (0
) não contém o mesmo dígito, entãon=1
gera0
.2
: Já encontramos0
e1
, e o próximo dígito (2
) contém o mesmo dígito, procuramos o próximo (3
), que não contém o mesmo dígito. Entãon=2
saídas3
.- ...
10
: Já encontramos0-9
, então o próximo da fila é10
.10-19
contém o dígito correspondente1
,20
contém o dígito correspondente0
,21
contém o dígito correspondente1
novamente,22
é válido, portanto, én=10
emitido22
.- etc.
Regras do desafio:
- Se o seu idioma estiver indexado em 1 (ou você optar por), você poderá iniciar a sequência em
3 2 5 4 7 ...
(pulando1
atn=0
e0
atn=1
). - O maior índice mínimo que você deve oferecer suporte é
25,000
. NOTA: A sequência para no índice1,023,456,788
, porque o próximo índice na linha contém todos os 10 dígitos. - Você também tem permissão para produzir / retornar uma matriz / lista de toda a sequência, incluindo o índice,
n
se desejar.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
Essa sequência realmente criou pares em relação ao índice e às saídas. Se o índice n
gerar o
, o índice o
gera n
. Assim, você pode inserir a esquerda ou a direita e a saída será do outro lado:
0 <-> 1 (this test case is optional)
2 <-> 3
10 <-> 22
12 <-> 30
34 <-> 50
89 <-> 100
111 <-> 200
112 <-> 300
199 <-> 322
2231 <-> 4456
9605 <-> 11118
19235 <-> 46000
23451 <-> 60668
25000 <-> 13674
Aqui está uma pasta dos primeiros 25.001 casos de teste, se você quiser experimentar outros.