Défi
Étant donné un entier,, n
comme entrée où 36 >= n >= 2
, sortez combien de nombres Lynch-Bell il y a dans la base n
.
La sortie doit être en base 10.
Numéros de Lynch-Bell
Un numéro est un numéro de Lynch-Bell si:
- Tous ses chiffres sont uniques (pas de répétition de chiffres)
- Le nombre est divisible par chacun de ses chiffres
- Il ne contient pas zéro comme l'un de ses chiffres
Étant donné que tous les chiffres doivent être uniques et que vous avez un ensemble fini de numéros à un chiffre dans chaque base, il existe un nombre fini de numéros Lynch-Bell.
Par exemple, dans la base 2, il n'y a qu'un seul numéro Lynch-Bell 1
, car tous les autres numéros répètent des chiffres ou contiennent un 0.
Exemples
Input > Output
2 > 1
3 > 2
4 > 6
5 > 10
6 > 10
7 > 75
8 > 144
9 > 487
10 > 548
Mathematica Online a manqué de mémoire au-dessus de la base 10. Vous pouvez utiliser le code suivant pour générer le vôtre:
Do[Print[i," > ",Count[Join@@Permutations/@Rest@Subsets@Range[#-1],x_/;And@@(x\[Divides]FromDigits[x,#])]&[i]],{i,10,36,1}]
Gagnant
Le code le plus court en octets gagne.
code-golf
number
base-conversion
Beta Decay
la source
la source
>10
?f(36)
. Faire un défi de code le plus rapide basé sur cela serait probablement intéressant.Réponses:
Gelée , 13 octets
Essayez-le en ligne!
Une autre solution O (n n ) .
Explication
la source
ṖŒPḊŒ!€Ẏ⁼g¥"ḅ¥³S
et plus rapideGelée , 15 octets
Essayez-le en ligne!
Complexité .
O(nn)
la source
O(N^N)
solution non seulement acceptable, mais bonne.O(N↑↑N)
O(N^(N+1))
parce que la validité de chaque numéro généré doit être vérifiéeO(N)
? (bien que je ne comprenne pas Jelly)N+1
est enO(N)
) n'implique pasN^(N+1)
est enO(N^N)
.Java,
222212190 octets-10 octets grâce à Herman
-22 octets grâce à Kevin
Non golfé:
Essayez-le en ligne!
Obtient très lent pour les grands nombres.
la source
a->{int c=0,i=1;A:for(;i<Math.pow(a,a);i++){java.util.Set<Character>g=new java.util.HashSet<>();for(char b:Long.toString(i,a).toCharArray())if(!g.add(b)|b<49||i%Long.parseLong(b+"",a)>0)continue A;c++;}return c;}
A:
etcontinue A;
sont de 13 octets alors qu'il{--c;break;}
est de 12. Est-ce que cela entraînerait un bug que je ne vois pas?i%a
eti/=a
à chaque boucle. Vous pouvez éviter l'ensemble en utilisant unint[]
et en vérifiant quex[b]++<2
java.util.Set<Character>g=new java.util.HashSet<>();
peut êtreimport java.util.*;
+Set g=new HashSet();
;Long.toString
peut êtrea.toString
; etLong.parseLong
peut êtrea.parseInt
.Perl 6 ,
868477 octets-2 octets grâce aux Ramillies
Essayez-le en ligne!
Fonctionne pour n = 8 sur TIO.
la source
.all
au lieu deall $_
.En fait , 24 octets
Essayez-le en ligne!
Explication
Ce programme comprend deux parties principales: la génération de permutation et le test de Lynch-Bell. Ainsi, cette explication examinera chaque partie séparément, pour plus de clarté.
Génération de permutations
Entrée:
n
(un entier dans[2, 36]
)Sortie: toutes les permutations partielles et totales de
[1, n-1]
(séquences contenant des valeurs[1, n-1]
sans répétition dont la longueur est en[1, n-1]
)Test de Lynch-Bell
Entrée: une liste d'
n
entiers de base , représentés sous forme de listes den
chiffres de baseSortie: le nombre de numéros de Lynch-Bell en base
n
la source
Mathematica,
827976 octetsla source
[<parameter>]
après. Avecparameter
étant un nombre.05AB1E , 22 octets
Essayez-le en ligne!
O_O
était aussi mon visage quand cela a finalement fonctionné.<ÝIBJ0Kæ¦Ù€œ˜
est plus rapide que la façon dont j'utilise pour générer les nombres dans la réponse réelle, mais cesse de fonctionner au hasard pour quelque chose de plus grand que 7 (sans raison apparente?)Explication
la source
ε0KÙ}
pouvez0м€Ù
enregistrer un octet.Perl 5,
8076 octets (75 +-p
)Abuser
$;
pour le plaisir et le profit. Expiration des entrées> 8.EDIT: -4 octets en fusionnant les deux boucles.
la source
Rubis ,
8065 octetsEssayez-le en ligne!
Merci à GB pour -15 octets.
la source
Japt
-x
,2519 octets-6 octets grâce à Shaggy
Essayez-le en ligne!
la source
-x
drapeau.Python 3 ,
204174 octetsEssayez-le en ligne!
Pour chaque permutation de chaque élément de l'ensemble de puissance de la plage (1, n) (pas de zéros, unique), convertissez en chaîne numérique en base n. Additionnez tout ce qui est divisible par chaque chiffre, soustrayez 1 en raison du jeu de puissance générant l'ensemble vide.
-30 octets grâce à @ovs!
la source
Haskell , 117 octets
Essayez-le en ligne! Fonctionne sur TIO jusqu'à
n=7
avant expiration.la source
Perl 5 , 108 + 1 (
-p
) = 109 octetsEssayez-le en ligne!
C'est un cochon. Je ne sais pas s'il fera plus que la base 8 sur TIO sans expiration.
la source
C # (Visual C # Interactive Compiler) , 144 octets
Parcourt tous les numéros de 0 à
ulong.MaxValue
et sélectionne ceux qui sont des numéros de Lynch-Bell dans la base spécifiée. Il faut une éternité pour fonctionner, même pour 2, bien que si vous définissez la~0UL
partie de la boucle for sur quelque chose de plus petit, vous pouvez obtenir une sortie pour une entrée jusqu'à 7 en une minute sur TIO.Essayez-le en ligne!
la source