Tâche
Il y a un ensemble de nombres x
, tels que des x^2
divisions 7^x-1
.
Votre tâche consiste à trouver ces numéros. Étant donné une entrée de n, le code affichera le nième nombre qui suit cette règle.
Exemples 1-index
In Out
3 3
9 24
31 1140
La séquence appropriée peut être trouvée ici .
Règles
La réponse la plus courte sera le gagnant *
Les règles de golf standard s'appliquent
Les échappatoires ne sont pas autorisées
Votre réponse peut être indexée 0 ou 1, veuillez l'indiquer dans votre réponse
n
? Je peux donner le résultat correct avecn=9
, mais celan=10
me pose déjà des problèmes.n=10
me donne 32; c'est parce qu'il commence à utiliser le double au lieu des entiers et le mod est incorrect après cela. :(Réponses:
Haskell, 34 octets
Cela utilise une indexation basée sur 0. Exemple d'utilisation:
([x|x<-[1..],mod(7^x-1)(x^2)<1]!!) 30
->1140
.C'est une mise en œuvre directe de la définition. Il construit une liste de tous les nombres
x
et sélectionne len
th.la source
Pyth , 10 octets
Un programme qui prend l'entrée d'un entier et imprime une valeur à un index.
Essayez-le en ligne!
Comment ça fonctionne
la source
JavaScript (ES7), 40 octets
Cela perd de la précision assez rapidement du fait que JS perd de la précision par
7**19
. Voici une version ES6 de précision presque arbitraire:Cela se termine dans environ une seconde pour le cas de test 31.
Quelques approches plus longues:
la source
05AB1E , 11 octets
Essayez-le en ligne!
Pour une raison quelconque, je ne peux pas
½
travaillerµ7Nm<NnÖ½N
ou je serais à égalité avec Pyth..
la source
Ö
sur ma liste de correctifs depuis des mois, mais je ne me débrouille jamais pour y faire face. Quoi qu'il en soit, vous n'avez pas besoinN
que asµ
renvoie automatiquement le dernierN
si la pile est vide.Python 2 ,
4846 octetsMerci à @Dennis pour -2 octets!
Une fonction récursive à un index qui prend l'entrée via un argument et renvoie le résultat.
Essayez-le en ligne!(Limite de récursivité augmentée pour permettre au cas de test final de s'exécuter)
Comment ça fonctionne
n
est l'indice souhaité eti
est la variable de comptage.L'expression
~-7**i%i**2<1
renvoieTrue
(équivalent à1
) sii^2
divise7^i - 1
etFalse
(équivalent à0
) sinon. Chaque fois que la fonction est appelée, le résultat de l'expression est soustrait den
, décrémentantn
chaque fois qu'un hit est trouvé;i
est également incrémenté.Le comportement de court-circuit de
and
signifie que quandn
est0
,0
est retourné; c'est le cas de base. Une fois cela atteint, la récursivité s'arrête et la valeur actuelle dei
est renvoyée par l'appel de fonction d'origine. Plutôt que d'utiliser explicitementi
, cela se fait en utilisant le fait que pour chaque appel de fonction, un incrément a été effectué en utilisant le-~
devant de l'appel; incrémenter les0
i
temps donnei
, au besoin.la source
(~-7**i%i**2<1)
enregistre quelques octets.Python 2 ,
575351 octets-4 octets grâce à ETHproductions
-2 octets grâce à TuukkaX
Essayez-le en ligne!
la séquence est indexée 1
la source
(7**i)
? Je les ai retirés et cela a fonctionné pour ceux que j'ai essayés.**
une priorité plus élevée que~
et-
Python 2, 57 octets
Cela prend un temps vraiment très long pour les grandes valeurs. Il utilise également beaucoup de mémoire, car il construit la liste entière bien plus loin que nécessaire. Le résultat est indexé zéro.
Essayez-le en ligne
la source
2**n+1
limite supérieure?2**50
. Je pourrais utiliser9**n+9
, mais cela prend beaucoup plus de temps. J'ai commencé à courir il y af(20)
quelque temps (avec2**n+1
); il n'est toujours pas terminé.Mathematica, 43 octets
J'ai actuellement trois solutions différentes pour ce nombre d'octets:
la source
Divisible
.Cases[Range[#^3],x_/;x^2∣(7^x-1)][[#]]&
basé sur l'argument heuristique selon lequel n ^ 3 est une borne supérieure. J'en ai découvert une preuve vraiment merveilleuse, que cette marge est trop étroite pour contenir :)PARI / GP , 42 octets
Assez simple. 1 indexé, bien que cela puisse facilement être modifié.
ou
la source
Python 3 , 45 octets
Renvoie True pour l'entrée 1 , ce qui est autorisé par défaut .
Essayez-le en ligne!
la source
R, 35 octets
Cela ne fonctionne que pour
n<=8
.Cependant, voici une version plus longue qui fonctionne
n<=25
, pour 50 octets :la source
8
parce qu'il devient un long int?gmp
, qui autorise des entiers arbitrairement grands. Cependant, je manque rapidement de RAM pour calculer quoi que ce soit ci-dessusn=25
.PHP,
4749 octetsFonctionne uniquement pour n <9 (
7**9
est plus grandPHP_INT_MAX
qu'avec 64 bits)62 octets utilisant des entiers de longueur arbitraire: (non testé; PHP sur ma machine n'a pas bcmath)
Courez avec
php -nr '<code>' <n>
.pseudo code
la source
Pyke, 10 octets
Essayez-le ici!
la source
Clojure , 83 octets
Essayez-le en ligne!
Cela crée une liste infinie de Java BigIntegers commençant à 1 et les filtre par la définition. Il utilise une indexation à base zéro pour sélectionner la n ème valeur dans la liste filtrée.
la source
Perl 5, 35 octets
Eh bien, cela manquait, alors voici:
map{$_ if!((7**$_-1)%($_**2))}1..<>
la source
Powershell, trop d'octets
Juste pour voir si c'était possible et ça l'est.
la source
Perl 6 ,
3534 octets0 indexé.
Rasé d'un octet grâce à Brad Gilbert.
la source
{grep(…)}
QBIC , 39 octets
Je ne pouvais pas le faire fonctionner dans QBasic 4.5, mais il semble fonctionner correctement dans QB64. Pour une raison inexplicable, QBasic refuse de diviser proprement 13 841 287 200 par 144, mais donne à la place un reste de -128. Il renvoie ensuite 16 comme le 7ème terme de cette séquence au lieu de 12 ...
la source
Wonder , 28 octets
Zéro indexé. Usage:
Filtre à partir de la liste des nombres naturels avec un prédicat qui détermine s'il
x^2
est divisible par7^x-1
, puis obtient le nième élément de cette liste.la source
Tcl , 73 octets
Essayez-le en ligne!
la source