Desafio
Aqui no PPCG, com certeza gostamos de nossas sequências, então aqui está outra divertida .
Vamos definir a(n)
como sendo o menor inteiro não negativo X
que não seja igual a any a(k)
( 0 < k < n
) a(n-1)
e X
não compartilhe nenhum dígito decimal.a(0) = 0
Dada uma entrada n > 0
, saída tal a(n)
.
Por exemplo, para entrada n = 13
, temos a(13) = 20
, desde a(12) = 11
e 20
é o menor inteiro não negativo que ainda não vimos que não compartilha nenhum dígito decimal 11
.
Seqüência
Aqui estão os 20 primeiros termos para você começar. Esta é a sequência A067581 no OEIS.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 11, 20, 13, 24, 15, 23, 14, 25
Regras
- Pode-se presumir que a entrada e a saída se encaixam no tipo inteiro nativo do seu idioma.
- A entrada e saída podem ser fornecidas em qualquer formato conveniente .
- Você pode optar por um índice 0, como eu estou aqui nos meus exemplos, ou um índice para sua submissão. Por favor, indique o que você está fazendo.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
n > 1
(oun ≥ 2
) como entrada? (1-indexing)Respostas:
Python 2 , 85 bytes
-1 byte graças a Dead Possum
Experimente online!
fonte
n=0,
para -1 byte?Japonês , 18 bytes
Teste online! Acabei de adicionar o
g
recurso usado aqui, mas é algo que pretendo adicionar há muito tempo (e isso me levou ao limite, porque minha nãog
solução era de cerca de 35 bytes).Explicação
fonte
Pitão , 20 bytes
Experimente online! ou Experimente a suíte de testes.
fonte
Haskell, 79 bytes
O código é terrivelmente ineficiente. Para calcular valores maiores, ou seja,> 12, adicione
f x|x<11=x
entre as duas linhas (implementado ag
no link TIO).Experimente online!
fonte
JavaScript (ES6), 82 bytes
Indexado a 0.
Demo
Mostrar snippet de código
fonte
Casca , 18 bytes
Uma solução indexada em 1. Experimente online!
Editar: bug corrigido para +1 byte.
Explicação
A função de iteração interna do Husk
¡
tem muitos significados. Aqui, estou usando "construir lista infinita acrescentando repetidamente novos elementos computados a partir dos existentes". A segunda linha é a função auxiliar que calcula um novo elemento:A primeira linha é a função principal:
fonte
Haskell, 78 bytes
Seria ainda mais eficiente se o segundo argumento
!
não fosse a lista de números vistos, mas de números invisíveis. Mas não posso fazer isso sem usar mais bytes.Experimente online!
fonte
Mathematica 115 Bytes
Ainda há espaço para jogar golfe - e talvez use recursão (aumentando a velocidade).
Código detalhado original, com a mesma ideia básica:
fonte