Certains diviseurs d'entiers positifs se détestent vraiment et ils n'aiment pas partager un ou plusieurs chiffres communs.
Ces nombres entiers sont appelés nombres de diviseurs hostiles ( HDN )
Exemples
Le nombre 9566
a des 4
diviseurs: 1, 2, 4783 and 9566
(comme vous pouvez le voir, deux d'entre eux ne partagent pas le même chiffre ).
Ainsi, 9566 est un H ostile D iVisor N mbre
Le nombre 9567
n'est PAS HDN car ses diviseurs ( 1, 3, 9, 1063, 3189, 9567
) partagent des chiffres communs.
Voici les premiers HDN
1,2,3,4,5,6,7,8,9,23,27,29,37,43,47,49,53,59,67,73,79,83,86,87,89,97,223,227,229,233,239,257,263,267,269,277,283,293,307,337...
Tâche
La liste ci-dessus continue et votre tâche est de trouver le nième HDN
Contribution
Un entier positif n
de 1
à4000
Sortie
Le nth
HDN
Cas de test
voici quelques cas de test indexés 1 .
Veuillez indiquer le système d'indexation que vous utilisez dans votre réponse pour éviter toute confusion.
input -> output
1 1
10 23
101 853
1012 26053
3098 66686
4000 85009
C'est le code-golf , donc le score le plus bas en octets l'emporte.
MODIFIER
Bonnes nouvelles! J'ai soumis ma séquence à OEIS et ...
Les numéros de diviseurs hostiles sont maintenant OEIS A307636
la source
94699599289
, le carré de307733
, a des diviseurs[1, 307733, 94699599289]
qui montrent que c'est un HDN. Cela me semble hostile.49
? Les facteurs[1, 7, 49]
sont considérés comme hostiles ... Ou bien, ...4
:[1, 2, 4]
1
avec la liste des diviseurs[1]
. (Peut-être que les grands HDN sont plus intéressants?)49
comme ayant des diviseurs[7, 7]
, qui non seulement partagent des chiffres mais sont les mêmes chiffres.49
a des facteurs[1, 7, 49]
Réponses:
05AB1E ,
1210 octets-2 octets grâce à @Emigna .
1 indexé
Essayez-le en ligne ou vérifiez la plupart des cas de test (les deux derniers cas de test sont omis, car ils expirent).
Explication:
la source
µNNÑ€ÙSDÙQ
pour 10.µ
, alors tu me sauves la peine. ;)Python 2 , 104 octets
Essayez-le en ligne!
0 indexé.
la source
JavaScript (ES6), 78 octets
1 indexé.
Essayez-le en ligne!
Version plus rapide, 79 octets
Essayez-le en ligne!
Comment?
Étant donné un entierk>0 , nous construisons la chaîne s comme la concaténation de tous les diviseurs de k .
Parce quek est toujours un diviseur de lui-même, s est initialisé à k (contraint à une chaîne) et le premier diviseur que nous essayons est d=k−1 .
Pour chaque diviseurd de k , nous testons si un chiffre de d peut être trouvé dans s en transformant d en un jeu de caractères dans une expression régulière.
Exemples
"956647832".match(/[1]/)
est faux"9567".match(/[3189]/)
est vraiCommenté
Ceci est la version sans
eval()
, pour plus de lisibilitéla source
Gelée , 10 octets
Essayez-le en ligne!
-1 octet grâce à ErikTheOutgolfer
Prend l'entrée de STDIN, ce qui est inhabituel pour Jelly mais normal où
nfind
est utilisé.2 indexés
la source
nfind
il a changé l'indexation lol⁼Q$
est le même queQƑ
.Perl 6 , 53 octets
Essayez-le en ligne!
1 indexé.
/(.).*$0/
correspond à n'importe quel nombre avec un chiffre répété.grep $_ %% *, 1 .. $_
renvoie une liste de tous les diviseurs du nombre$_
en cours de vérification d'appartenance à la liste.[~]
concatène tous ces chiffres ensemble, puis faitR!~~
correspondre la chaîne de droite avec le modèle de gauche. (~~
est l'opérateur de correspondance habituel,!~~
est la négation de cet opérateur etR
est un méta-opérateur qui permute les arguments de!~~
.)la source
Python 2 (PyPy) ,
117114 octetsUtilise l'indexation 1
Essayez-le en ligne!
la source
Langue Wolfram 103 octets
Utilise l'indexation 1. Je suis surpris qu'il ait fallu autant de code.
la source
(n=t=1;While[t<=#,If[!Or@@IntersectingQ@@@Subsets[IntegerDigits@Divisors@n,{2}],t++];n++];n-1)&
je n'ai pas l'intention de poster une réponse, je vais donc laisser ceci iciPowerShell , 112 octets
Essayez-le en ligne!
Prend une entrée indexée 1
$args[0]
, la stocke dans$a
, boucle jusqu'à ce qu'elle frappe0
. À chaque itération, nous remettons à zéro un tableau à dix éléments$z
(utilisé pour contenir nos chiffres). Ensuite, nous construisons notre liste de diviseurs avec1..++$n|?{!($n%$_)}
. Pour chaque diviseur, nous le convertissons en une chaîne"$_"
, let
transcrivons en oCharArray
etsort
ces chiffres avec le-u
drapeau nique (parce que nous ne nous soucions pas si un diviseur lui-même a des chiffres en double). Nous incrémentons ensuite le nombre de chiffres approprié dans$z
. Ensuite, nous décrémentons$a
uniquement si$z
contient0
s et1
s (c'est-à-dire que nous avons trouvé un HDN). Si nous avons terminé notrefor
boucle, cela signifie que nous avons trouvé le nombre approprié de HDN, donc nous laissons$n
le pipeline et la sortie est implicite.la source
$a-=!($z-ge2)
place$a-=!($z|?{$_-ge2})
Python 3 , 115 octets
1 indexé
Essayez-le en ligne!
Cela utilise beaucoup de récursivité; même avec une limite de récursivité accrue, cela ne peut pas
f(30)
. Je pense que cela pourrait être golfable plus loin, et j'ai essayé de trouver quelque chose pour remplacer le(1-x%d)
, mais je n'ai rien trouvé (-~-x%d
a la mauvaise priorité). Tous les octets qui peuvent être rasés sont grandement appréciés.Comment ça marche
la source
Brachylog (v2), 14 octets
Essayez-le en ligne!
Soumission de fonction; entrée par la gauche, sortie par la droite. (Le lien TIO contient un argument de ligne de commande pour exécuter une fonction comme s'il s'agissait d'un programme complet.)
Explication
"Est-ce un nombre diviseur hostile?" code de problème de décision :
Cela s'est avéré fondamentalement le même que celui de @ UnrelatedString, bien que je l'ai écrit indépendamment.
wrapper "nième solution à un problème de décision ":
C'est l'un de ces cas où l'encapsuleur requis pour produire la nième sortie est beaucoup plus long que le code requis pour tester chaque sortie à son tour :-)
J'ai trouvé ce wrapper indépendamment de @ UnrelatedString. C'est la même longueur et fonctionne sur le même principe, mais finit en quelque sorte par être écrit assez différemment. Il a plus de possibilités d'amélioration, car nous pourrions ajouter des contraintes sur les valeurs que nous regardions gratuitement en remplaçant la
A
par une variable de contrainte, mais aucune des variables de contrainte possibles n'économise d'octets. (S'il y avait une variable de contrainte "entier non négatif", vous pouvez remplacer leA
par, puis enregistrer un octet en rendant leℕ
inutile.)la source
Java 10,
149139138 138125125120119 octets-10 octets en utilisant
.matches
au lieu de.contains
par chiffre, inspiré par la réponse JavaScript de @Arnauld .-5 octets grâce à @ValueInk
-1 octet grâce à @ceilingcat
1 indexé
Essayez-le en ligne.
Explication:
la source
i
ets
dans votre recherche d'expression régulière, vous n'avez pas besoin de la conversion de chaîne supplémentaire, et le résultat est le même.Brachylog , 16 octets
Essayez-le en ligne!
Très lent, et deux fois plus long que s'il s'agissait d'un problème de décision . 1 indexé.
la source
Wolfram Language (Mathematica) , 74 octets
Essayez-le en ligne!
la source
Japt v2.0a0, 17 octets
L'essayer
Port de cette réponse Brachylog .
Crédit: 4 octets d'économies au total grâce à Shaggy qui a également suggéré qu'il y avait une meilleure solution conduisant à beaucoup plus d'octets :)
Réponse originale approche de 28 octets:
L'essayer
Port de cette réponse JavaScript .
la source
«
raccourci auparavant :) Je pense que si Shaggy ne fait qu'améliorer mon score de quelques octets, je dois être (un peu) décent à ce sujet?Icône , 123 octets
Essayez-le en ligne!
1 indexé. Vraiment lent pour les grosses entrées.
la source
Perl 6 , 74 octets
0 indexé. Seuls les trois premiers cas sont répertoriés sur TIO car il est trop lent pour tester le reste.
Essayez-le en ligne!
la source
Rubis ,
110979284 octets-13 octets en tirant parti de la vérification des expressions régulières JavaScript d'Arnauld .
-5 octets pour permuter la
times
boucle pour un décrémenteur et unwhile
.-8 octets en abandonnant
combination
pour quelque chose de plus comme les autres réponses.Essayez-le en ligne!
la source
Perl 5
-p
, 66 octetsEssayez-le en ligne!
1 indexé
la source
J ,
8759 octets-28 octets grâce à FrownFrog
Essayez-le en ligne!
original
J , 87 octets
Essayez-le en ligne!
Beurk.
C'est atrocement long pour J, mais je ne vois pas de bons moyens de le faire baisser.
explication
Cela aide à introduire quelques verbes auxiliaires pour voir ce qui se passe:
d
renvoie une liste de tous les diviseurs de son argumenth
vous dit qu'une telle liste est hostile. Il stringifie et dédoublonne chaque nombre~.@":"0
, ce qui renvoie une matrice carrée où les nombres plus courts sont remplis d'espaces.-.&' '@,/
aplatit la matrice et supprime les espaces, et(-:~.)
vous indique enfin si ce nombre s'est répété ou non.Avec ces deux aides, notre verbe global et non-golfé devient:
Ici, nous maintenons une liste dont la tête est notre "candidat actuel" (qui commence à 1), et dont la queue est tous les nombres hostiles trouvés jusqu'à présent.
Nous incrémentons la tête de liste
>:@[
à chaque itération, et nous ajoutons le "candidat actuel" uniquement s'il est hostileh@d@[ # [
. Nous continuons ainsi jusqu'à ce que la longueur de notre liste atteigne 1 + n:^:(#@] < 1 + [)^:_
.Enfin, lorsque nous avons terminé, nous renvoyons le dernier numéro de cette liste
[: {:
qui est le nième numéro hostile.la source