Tarefa
Há um conjunto de números x
, que x^2
divide 7^x-1
.
Sua tarefa é encontrar esses números. Dada a entrada n, o código imprimirá o enésimo número que segue esta regra.
Exemplos 1-index
In Out
3 3
9 24
31 1140
A sequência relevante pode ser encontrada aqui .
Regras
A resposta mais curta será o vencedor *
Aplicam-se regras de golfe padrão
Não são permitidas brechas
Sua resposta pode ser 0 ou 1 indexada, indique na sua resposta
n
? Posso dar o resultado correto comn=9
, masn=10
já está me causando problemas.n=10
me dá 32; é porque ele começa a usar o dobro em vez de números inteiros e o mod está errado depois disso. :(Respostas:
Haskell, 34 bytes
Isso usa indexação baseada em 0. Exemplo de uso:
([x|x<-[1..],mod(7^x-1)(x^2)<1]!!) 30
->1140
.É uma implementação direta da definição. Ele cria uma lista de todos os números
x
e escolhe on
th.fonte
Pitão , 10 bytes
Um programa que recebe a entrada de um número inteiro e imprime um valor indexado um.
Experimente online!
Como funciona
fonte
JavaScript (ES7), 40 bytes
Isso perde a precisão rapidamente, devido ao fato de o JS perder a precisão
7**19
. Aqui está uma versão ES6 de precisão quase arbitrária:Isso termina em cerca de um segundo para o caso de teste 31.
Algumas abordagens mais longas:
fonte
05AB1E , 11 bytes
Experimente online!
Por alguma razão, não consigo
½
trabalharµ7Nm<NnÖ½N
ou ficaria amarrado com Pyth..
fonte
Ö
na minha lista de consertos por meses, mas nunca chego a lidar com isso. De qualquer forma, você não precisa oN
quantoµ
emite automaticamente o últimoN
, se a pilha está vazia.Python 2 ,
4846 bytesObrigado a @Dennis por -2 bytes!
Uma função recursiva de um índice que recebe entrada por meio de argumento e retorna o resultado.
Experimente online! (Limite de recursão aumentado para permitir a execução do caso de teste final)
Como funciona
n
é o índice desejado ei
é a variável de contagem.A expressão
~-7**i%i**2<1
retornaTrue
(equivalente a1
) sei^2
divide7^i - 1
eFalse
(equivalente a0
) caso contrário. Cada vez que a função é chamada, o resultado da expressão é subtraído den
, diminuindon
cada vez que um hit é encontrado;i
também é incrementado.O comportamento-circuito curto de
and
meios que, quandon
é0
,0
é devolvido; este é o caso base. Quando isso é alcançado, a recursão para e o valor atual dei
é retornado pela chamada de função original. Em vez de usar explicitamentei
, isso é feito usando o fato de que para cada chamada de função, um incremento foi realizado usando o-~
na frente da chamada;0
i
tempos incrementais fornecemi
, conforme necessário.fonte
(~-7**i%i**2<1)
salva alguns bytes.Python 2 ,
575351 bytes-4 bytes graças a ETHproductions
-2 bytes graças a TuukkaX
Experimente online!
a sequência é indexada em 1
fonte
(7**i)
? Eu os removi e funcionou para os que tentei.**
tem uma precedência mais alta do que~
e #-
Python 2, 57 bytes
Isso leva um realmente, realmente muito tempo para grandes valores. Ele também usa muita memória, porque cria a lista inteira muito mais longe do que o necessário. O resultado é indexado a zero.
Experimente online
fonte
2**n+1
limite máximo?2**50
. Eu poderia usar9**n+9
, mas leva muito mais tempo. Comecei a correrf(20)
há um tempo atrás (com2**n+1
); ainda não foi concluído.Mathematica, 43 bytes
Atualmente, tenho três soluções diferentes nessa contagem de bytes:
fonte
Divisible
.Cases[Range[#^3],x_/;x^2∣(7^x-1)][[#]]&
base no argumento heurístico de que n ^ 3 é um limite superior. Eu descobri uma prova verdadeiramente maravilhosa disto, mas esta margem é muito estreita para conter :)PARI / GP , 42 bytes
Bem direto. Indexado em 1, embora isso possa ser facilmente alterado.
ou
fonte
Python 3 , 45 bytes
Retorne True para a entrada 1 , que é permitida por padrão .
Experimente online!
fonte
R, 35 bytes
Isso só funciona para
n<=8
.No entanto, aqui está uma versão mais longa que funciona
n<=25
para 50 bytes :fonte
8
porque se torna um int longo?gmp
, que permite números inteiros arbitrariamente grandes. No entanto, fiquei rapidamente sem memória RAM para calcular qualquer coisa aciman=25
.PHP,
4749 bytesFunciona apenas para n <9 (
7**9
é maior quePHP_INT_MAX
com 64 bits)62 bytes usando números inteiros de comprimento arbitrário: (não testado; o PHP na minha máquina não tem bcmath)
Corra com
php -nr '<code>' <n>
.pseudo-código
fonte
Pyke, 10 bytes
Experimente aqui!
fonte
Clojure , 83 bytes
Experimente online!
Isso cria uma lista infinita de Java BigIntegers iniciando em 1 e os filtra pela definição. Ele usa indexação baseada em zero para selecionar o n º valor da lista filtrada.
fonte
Perl 5, 35 bytes
Bem, isso estava faltando, então aqui está:
map{$_ if!((7**$_-1)%($_**2))}1..<>
fonte
PowerShell, muitos bytes
Só para ver se era possível e é.
fonte
Perl 6 ,
3534 bytesIndexado a 0.
Raspou um byte graças a Brad Gilbert.
fonte
{grep(…)}
QBIC , 39 bytes
Não consegui executá-lo no QBasic 4.5, mas parece funcionar bem no QB64. Por alguma razão inexplicável, o QBasic se recusa a dividir corretamente 13.841.287.200 por 144, mas fornece um restante de -128. Em seguida, retorna 16 como o 7º termo desta sequência em vez de 12 ...
fonte
Maravilha , 28 bytes
Indexado a zero. Uso:
Filtra da lista de números naturais com um predicado que determina se
x^2
é divisível por e7^x-1
, em seguida, obtém o enésimo item nessa lista.fonte
Tcl , 73 bytes
Experimente online!
fonte