Defina uma sequência indexada 1 da seguinte maneira:
A083569(1) = 1
A083569(n)
onden
é um número inteiro maior que1
, é o menor número inteiro m que não ocorre anteriormente, de modo quem+n
é um número primo.
Sua tarefa é receber n
e retornar A083569(n)
.
n A083569(n)
1 1
2 3
3 2
4 7
5 6
6 5
7 4
8 9
9 8
10 13
11 12
12 11
13 10
14 15
15 14
16 21
17 20
18 19
19 18
20 17
Mais casos de teste podem ser encontrados aqui . A sequência original no OEIS pode ser encontrada aqui .
Isso é código-golfe . A resposta mais curta em bytes vence. Aplicam-se brechas padrão .
Respostas:
Haskell ,
878683807469 bytesObrigado ao xnor por sugerir algumas alterações que salvaram 3 bytes!
Experimente online!
Eu sou novo em Haskell, e no golfe de Haskell, o feedback é apreciado!
Explicação
Nós definimos uma função
f n
. Definimosf n
como o primeiro elemento!!0
da lista:Discriminado:
fonte
[2,3..]
pode ser apenas[2..]
, contando até 1 é padrão. Há um embutidonotElem
.notElem
mas a primeira dica foi útil e vou me certificar de manter a segunda no bolso de trás.f 1
errado, deve ser 1.Geléia ,
1615 bytesIsto assume A083569 (n) ≤ n² (a sequência parece estar crescendo linearmente).
Experimente online!
Como funciona
fonte
A083569(n)
é no máximo on
primeiro primo maior do quen
por sua definição, que é no máximo o2n
primeiro primo, que (paran≥3
) é menor que4n*log(n)
pelos resultados de Rosser-Schoenfeld.Pitão -
181715 bytesObrigado a @isaacg por me salvar dois bytes!
De volta a este site, depois de ter estado ocupado por um tempo, espero que este ainda seja melhor.
Experimente online aqui .
fonte
-TY
é um byte menor que!/YT
, e realmente, nos mesmos casos.+hdT
para+Th
.C # (.NET Core) , 169 bytes
Experimente online!
De longe a forma mais ineficiente para calcular os resultados, por isso, abster-se de cálculo
f(n)
paran>=30
com este código. A primeira etapa é calcular recursivamente os valores def(1)
paraf(n-1)
e, em seguida, prossiga para o cálculof(n)
pesquisando o primeiroi
, quen+i
é primo ei
não está na lista de valores anteriores.fonte
x86-64 Assembly,
5755 bytesEu sou novo no golfe, então comentários / feedback são apreciados.
Nota: isso é otimizado para o comprimento do código da máquina, não para o comprimento da fonte.
Define uma função, usando a convenção padrão (ou seja, valor de retorno em eax, primeiro argumento em edi, todos os registros salvos pelo chamador, exceto ebx) que pega um número inteiro de 32 bits sem sinal e retorna o menor m etc.
Fonte:
Experimente online!
fonte
Clojure,
158155 bytesIsso ainda pode ter um pouco de gordura, não estou muito satisfeito,
(+ 1 i j)
mas essa foi a maneira mais fácil de lidar com o caso basen = 1
e o resto.((set r)j)
retornanil
sej
não estiver no conjunto e,(seq ())
em uma lista vazia, retorna nulo também. Calculan = 1000
em 48 segundos.Atualização: removida
nil
da=
verificação, pois o código funciona corretamente também sem ela.fonte
Ruby , 62 + 8 = 70 bytes
Usa a
-rprime
bandeira.Experimente online!
fonte
Python,
194170110 bytes84 bytes salvos por Leaky Nun
2 bytes salvos por mathmandan
Define uma função s (n) que recebe um número como entrada e retorna A083569 (n).
Experimente Online
fonte
p=lambda n:any(n%i<1for i in range(2,n))
para a verificação de primalidade.while(i in a)|any(...