Vous avez sauvé la journée avec votre code de séquence principale et le professeur de mathématiques a adoré. À tel point qu'un nouveau défi a été posé au bibliothécaire (a / k / a, votre patron). Félicitations, vous pouvez coder la solution afin que le bibliothécaire puisse à nouveau impressionner le professeur de mathématiques.
Commencez par la séquence des nombres naturels en base 10, N
0, 1, 2, 3, 4, 5, 6 ...
À l'exclusion de 0
et 1
, chaque nombre de cette séquence est premier, P
2, 3, 5, 7, 11, 13 ...
ou composite, C
4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20 ...
En réfléchissant à la façon dont le bibliothécaire a pensé insérer un chiffre entier dans l'expansion décimale d'un nombre de P , le professeur de mathématiques a plutôt créé une fonction G (x, y) qui prend un nombre x
de N avec 1 <= x <= 9
et un nombre y
de C et insère x
dans le expansion décimale de y
dans chaque position, dans l'ordre de gauche à droite, en sélectionnant uniquement des nombres uniques.
Par exemple, G (3,14) est 314, 134, 143
. Cependant, G (1,14) est seulement 114, 141
, comme si vous préfixer ou insérez le 1
dans 14
, le même nombre 114
est généré.
Le professeur de mathématiques s'est demandé combien de fois vous auriez à faire ces permutations avant d'obtenir un nombre qui est en P , si vous preniez x
dans l'ordre croissant. Le professeur de mathématiques a appelé cela l' indice composé-premier d'un nombre, et l'a écrit comme CPI (y) .
Par exemple, 4
ne doit être fait que deux fois:, 14, 41
puisque 41
est premier, donc CPI (4) l' est 2
. Cependant, 8
doit être fait 6 fois, 18, 81, 28, 82, 38, 83
avant d'atteindre 83
comme un nombre premier, donc CPI (8) l' est 6
.
Votre tâche consiste à écrire du code qui produira cet indice composé-premier , étant donné un numéro d'entrée.
Contribution
- Un nombre entier unique
y
, de telle sorte quey
est en C , entrée par l' intermédiaire d' argument de fonction, STDIN, ou l' équivalent. - Aux fins du calcul, vous pouvez supposer qu'il
y
rentrera dans les plages entières habituelles (par exemple, supposez 2 31 -1 comme limite supérieure). - Le comportement pour
y
pas en C n'est pas défini.
Production
L' indice Composite-Prime résultant , calculé comme décrit ci-dessus, est émis vers STDOUT ou équivalent, à deux exceptions près:
- Si la toute dernière permutation (c'est-à-dire, s'ajoutant
9
ày
) est celle qui aboutit à une sortie principale-1
. Un exemple, développé ci-dessous, esty=14
. - S'il n'y a pas de permutation (c'est-à-dire que G (x, y) est un sous-ensemble de C pour tous
1 <= x <= 9
), sortez0
. Un exemple, développé ci-dessous, esty=20
.
Exemples
y -> operations : output
4 -> 14, 41 : 2
6 -> 16, 61 : 2
8 -> 18, 81, 28, 82, 38, 83 : 6
9 -> 19 : 1
10 -> 110, 101 : 2
12 -> 112, 121, 212, 122, 312, 132, 123, 412, 142, 124, 512, 152, 125, 612, 162, 126, 712, 172, 127 : 19
14 -> 114, 141, 214, 124, 142, 314, 134, 143, 414, 144, 514, 154, 145, 614, 164, 146, 714, 174, 147, 814, 184, 148, 914, 194, 149 : -1
15 -> 115, 151 : 2
16 -> 116, 161, 216, 126, 162, 316, 136, 163 : 8
18 -> 118, 181 : 2
20 -> 120, 210, 201, 220, 202, 320, 230, 203, 420, 240, 204, 520, 250, 205, 620, 260, 206, 720, 270, 207, 820, 280, 208, 920, 290, 209 : 0
Restrictions
- Il s'agit de code-golf, car vous devrez le transcrire sur une fiche afin que le bibliothécaire puisse montrer le professeur de mathématiques et vos crampes à la main facilement.
- Des restrictions standard contre les échappatoires s'appliquent. Le bibliothécaire ne tolère pas les tricheurs.
19
est premier, donc la sortie ne devrait-elle pas être 1?Réponses:
Pyth, 35 octets
Suite de tests
la source
Haskell,
166161 octetsExemples d'utilisation:
f "8"
->6
,f "14"
->-1
,f "20"
->0
.Comment ça marche:
p
c'est le test de primalité (volé à la réponse de @Mauris dans un défi différent).q
un wrapper pourp
convertir les types de chaînes en entier.n # c
insèrec
à chaque positionn
.%
prend une liste de nombres et un indexi
. Lorsque le premier élément de la liste est premier, returni
, else recure avec la queue de la liste eti+1
. Arrêtez quand il n'y a qu'un seul élément et revenez-1
s'il est premier et0
autrement.la source
Minkolang 0,11 , 85 octets
Essayez-le ici.
Explication (à venir bientôt)
la source
Javascript, 324 octets
Si y n'est pas en C, alors la sortie STDOUT est vide.
Explication
la source
n%c!=0
parn%c
;c>=n-1
avecc>n-2
; etx==9
avecx-9
?