Le titre de la dernière vidéo de Numberphile, 13532385396179 , est un point fixe de la fonction f suivante sur les entiers positifs:
Soit n un entier positif. Écrivez la factorisation des nombres premiers de la manière habituelle, par exemple 60 = 2 2 · 3 · 5, dans laquelle les nombres premiers sont écrits dans un ordre croissant et les exposants de 1 sont omis. Ensuite, ramenez les exposants sur la ligne et omettez tous les signes de multiplication, obtenant un nombre f (n). [...] par exemple, f (60) = f (2 2 · 3 · 5) = 2235.
(La définition ci-dessus est tirée du problème 5 de cinq problèmes de 1 000 $ - John H. Conway )
Notez que f (13532385396179) = f (13 · 53 2 · 3853 · 96179) = 13532385396179.
Tâche
Prenez un entier composite positif n
en entrée et en sortie f(n)
.
Un autre exemple
48 = 2 4 · 3, donc f (48) = 243.
Cas de test
D'autres tests sont disponibles ici .
4 -> 22
6 -> 23
8 -> 23
48 -> 243
52 -> 2213
60 -> 2235
999 -> 3337
9999 -> 3211101
la source
Réponses:
Python,
166162159 159 octetsVous allez beaucoup mieux. C'est ce que j'ai utilisé! (l'algorithme qui l'a résolu l'appelle)
la source
Brachylog , 8 octets
Essayez-le en ligne!
Explication
Vous pouvez utiliser
ℕ₂ˢ
( sélectionner tous les entiers supérieurs ou égaux à 2 ) au lieu de;1x
, ce qui est probablement plus lisible et plus dans l'esprit de Brachylog.la source
Gelée , 6 octets
Essayez-le en ligne!
Explication
la source
V
= "concaténer une seule chaîne et valider comme Jelly"Ḍ
(convertir de décimal en entier)?FḌ
dans le passé - c'est un bon conseil!Mathematica,
4336 octetsEssayez-le en ligne!
la source
DeleteCases
est long, vous pouvez utiliser/.1->""
ou/.1->##&[]
(autre forme de/.1->Nothing
1
pour l'empêcher d'analyser en tant que... / (0.1)
.CJam , 8 octets
Essayez-le en ligne!
Explication
la source
e_
d'aplatir, puisque c'est pour ça qu'il est là, mais ça ne change pas le score.e_
l'aplatissement profond et à l'utiliser:~
chaque fois que c'est juste un seul niveau.05AB1E , 10 octets
Essayez-le en ligne!
la source
05AB1E ,
1211 octetsEssayez-le en ligne!
Explication
la source
48
.Pyth, 12 octets
Essayez!
alternative, 12 octets
Essayez ça!
explication
la source
Pyth, 11 octets
Essayez ici
la source
Python 2 , 99 octets
Essayez-le en ligne!
Si les entrées sont restreintes pour être inférieures
2147483659
, les deuxstr(...)
peuvent être remplacées en`...`
économisant 6 octets (ce programme sera très lent pour les nombres affectés de toute façon!).la source
Ohm , 11 octets
Essayez-le en ligne!
Explication
la source
Japt , 19 octets
Testez-le en ligne!
Explication
la source
PHP , 88 octets
Essayez-le en ligne!
la source
C #,
206100 octetsVersion complète / formatée:
la source
Javascript - 91 octets
Explication
la source
Java 8, 103 caractères
Solution assez simple.
Non golfé:
la source
Octave , 69 octets
Essayez-le en ligne!
A fini par être assez long, mais cela générera la sortie souhaitée.
Essentiellement, nous utilisons la fonction d'histogramme pour compter le nombre d'occurrences des valeurs uniques dans la factorisation principale de la valeur d'entrée.
factor()
fonction donne les facteurs premiers dans l'ordre croissantunique()
valeurs dans ce tableauhist()
renvoie le nombre d'occurrencesUne fois que nous avons les deux tableaux (un pour les facteurs uniques, un pour les nombres), nous concaténons les tableaux verticalement (l'un au-dessus de l'autre), puis aplatissons. Cela entrelace les facteurs avec les nombres.
Enfin, nous affichons le résultat sous la forme d'une chaîne garantissant de sauter tout 1 dans le tableau final. Le seul moment où des 1 peuvent apparaître est si le compte était 1 car 1 ne sera jamais un facteur premier. Cette élimination est effectuée avant la conversion en chaîne afin qu'elle n'affecte pas des choses comme le nombre 10.
la source
Rubis , 45 + 7 octets
Nécessite le drapeau
-rprime
.Essayez-le en ligne!
la source
Pyth - 16 octets
Essayez-le
Une autre solution:
la source
FN
parV
.r8
(l'encodage en longueur) semble être utile.R , 72 octets
Nécessite le
pracma
package, qui n'est pas installé sur TIO.la source