introduction
Dans le monde étrange des nombres entiers, les diviseurs sont comme des actifs et ils utilisent pour appeler "riches" les nombres ayant plus de diviseurs que leur inversion, alors qu'ils appellent "pauvres" ceux qui ont moins de diviseurs que leur inversion.
Par exemple, le nombre a cinq diviseurs: , tandis que son renversement, , n'en a que quatre: .
Ainsi, est appelé un nombre riche , tandis que un nombre pauvre .
1042
Compte tenu de cette définition, nous pouvons créer les deux séquences entières suivantes de nombres riches et pauvres:
(here we list the first 25 elements of the sequences)
Index | Poor | Rich
-------|------|-------
1 | 19 | 10
2 | 21 | 12
3 | 23 | 14
4 | 25 | 16
5 | 27 | 18
6 | 29 | 20
7 | 41 | 28
8 | 43 | 30
9 | 45 | 32
10 | 46 | 34
11 | 47 | 35
12 | 48 | 36
13 | 49 | 38
14 | 53 | 40
15 | 57 | 50
16 | 59 | 52
17 | 61 | 54
18 | 63 | 56
19 | 65 | 60
20 | 67 | 64
21 | 69 | 68
22 | 81 | 70
23 | 82 | 72
24 | 83 | 74
25 | 86 | 75
... | ... | ...
Remarques :
- par "inversion" d'un nombre, nous entendons son inverse numérique , c'est-à-dire que ses chiffres en base 10 sont inversés. Cela signifie que les nombres se terminant par un ou plusieurs zéros auront une inversion "plus courte": par exemple, l'inversion de
1900
est0091
donc91
- nous excluons intentionnellement les nombres entiers ayant le même nombre de diviseurs que leur inversion c'est-à-dire ceux appartenant à OEIS: A062895
Défi
Compte tenu des deux séquences définies ci-dessus, votre tâche consiste à écrire un programme ou une fonction qui, étant donné un entier n
(vous pouvez choisir 0 ou 1 indexé), renvoie le nième nombre pauvre et le nième nombre riche.
Contribution
- Un nombre entier (
>= 0
si indexé 0 ou>= 1
si indexé 1)
Production
- 2 entiers, un pour la séquence pauvre et un pour la séquence riche, dans l'ordre que vous préférez tant qu'il est cohérent
Exemples :
INPUT | OUTPUT
----------------------------------
n (1-indexed) | poor rich
----------------------------------
1 | 19 10
18 | 63 56
44 | 213 112
95 | 298 208
4542 | 16803 10282
11866 | 36923 25272
17128 | 48453 36466
22867 | 61431 51794
35842 | 99998 81888
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
2
. Pour cela, voir Corollaire 1.4 à la fin de l'article suivant, avecn
égal à19, 199, 1999, ...
: m-hikari.com/ijcms-password/ijcms-password13-16-2006/…Réponses:
05AB1E , 16 octets
Essayez-le en ligne!
0 indexé [riche, pauvre]:
Peut-être que quelqu'un peut expliquer pourquoi cette version ne semble pas se terminer, mais lorsque je clique sur "annuler l'exécution" sur TIO, elle se termine par la bonne réponse, ou si vous attendez 60 secondes, vous obtenez la bonne réponse. Pour une version qui se termine "correctement", vous pouvez utiliser:
T+nL.¡ÂÑgsÑg.S}¦ζsè
+3 octetsla source
∞n5è
, ne calculerait que les 6 premiers nombres. Je pense que lorsque ces types de constructions en boucle / regroupement / fractionnement entrent en jeu, l'évaluation paresseuse échoue et essaie de calculer tous les éléments avant de revenir.€g
.. Je l'ai utilisé si souvent. Aurait enregistré un octet ici avec l'alternative (maintenant octet égal)‚рgÆ.±
. Belle réponse cependant! Grande utilisation de.¡
!δg
lol.JavaScript (ES6),
121 115 113111 octetsL'entrée est indexée sur 1. Sorties comme
[poor, rich]
.Essayez-le en ligne!
Commenté
Fonction d'assistance
Principale
la source
Gelée , 22 octets
Essayez-le en ligne!
Explication
la source
Wolfram Language (Mathematica) , 152 octets
Essayez-le en ligne!
Si la conjecture est vraie, cette solution de 140 octets fonctionne également
Essayez-le en ligne!
Voici l' intrigue pauvre vs riche
la source
a(27635)= {70003, 65892}
Perl 6 , 81 octets
Essayez-le en ligne!
* > *
est une fonction anonyme qui renvoie true si son premier argument est supérieur au second. De même pour* < *
. Les premiers sélectionneront les nombres qui appartiennent à la séquence riche, les seconds sélectionneront ceux qui appartiennent à la séquence pauvre.(* > *, * < *).map(-> &c { ... })
produit une paire de séquences infinies, chacune basée sur l'une des fonctions de comparaison: la séquence riche et la séquence pauvre, dans cet ordre.»[$_]
indexe dans ces deux séquences à l'aide de$_
l'argument de la fonction de niveau supérieur, renvoyant une liste à deux éléments contenant le$_
e membre de la séquence riche et le$_
e membre de la séquence pauvre.grep $_ %% *, 1..$_
produit une liste des diviseurs de$_
.map { grep $_ %% *, 1..$_ }, $_, .flip
produit une liste à deux éléments des diviseurs de$_
, et les diviseurs de$_
avec ses chiffres inversés ("inversés").[[&c]]
réduit cette liste à deux éléments avec la fonction de comparaison&c
(supérieure ou inférieure à), produisant une valeur booléenne indiquant si ce nombre appartient à la séquence riche de la séquence pauvre.la source
1..$_
peut être^$_
. Vous pouvez également déplacer le[$_]
vers à l'intérieur de la fonction de carte. 78 octetsPython 2 ,
142141 octetsEssayez-le en ligne!
Alternative non récursive (très similaire aux autres réponses Python)
Python 2 , 143 octets
Essayez-le en ligne!
la source
Python 2 ,
158153 octets-2 octets grâce à shooqie
Essayez-le en ligne!
L'entrée est indexée 0. Sorties comme
poor rich
.la source
+=[c]
au lieu de.append(c)
travailler?Rubis , 128 octets
L'entrée est indexée zéro . Sorties comme [pauvres, riches].
Explication
Essayez-le en ligne!
la source
Perl 6 , 76 octets
Essayez-le en ligne!
Je n'ai pas vu la réponse Perl 6 de Sean , mais cela fonctionne d'une manière différente. Notez que j'ai codé en dur la limite supérieure en tant que
n*3+99
, ce qui n'est probablement pas strictement correct. Cependant, je pourrais remplacer*3
avec³
pour aucun octets supplémentaires, ce qui rendrait le programme beaucoup moins efficace, si plus correct.la source
Python 2 , 152 octets
Essayez-le en ligne!
Finit par être assez similaire à la réponse de Rod . Renvoie un
n
tuple pauvre et riche indexé sur zéro .la source
Icône ,
180175 octetsEssayez-le en ligne!
la source
APL (Dyalog Unicode) , 34 octets
Essayez-le en ligne!
Merci à Adám et ngn de m'avoir aidé à jouer au golf cette monstruosité.
TIO expire pour les plus gros indices (qui nécessitent
⍳1e5
ou⍳1e6
), mais avec suffisamment de temps et de mémoire, la fonction se terminera correctement.la source
R ,
152137 octets-12 octets grâce à Giuseppe -3 octets grâce à digEmAll
Essayez-le en ligne!
T
est l'entier actuellement en cours d'essai; les derniers nombres pauvres et riches sont stockés dans le vecteurF
.La façon la plus courte que j'ai pu trouver pour inverser un entier était de le convertir en chiffres en base 10 avec une arithmétique modulaire, puis de reconvertir avec des puissances de 10 inversées, mais je m'attends à être dépassé sur ce front et sur d'autres.
Explication (de la précédente version similaire):
la source
nchar
.log10
!JavaScript (Node.js) ,
190180 octetsSorties comme
[poor, rich]
.Essayez-le en ligne!
Explication
d(n)
Une fonctionCet assistant trouve le nombre de facteurs dont dispose un nombre.
Fonction principale
la source
C # (Visual C # Interactive Compiler) , 221 octets
Essayez-le en ligne!
la source