O título é composto, a partir de 'Sequence Index Digit Not'.
Desafio:
Dado um número inteiro nque é >= 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 ndeve ser o primeiro na ordem em que não há nenhum dígito em comum ne 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=0saídas1.1: O primeiro número (0) não contém o mesmo dígito, entãon=1gera0.2: Já encontramos0e1, 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=2saídas3.- ...
10: Já encontramos0-9, então o próximo da fila é10.10-19contém o dígito correspondente1,20contém o dígito correspondente0,21contém o dígito correspondente1novamente,22é válido, portanto, én=10emitido22.- 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 ...(pulando1atn=0e0atn=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,
nse 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 ngerar o, o índice ogera 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.