Basé sur un message de chat
Le défi
Étant donné un numéro d'entrée n > 9
, construisez son inverse, en ignorant les zéros de tête. Ensuite, construisez une liste de tous les facteurs premiers que le nombre et son inverse n'ont pas en commun. Multipliez ces facteurs ensemble pour créer le numéro de facteur rare de l'entrée.
Ou, pour le dire autrement: si rev(n)
dénote l'inversion décimale d'un entier n
, calculez le produit de n
et rev(n)
divisé par le carré de gcd(n, rev(n))
.
Sortez ce nombre.
Exemples travaillés
Par exemple, passe 2244
à 4422
. Les facteurs premiers du premier sont [2, 2, 3, 11, 17]
les facteurs premiers de l'inverse [2, 3, 11, 67]
. Les nombres qui ne sont pas dans des multiplicités communes le sont [2, 17, 67]
, tout 2278
comme la sortie.
Pour un autre exemple, 1234
inverse à 4321
. Le produit est 5332114
et le GCD est 1
, donc la sortie est 5332114
.
Précisions supplémentaires
Évidemment, un nombre palindromique aura tous ses facteurs en commun avec son inverse, donc dans un tel cas, la sortie est 1
( n*n/n^2
). De toute évidence, il est également possible que la sortie soit la multiplication de tous les facteurs (c'est-à-dire que le pgcd est 1 - l'entrée et son inverse sont co-amorces), comme dans le cas de l' 1234
exemple.
Règles
- L'entrée et la sortie peuvent être supposées correspondre au type d'entier natif de votre langue.
- L'entrée et la sortie peuvent être données dans n'importe quel format pratique .
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Exemples
in
out
17
1207
208
41704
315
1995
23876
101222302
la source
1995
(je crois)Réponses:
05AB1E , 6 octets
Code
Utilise l' encodage 05AB1E . Essayez-le en ligne!
Explication
la source
J, 18 octets
Essayez-le en ligne!
Alternativement (crédit à l'approche de @ Adnan pour la seconde),
J, 15 octets (solution de @ miles)
Explication
Ceci est juste une implémentation simple de l'algorithme donné par l'OP.
Explication, la solution de @ miles
Très intelligent.
la source
*/@(,%+.)|.&.":
Mathematica, 33 octets
Essayez-le en ligne!
la source
Gelée , 8 octets
Essayez-le en ligne!
la source
DU
Ṛ
Ṛ
sur un entier inverse les chiffres mais ne reconvertit pas en entier.JavaScript (ES7),
6764 octetsTant d'octets juste pour inverser le nombre :(
Prend l'entrée sous forme de chaîne.
Essayez-le
la source
Haskell, 44 octets
Essayez-le en ligne!
la source
R ,
10889 octets-19 octets grâce à plannapus pour son algorithme gcd
Cela tentera d'allouer au moins un vecteur d'
4*n
octets de taille (et je pense que jusqu'à 4), donc cela générera une erreur de mémoire pour suffisamment grandn
.Essayez-le en ligne!
la source
Python 3 ,
7368 octets-5 octets grâce à M. Xcoder.
Essayez-le en ligne!
la source
MATL ,
131211 octetsEssayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Neim , 11 octets
Essayez-le en ligne!
Pas de GCD intégré. ; -;
la source
Husk , 10 octets
Essayez-le en ligne!
-1 merci à H.PWiz .
-1 merci à Zgarb .
la source
Japt ,
131211 octetsEssayez-le
Explication
Saisie implicite d'entier
U
. La ligne vide au début, empêche la ligne suivante d'écraserU
Convertissez-le
U
en chaîne (s
), inversez-le (w
), reconvertissez-le en entier et attribuez-le à une variableV
.Multipliez
U
parV
.Diviser.
GCD de
V
etU
.Au carré. Sortie implicite de l'entier résultant.
Alternative, 13 octets
Tout simplement parce que j'aime pouvoir utiliser
N
.Essayez-le
la source
Pyth , 13 octets
Essayez-le ici!
Pyth , 15 octets
Cela utilise l'approche d'Adnan et prend l'entrée comme une chaîne.
Essayez-le ici
la source
Code machine x86, 39 octets
La fonction ci-dessus calcule le "nombre de facteurs rares" du paramètre d'entrée spécifié. Suite à la convention d'appel __fastcall basée sur le registre , le paramètre est passé dans le
ECX
registre. Le résultat est renvoyé dans leEAX
registre, comme avec toutes les conventions d'appel x86.Essayez-le en ligne!
Cela a pris énormément de temps pour écrire sous une forme aussi compacte, mais c'était un exercice amusant. Beaucoup de contorsions pour obtenir la planification de registre la plus optimale possible, dans les limites des
DIV
opérandes implicites de l' instruction x86 et en essayant d'utiliser des encodages courtsMUL
et desXCHG
instructions dans la mesure du possible. Je serais très curieux de voir si quelqu'un peut penser à une autre façon de la raccourcir davantage. Mon cerveau était assez frit à la fin. Remerciez un compilateur la prochaine fois que vous en verrez un! (Bien que ce soit moyen de code mieux que ce compilateur générerait ... Surtout si vous peaufiné légèrement sans contraintes de taille, la suppression des choses commeXCHG
.)la source
Perl 5 , 72 octets
71 octets de code + 1 indicateur (
-p
)Essayez-le en ligne!
la source
Pyke , 8 octets
Essayez-le ici!
Prend l'entrée sous forme de chaîne.
la source
Python 2 , 70 octets
Merci à i cri everytim .
Essayez-le en ligne!
Python 2 , 77 octets
Notez qu'en Python 2, vous ne pouvez pas utiliser la
math.gcd()
méthode et vous devez le faire "à la main".Essayez-le en ligne!
la source
gcd
commefractions.gcd
.math.gcd
.Ohm , 9 octets
Essayez-le en ligne!
la source
Java 8,
158150148 148138125123116107+ 19octetsEssayez-le en ligne!
la source
t!=0
part>0
, car t ne sera jamais négatif.f*r/(i*i)
est le même quef/i*r/i
. Vous pouvez supprimerf=t;
etr=i;
si vous enchaînez l'affectation dei
ett
.while(t>0)t=i%(i=t);
(-11 octets).