Les nombres premiers solitaires (comme je les appelle) sont des nombres premiers, étant donné une grille numérique de largeur w ≥ 3
, sont des nombres premiers qui n'ont pas d'autres nombres premiers adjacents orthogonalement ou en diagonale.
Par exemple, si nous prenons cette grille où w = 12
(nombres premiers surlignés en gras):
1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23...
...86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106 107 108
109 110 111 112 113 114 115 116 117 118 119 120
Vous pouvez voir que seuls les deux nombres premiers 103 et 107 n'ont aucun nombre adjonctif orthogonalement ou diagonalement. J'ai sauté une section car il n'y a pas de nombres premiers solitaires. (sauf 37, en fait)
Votre tâche consiste à, étant donné deux entrées w ≥ 3
et i ≥ 1
, déterminer le premier nombre premier solitaire dans une grille numérique avec largeur w
, où ledit nombre premier solitaire doit être supérieur ou égal à i
. Les entrées peuvent être prises dans n'importe quel format raisonnable (y compris en les prenant comme des chaînes). Il est garanti qu'il y aura un amorçage solitaire pour la largeurw
.
La grille ne s'enroule pas.
Exemples:
w i output
11 5 11
12 104 107
12 157 157
9 1 151
12 12 37
Comme il s'agit de code-golf , le code le plus court gagne!
w=12
pas pour37
un premier solitaire? Aucun des nombres qui l'entourent -{25, 26, 38, 49, 50}
- n'est premier.Réponses:
C (gcc) ,
159158149 octetsEssayez-le en ligne!
la source
JavaScript (ES6),
116104 bytesPrend une entrée dans la syntaxe de curry
(w)(i)
.Cas de test
Afficher l'extrait de code
Commenté
la source
Python 2 , 144 octets
Essayez-le en ligne!
Arguments dans l'ordre:
w
,i
.Aucun module externe utilisé ici.
Python 2 + sympy, 127 octets
Essayez-le en ligne!
Pas digne d'un poste différent, car la seule différence ici est qu'il utilise
sympy.isprime
au lieu d'une fonction de vérification principale implémentée manuellement.la source
MATL , 38 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Le code consiste essentiellement en une boucle qui continue d'agrandir la grille comme décrit dans le défi d'une ligne à chaque itération.
Après avoir créé la grille à chaque itération, la dernière ligne est supprimée (nous ne pouvons pas savoir si ces nombres premiers sont seuls ou non) et les nombres restants sont testés pour voir s'il existe au moins un nombre premier solitaire. Cela se fait par convolution 2D.
S'il y a un premier solitaire, nous quittons la boucle et émettons le premier tel premier. Sinon, nous procédons à la prochaine itération, qui tentera une grille plus grande.
(Le code utilise en fait une version transposée de la grille, qui est agrandie par des colonnes plutôt que par des lignes.)
la source
Julia 0,6, 135 octets
TIO n'a pas le
Primes
paquet. C'est 5 octets plus court si je suis autorisé à retourner tous les nombres premiers solitaires (findfirst
devientfind
). La tentative de Julia de retirer les fonctionnalités deBase
son parcours nuit au golf (ce n'est pas un objectif de Julia), aPrimes
été inclus dans 0.4.Non golfé (principalement)
la source
Gelée , 20 octets
Essayez-le en ligne!
Comment ça marche
la source
Perl 6 ,
113104 octetsEssayez-le en ligne!
la source
Nettoyer ,
181... 145 octetsEssayez-le en ligne!
Non golfé:
la source
Gelée ,
3029 octetsJe suppose que c'est probablement battable par une bonne marge
Un lien dyadique prenant
i
à gauche etw
à droite qui renvoie le premier solitaire.Essayez-le en ligne!
Comment?
la source
Java 8, 176 octets
Port de Jonathan Frech 'C réponse .
Essayez-le en ligne.
la source