Satan-Primes
qui sont-ils?
ils Primes
contiennent 666
ce sont des Satan-Primes: [46663,266677,666599,666683,616669]
ce ne sont PAS :[462667,665669,36363631,555]
Terrain
Chaque nombre supérieur à 6661 a Satan-Primes derrière lui
Le défi
Étant donné un entier, n>6661
trouvez le Satan-Prime derrière (ou égal) et le plus proche de lui-même.
Exemples
Entier n=30000
a 3 Satan nombres premiers (SP) derrière: [6661, 16661, 26669]
.
Votre code doit renvoyer celui 26669
qui est le plus proche derrière lui
Cas de test
Entrée-> Sortie
6662->6661
10000->6661
66697->66697 (a SP returns himself)
328765->326663
678987->676661
969696->966677
Règles
Votre code devrait fonctionner pour n'importe qui n
dans la gamme de votre langue.
C'est le code-golf , donc la réponse la plus courte en octets l'emporte!
output the nth satan prime
défi ...Réponses:
Mathematica, 82 octets
la source
Neim , 9 octets
Explication:
Essayez-le en ligne!
la source
+6
pousse 666? Ou est-ce que Neim est juste ce métal?+x
signifie apparemment 612 + code de caractèrex
. Le code de6
se trouve être 54, donc 612 + 54 = 666.'\+*
=100,356,612,868
(plus l'ordinal du caractère suivant qui est)Gelée ,
109 octetsÉconomisez 10% grâce à @Dennis!
Essayez-le en ligne!
Explication
la source
ÆRẇ@Ðf666Ṁ
w
devrait fonctionner au lieu deẇ@
.Pyth ,
1514 octets1 octet enregistré avec l'aide de Dave .
Erreurs de mémoire
969696
et quelque chose de plus élevé sur ma machine, mais c'est bien si on lui donne suffisamment de mémoire.Essayez-le ici ou consultez la suite de tests.
Comment?
Pyth , 14 octets
Essayez-le ici!
la source
ef&/`T*3\6P_TS
"666"
est une manière moins efficace de décrire la chaîne 666*3\6
05AB1E , 11 octets
Essayez-le en ligne!
la source
Bash + Core Utils,
5149 octetsPrend l'argument de ligne de commande. Peut être assez lent avec de plus grands nombres.
la source
|head -1
à la fin.Mathematica,
64626153 octets-1 octet grâce à @KellyLowder
-8 octets (wow) grâce à @Notatree
Explication
Prenez une entrée. Nous le décrémentons dans ces conditions:
l'entrée n'est pas principale, OU
les chiffres des entrées ne contiennent pas trois 6 de suite.
Nous répétons cela jusqu'à ce qu'un Satan prime soit atteint.
la source
#//.i_/;!PrimeQ@i||ToString@i~StringFreeQ~"666":>i-1&
Perl 5 , 47 octets
46 octets de code + 1 pour
-p
Essayez-le en ligne!
la source
Japt , 14 octets
Essaye-le
Étant donné qu'il y avait un bonus basé sur le temps de 50%: Complète le cas de test
969696
en moins d'une demi-seconde.Explication
Saisie implicite d'entier
U
.Générez un tableau d'entiers de
1
àU
.Filter (
f
) amorce.Sens inverse.
Retourne le premier élément qui retourne une valeur véridique (dans ce cas
1
) lorsqu'il est passé par une fonction qui vérifie si ...L'entier converti en chaîne (
s
) contient (ø
) 666.Alternative plus rapide, 15 octets
Encore une fois, vu qu'il y avait à l'origine un bonus basé sur le temps, voici une solution alternative et beaucoup plus rapide que je n'arrive pas à jouer plus loin.
Essaye-le
la source
PowerShell , 128 octets
Essayez-le en ligne!
PowerShell n'a pas de facteurs de factorisation principaux intégrés, donc cela emprunte le code de ma réponse sur Prime Factors Buddies .
Nous prenons l'entrée
$n
, puis déclarons un nouveaufunction f
qui calcule les facteurs d'entrée$a
. Si l'entrée$a
est principale, alors cela reviendra juste$a
.La partie principale du programme est la
for()
boucle infinie . À l'intérieur de la boucle, nous vérifions si$n
-match
es est contre666
et s'il$n
est premier (c'est-à-dire s'il$n
correspond à tous les facteurs de$n
). Si c'est le cas, nous plaçons$n
sur le pipeline etexit
, avec une sortie implicite. Sinon, nous décrémentons$n--
et continuons la boucle.la source
Python 2 ,
7776 octetsEdit: -1 octet grâce à @ Mr.Xcoder
Temps de fonctionnement lent, fonctionne en
O(n^2)
Essayez-le en ligne!
Une autre solution de 76 octets
Essayez-le en ligne!
Avec SymPy 73 octets
Essayez-le en ligne!
la source
lambda x:max(q for q in range(x+1)if"666"in`q`*all(q%t for t in range(2,q)))
- utiliser à lamax()
place de[][-1]
PowerShell ,
716964 octetsEssayez-le en ligne!
328765 prend ~ 30 secondes sur ma machine, mais expire la limite de 60 secondes sur Tio.run.
678987 prend ~ 1,5 minutes.
la source
MATL, 16 octets
Essayez-le sur MATL Online
Explication
la source
C ++ 389 octets
Ceci est un programme complet!
Vous aurez besoin de Boost pour le compiler. (Ou copiez et collez dans votre shell C ++ en ligne préféré.)
Exécutez-le à partir de la ligne de commande en donnant n comme argument.
Non golfé:
Des raccourcis ont été effectués en termes de tests de nombres aléatoires. Le code d'origine a commencé à tester des nombres premiers possibles à 6661 et incrémenté de deux. Vous obtiendrez également un avertissement du compilateur à cause de cela (-1) au lieu de npos.
Pourtant, cela fonctionne assez rapidement. Il n'a fallu que 40 secondes environ pour trouver les 214 nombres premiers satan inférieurs à 1000000 sur mon ancien AMD Sempron 130.
: ^ D
la source
Forfait Bash + BSD-Games, 33
Essayez-le en ligne .
la source
tail -n1
.tail
ici. En fait,tail -1
c'est même 1 de moins.Python 3 ,
85 8380 octetsHalvard est plus court de 4 octets car il est fait en Python 2.
Essayez-le en ligne!
Donnez-lui un peu de temps, c'est extrêmement lent à cause de sa
O(n^2)
complexité.la source
JavaScript (ES6),
5554 octets-1 octet grâce à @ThePirateBay.
Très lent avec de grandes entrées. Test de primauté adapté de ce code de réponse golf .
Timings
10000
pris 10 secondes328765
pris 3 minutes678987
pris 9 minutes969696
pris 16 minutesLes tests
Certains d'entre eux bloquent votre navigateur pendant plusieurs minutes.
Afficher l'extrait de code
Version plus rapide, 56 octets
Complète chaque cas de test en moins d'une seconde.
la source
d==1
pard<2
sincen>6661
.f=n=>/666/.test(n)&(g=d=>n%--d?g(d):d<2)(n)?n:f(n-1)
mais générera une erreur de récursivité pour les grands nombres.f=n=>/666/.test(d=n)-eval("while(n%--d);d")?f(n-1):n
Ruby,
67,66,58, 56 octetsComprend des
+7
octets pour-rprime
C'est assez rapide, calculer des valeurs jusqu'à
~2^52
environ une seconde et2^64
en moins de 5 minutes (2011 MBP, Ruby 2.3.1).la source
Stax , 10 octets
Exécuter et déboguer
Explication (déballé):
la source
PHP , 148 octets
Essayez-le en ligne!
la source
Perl 6 , 35 octets
Essayez-le en ligne!
Solution récursive simple.
la source
C # (.NET de base) ,
117115112 octetsEssayez-le en ligne!
int
déclarations.Je suis sûr que cela pourrait être raccourci; peut-être en appelant
func f
et en retirant récursivement l'extérieurfor
boucle .Approche récursive, 85 octets
Essayez-le en ligne!
Je ne sais pas dans quelle mesure cette approche s'inscrit dans les limites du code-golf en raison de la nécessité de définir le
Func<int,int> f = null
premier, et celaf
est appelé à nouveau, mais pas compté dans les octets. Toute clarification serait appréciée.la source