Vamos definir uma sequência de números inteiros positivos. Definiremos a sequência em números pares para ser o dobro do termo anterior. Os índices ímpares da sequência serão o menor número inteiro positivo ainda não aparecendo na sequência.
Aqui estão os dois primeiros termos.
1,2,3,6,4,8,5,10,7,14,9,18,11,22,12,24,13,26,15,30
Você também pode pensar nisso como a lista de pares concatenados (n, 2n) em que n é o número inteiro positivo menos usado até o momento.
Tarefa
Dado um número n como calcular entrada o n ésimo termo nesta sequência.
Isso é código-golfe, então você deve tentar minimizar o tamanho do seu código-fonte medido em bytes.
(n,2n)
e cada número aparece apenas uma vez. Cada par é escolhido para ser o menor possível enquanto adere à última restrição.Respostas:
Haskell, 40 bytes
Baseado em zero.
l
incrementalmente cria a sequência a partir de uma lista lenta de números inteiros restantes.fonte
JavaScript (ES6),
9282696765 bytesQuão?
Nós acompanhamos:
Internamente, estamos usando um índice baseado em 0 i . Portanto, comportamentos ímpares e pares são invertidos:
Em posições ímpares, o próximo valor é simplesmente
2 * b
.Em posições pares, usamos a função recursiva g () e a tabela de pesquisa a para identificar o menor valor correspondente:
Para salvar alguns bytes, i é inicializado em
{}
vez de0
. Isso nos obriga a usar:i^n
comparar i com n porque({}) ^ n === n
Considerando que({}) - n
avalia paraNaN
.-~i
incrementar i , porque({}) + 1
geraria uma string.Demo
Mostrar snippet de código
fonte
Python 3 ,
807269 bytes-7 bytes graças ao Sr. Xcoder !
Experimente online!
fonte
set(...)
com `{* ...} por 78 bytes{*...}
vez deset(...)
.{...for...in...}
haveria mais adeus.True
para 1)Gelatina , 15 bytes
Experimente online!
fonte
Matemática ,
5653 bytes-3 bytes obrigado JungHwan Min !
Experimente online!
Com base na expressão do Mathematica fornecida no link OEIS.
fonte
Nest[k=0;If[#~FreeQ~++k,#~Join~{k,2k},#]&,{},#][[#]]&
PHP , 64 bytes
Experimente online!
PHP , 77 bytes
Experimente online!
PHP , 78 bytes
Experimente online!
fonte
PHP, 56 bytes
PHP,
7572 bytesExperimente online
fonte
05AB1E ,
161514 bytes1 indexado.
Usa o fato de que a representação binária de elementos em índices ímpares na sequência termina em um número par de zeros: A003159 .
Experimente online!
Explicação
fonte
Python 2 ,
595149 bytesExperimente online!
fundo
Todo n positivo positivo pode ser expresso exclusivamente como n = 2 o (n) c (n) , onde c (n) é ímpar.
Vamos ⟨a n ⟩ n> 0 é a sequência desde a especificação desafio.
Afirmamos que, para todos os números inteiros positivos n , o (a 2n-1 ) é par. Como o (a 2n ) = o (2a 2n-1 ) = o (a 2n-1 ) + 1 , isso equivale a afirmar que o (a 2n ) é sempre ímpar.
Suponha que a afirmação seja falsa e seja 2m-1 o primeiro índice ímpar da sequência, de modo que o (a 2m-1 ) seja ímpar. Observe que isso faz com que 2m seja o primeiro índice par da sequência, de modo que o (a 2m-1 ) seja par.
O (um 2m-1 ) é ímpar e 0 é ainda, de modo a 2m-1 é divisível por 2 . Por definição, um 2m-1 é o menor número inteiro positivo ainda não aparecendo na sequência , o que significa que um 2m-1 /2 deve ter aparecido antes. Seja k o (primeiro) índice de a 2m-1 /2 em a .
Como o (a k ) = o (a 2m-1 /2) = o (a 2m-1 ) - 1 é par, a minimalidade de n implica que k é ímpar. Por sua vez, isto significa que um k + 1 = 2- k = um 2m-1 , em contradição com a definição de um 2m-1 .
Como funciona
ainda está por vir
fonte
R ,
706965 bytesExperimente online!
Uma função anônima que recebe um argumento.
F
assume como padrãoFALSE
ou0
para que o algoritmo avalie corretamente que nenhum número inteiro positivo ainda está na sequência.O algoritmo gera os pares em um
for
loop da seguinte maneira (de ondei
passa de2
para2n
por2
):fonte
Haskell , 63 bytes
Experimente online!
Este abuso da avaliação preguiçosa de Haskell ao máximo.
fonte
Perl 6 , 50 bytes
Experimente online!
1, { ... } ... *
é uma sequência infinita gerada preguiçosamente em que cada termo após o primeiro é fornecido pelo bloco de códigos delimitado por colchetes. Como o bloco faz referência à@_
matriz, ele recebe toda a sequência atual nessa matriz.@_ % 2
), nós estamos gerando um elemento ainda indexado, então o próximo elemento é o dobro do último elemento que temos até agora:2 * @_[*-1]
.first * ∉ @_, 1..*
.$_
é o argumento para a função externa. Ele indexa na sequência infinita, fornecendo o valor de retorno da função.fonte
Mathematica, 82 bytes
Experimente online!
fonte
k , 27 bytes
1 indexado. Experimente online!
Usando em
(!y)^x
vez de&^x?!y
funciona também.fonte
C # (compilador interativo do Visual C #) , 82 bytes
Experimente online!
-6 bytes graças a @ASCIIOnly!
fonte
:
são necessários, pois será o maior número da lista2.0
=>2f
Clojure, 102 bytes
Repete as
n
vezes para criar a sequência e retorna on
item 1, indexado em 1.fonte
Ruby, 60 bytes
Indexado a 0. Fazemos loop de
n/2+1
tempos, gerando dois valores de cada vez e armazenando-os preenchendo uma matriz em seus índices.v+v*n%2
fornece a saída,v
ouv*2
dependendo da paridade den
.fonte
Ruby , 49 bytes
Comece com [0], adicione pares ao array até termos pelo menos n + 1 elementos e, em seguida, pegue o n + 1º (baseado em 1)
Experimente online!
fonte
JavaScript (ES6), 60
65bytesUma solução iterativa.
Menos golfe
Teste
fonte
Gelatina ,
131210 bytesIsso usa a observação da minha resposta Python .
Experimente online!
Como funciona
fonte