Je parle de cette question , jetez-y un œil si vous êtes un peu confus.
Tâche principale
Votre tâche consiste à produire des entiers concaténés, dans l'ordre décroissant, mais en augmentant l'entier maximal à chaque fois que vous frappez 1
(pour cette question, 1 sera considéré comme un nombre premier) . Bien que cela ne semble pas différent de la première question, voici la partie délicate: tous les nombres générés ne peuvent être que des nombres premiers . Celles-ci seront regroupées en une seule chaîne sans espaces ni sauts de ligne. Votre entrée sera également un nombre premier .
Exemple:
1
21
321
5321
75321
1175321
Valid output:
1213215321753211175321
Contribution
Votre code ne peut prendre qu'une seule entrée: le plus haut nombre premier à imprimer. Cette entrée peut provenir de n'importe où (graphique, STDIN). Vous êtes assuré que l'entrée est un nombre premier.
Production
Vous devrez sortir le nombre résultant. Vous pouvez obtenir ce nombre en continuant à décompter, ne comptez le nombre que si c'est un nombre premier, puis connectez tous les résultats ensemble à un seul nombre. Le dernier numéro "ligne" (par exemple 7, 5, 3, 2, 1
) doit être imprimé entièrement. La sortie peut être n'importe quoi (nombres, chaînes, graphiques), tant qu'elle est lisible. Le même modèle Regex pour vérifier vos cas de test s'applique:
^(\D*(\d)+\D*|)$
Si votre sortie ne correspond pas à ce modèle, votre code n'est pas valide.
Règles
- L'entrée est assurée d'être principale, n'incluez pas la gestion des erreurs, sauf si vous le souhaitez / devez.
- La sortie peut n'être qu'un numéro entièrement connecté, donc pas divisée par quoi que ce soit, pas même des sauts de ligne.
- Votre algorithme ne doit pas vérifier la première instance d'
N
apparition (par exemple, le17
in1175321
), mais plutôt la première instance deN
comme le nombre réel. - Votre contribution est assurée d'être positive, n'ajoutez pas de manipulation à moins que vous ne le souhaitiez / en ayez besoin.
Cas de test
Input: -2, 0
Output: Any, or none (number isn't positive)
Input: 9
Output: Any, or none (number isn't prime)
Input: 1
Output: 1
Input: 7
Output: 121321532175321
Input: 23
Output: 1213215321753211175321131175321171311753211917131175321231917131175321
Gagnant
C'est du code-golf , donc l'auteur du code avec le moins de longueur en octets gagne!
1
soit un premier choix par définition.1
contredit directement la spécification, ce qui " garantit " que le numéro d'entrée sera un nombre premier. 2. La spécification de sortie semble contenir de multiples contradictions et ambiguïtés. " Le dernier numéro" ligne "(par exemple 7, 5, 3, 2, 1) doit être imprimé entièrement " - donc pas les autres? " Le même modèle Regex pour vérifier vos cas de test s'applique ", mais " La sortie ne peut être qu'un numéro entièrement connecté, donc pas divisé par quoi que ce soit " contredit cette expression régulière. Mais l'expression régulière est clairement douteuse de toute façon, car elle autorise la chaîne vide, et il n'y a pas d'entrée qui pourrait donner cela.Réponses:
Gelée , 9 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
V
une liste.)Traitement, 161 octets
Une fonction effectue la vérification de primalité, l'autre fait l'impression. Appelez-le par
t(7)
Non golfé
La première fonction effectue la vérification de primalité. Il renvoie un
int
au lieu d'unboolean
car de cette façon, plus d'octets sont enregistrés. (int
au lieu deboolean
,0
au lieu defalse
,1
au lieu detrue
)La deuxième fonction imprime la chaîne. Il parcourt chaque nombre, s'il n'est pas un nombre premier, passez à l'itération suivante. S'il s'agit d'un nombre premier, il continue jusqu'à l'impression dans une autre
for
boucle. Encore une fois, si le nombre est premier, nous l'imprimons, sinon non.la source
Gelée , 12 octets
Essayez-le en ligne!
S'il n'y avait pas eu de
1
s du tout, mon code n'aurait été queÆRÆRUVV
pour 7 octets.Explication améliorée:
Le gars irlandais (appelé Dennis?) M'a en quelque sorte dépassé lol.
la source
05AB1E , 19 octets
Essayez-le en ligne!
Explication
la source
DpÏ
déclaration. Bon travail!Brachylog , 17 octets
Essayez-le en ligne!
Je ne peux pas sembler devenir plus court que ça ...
Explication
la source
Langue GameMaker, 169 octets
Fonction principale (68 octets)
Fonction p (46 octets)
Fonction q (55 octets)
la source
MATL , 15 octets
Essayez-le en ligne!
la source
Perl 6 , 41 octets
( Essayez-le en ligne. )
Explication:
1, |grep(*.is-prime, 2..$_)
: Séquence de 1 et nombres premiers ...(1 2 3 5)
[,] ...
: Réduire ("plier") par-dessus l'opérateur virgule ...(1 2 3 5)
[\,] ...
: Avec des résultats intermédiaires ( réduction triangulaire ) ...((1) (1 2) (1 2 3) (1 2 3 5))
[\R,] ...
: Appliquer un méta-opérateur inverseur à la virgule ...((1) (2 1) (3 2 1) (5 3 2 1))
[~] flat ...
: Supprimer l'imbrication de liste et replier l'opérateur de concaténation de chaîne ...1213215321
(Ceci est basé sur ma réponse pour le défi précédent .)
la source
Mathematica, 61 octets
Fonction sans nom prenant un argument entier et renvoyant une chaîne. (Si l'entrée n'est pas un nombre premier, elle "l'arrondit" simplement au nombre premier le plus proche; si l'entrée est non positive, elle prétend que c'est 1.)
Cette implémentation utilise la mauvaise astuce de la réponse de Martin Ender au défi précédent similaire (qui dit que ce vieux chien ne peut pas apprendre de nouvelles astuces?): Abuser
<>
pour aplatir une liste imbriquée d'entiers.La liste imbriquée en question commence par générer une liste imbriquée similaire à celle de cette réponse, avec la longueur appropriée (donnée par
PrimePi@#
, le nombre de nombres premiers jusqu'à et y compris l'entrée);Prime
est ensuite appliqué à chaque élément. Par exemple, pour l'entrée5
qui est le 3e nombre premier, le codeRange[Range@PrimePi@#,0,-1]
donne{{1,0},{2,1,0},{3,2,1,0}}
, et en appliquantPrime
à chaque élément les rendements{{2,Prime[0]},{3,2,Prime[0]},{5,3,2,Prime[0]}}
puisque les 1er, 2e et 3e nombres premiers sont respectivement 2, 3 et 5. Je suis fier d'avoir réussi à ajouter encore plus d'erreurs à l'approche de Martin Ender - Mathematica se plaint à chaque fois qu'il écritPrime[0]
.Prime[0]
n'est pas une chose, mais ça va: les/.Prime@0->1
transforme tous en1
art. Et nous voulons également un1
sur le front, nous remplaçons donc la""
réponse de Martin Ender par simplement1
, ce qui économise en fait un octet.la source
PHP, 72 octets
Run wit
-r
panne
la source
Pyth - 12 octets
Suite de tests .
la source