Herausforderung
Wenn Sie eine Ganzzahl angeben, geben Sie n
als Eingabe wo aus 36 >= n >= 2
, wie viele Lynch-Bell-Zahlen sich in der Basis befinden n
.
Die Ausgabe muss in der Basis 10 sein.
Lynch-Bell-Nummern
Eine Zahl ist eine Lynch-Bell-Zahl, wenn:
- Alle Ziffern sind eindeutig (keine Wiederholung von Ziffern)
- Die Zahl ist durch jede Ziffer teilbar
- Es enthält keine Null als eine seiner Ziffern
Da alle Ziffern eindeutig sein müssen und Sie in jeder Basis einen endlichen Satz einstelliger Zahlen haben, gibt es eine endliche Anzahl von Lynch-Bell-Zahlen.
Zum Beispiel in der Basis 2 gibt es nur einen Lynch-Bell - Nummer, 1
da alle anderen Zahlen entweder wiederholen Ziffern oder eine 0 enthalten.
Beispiele
Input > Output
2 > 1
3 > 2
4 > 6
5 > 10
6 > 10
7 > 75
8 > 144
9 > 487
10 > 548
In Mathematica Online ist über Basis 10 kein Speicher mehr verfügbar. Mit dem folgenden Code können Sie Ihren eigenen generieren:
Do[Print[i," > ",Count[Join@@Permutations/@Rest@Subsets@Range[#-1],x_/;And@@(x\[Divides]FromDigits[x,#])]&[i]],{i,10,36,1}]
Gewinnen
Kürzester Code in Bytes gewinnt.
code-golf
number
base-conversion
Beta-Zerfall
quelle
quelle
>10
?f(36)
. Eine schnellstmögliche Code-Abfrage auf dieser Grundlage durchzuführen, wäre wahrscheinlich interessant.Antworten:
Jelly , 13 Bytes
Probieren Sie es online!
Eine weitere O (n n ) -Lösung.
Erläuterung
quelle
ṖŒPḊŒ!€Ẏ⁼g¥"ḅ¥³S
und schnellerGelee , 15 Bytes
Probieren Sie es online!
Komplexität .
O(nn)
quelle
O(N^N)
Lösung nicht nur akzeptabel, sondern auch gut.O(N↑↑N)
O(N^(N+1))
daran liegen, die Gültigkeit jeder generierten Nummer zu überprüfenO(N)
? (obwohl ich Jelly nicht verstehe)N+1
inO(N)
) nicht impliziert,N^(N+1)
ist inO(N^N)
.Java,
222212190 Bytes-10 Bytes dank Herman
-22 Bytes dank Kevin
Ungolfed:
Probieren Sie es online!
Wird bei großen Zahlen sehr langsam.
quelle
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:
undcontinue A;
sind 13 Bytes, während{--c;break;}
es 12 sind. Würde das einen Fehler auslösen, den ich nicht sehe?i%a
undi/=a
an jeder Schleife eingeben. Sie können den Satz vermeiden, indem Sie einint[]
und überprüfen, dassx[b]++<2
java.util.Set<Character>g=new java.util.HashSet<>();
kannimport java.util.*;
+ seinSet g=new HashSet();
;Long.toString
kann seina.toString
; undLong.parseLong
kann seina.parseInt
.Perl 6 ,
868477 Bytes-2 Bytes dank Ramillies
Probieren Sie es online!
Funktioniert für n = 8 auf TIO.
quelle
.all
anstattall $_
.Eigentlich 24 Bytes
Probieren Sie es online!
Erläuterung
Dieses Programm besteht aus zwei Hauptteilen: der Permutationsgenerierung und dem Lynch-Bell-Test. In dieser Erklärung wird daher zur besseren Übersichtlichkeit jeder Teil einzeln betrachtet.
Permutationen erzeugen
Eingabe:
n
(eine ganze Zahl in[2, 36]
)Ausgabe: alle Teil- und Gesamtpermutationen von
[1, n-1]
(Sequenzen mit Werten von[1, n-1]
ohne Wiederholung, deren Länge in ist[1, n-1]
)Lynch-Bell-Test
Eingabe: Eine Liste von Basis-
n
Ganzzahlen, dargestellt als Liste von Basis-n
ZiffernAusgabe: Die Anzahl der Lynch-Bell-Nummern in der Basis
n
quelle
Mathematica,
827976 Bytesquelle
[<parameter>]
. Mitparameter
einer Nummer.05AB1E , 22 Bytes
Probieren Sie es online!
O_O
war auch mein gesicht als dies endlich funktionierte.<ÝIBJ0Kæ¦Ù€œ˜
ist schneller als die Art und Weise, wie ich die Zahlen in der eigentlichen Antwort erzeuge, funktioniert jedoch zufällig nicht mehr bei Werten über 7 (ohne ersichtlichen Grund?)Erläuterung
quelle
ε0KÙ}
kann es sein0м€Ù
, ein Byte einzusparen.Perl 5,
8076 Bytes (75+-p
)Missbrauch
$;
für Spaß und Gewinn. Zeitüberschreitung bei Eingängen> 8.BEARBEITEN: -4 Bytes durch Zusammenführen der beiden Schleifen.
quelle
Ruby ,
8065 BytesProbieren Sie es online!
Vielen Dank an GB für -15 Bytes.
quelle
Japt
-x
,25 bis19 Bytes-6 Bytes dank Shaggy
Probieren Sie es online!
quelle
-x
Flag.Python 3 ,
204174 BytesProbieren Sie es online!
Konvertieren Sie für jede Permutation jedes Elements des Potenzsatzes des Bereichs (1, n) (keine Nullen, eindeutig) in eine numerische Zeichenfolge zur Basis n. Addieren Sie alle durch jede Ziffer teilbaren Werte und subtrahieren Sie 1, da das Powerset das leere Set generiert.
-30 Bytes dank @ovs!
quelle
Haskell , 117 Bytes
Probieren Sie es online! Funktioniert mit TIO bis zu einer
n=7
Zeitüberschreitung.quelle
Perl 5 , 108 + 1 (
-p
) = 109 BytesProbieren Sie es online!
Es ist ein Schwein. Ich bin mir nicht sicher, ob es mehr als Basis 8 für TIO ohne Zeitüberschreitung leisten wird.
quelle
C # (Visual C # Interactive Compiler) , 144 Byte
Durchläuft alle Nummern von 0 bis
ulong.MaxValue
und wählt die Lynch-Bell-Nummern in der angegebenen Basis aus. Die Ausführung dauert ewig, auch für 2. Wenn Sie jedoch den~0UL
Part in der for-Schleife auf einen kleineren Wert setzen, können Sie auf TIO innerhalb einer Minute eine Ausgabe für eine Eingabe von bis zu 7 erhalten.Probieren Sie es online!
quelle