Eine Pandigitalzahl ist eine Ganzzahl, die jede Ziffer von 0 bis 9 mindestens einmal enthält. 1234567890, 1902837465000000 und 9023289761326634265 sind alle pandigital. Für die Zwecke dieser Herausforderung sind Zahlen wie 123456789 nicht pandigital, da sie keine 0 enthalten, obwohl 123456789 = 0123456789.
Ein verschiedenes Paar von ganzen Zahlen ist ein Paar von ganzen Zahlen so dass pandigital ist. heißt der diversifizierende Exponent .
Aufgabe: Bestimme mit einer ganzen Zahl den kleinsten entsprechenden diversifizierenden Exponenten b . Dies ist ein Code-Golf , also gewinnt das kürzeste Programm in Bytes.
(Sie können davon ausgehen, dass es einen solchen Exponenten gibt, das heißt, Ihr Programm erhält keine ungültige Eingabe, z. B. eine Potenz von 10).
Ihre Lösung muss in der Lage sein, die angegebenen Testfälle mindestens zu verarbeiten, sollte jedoch theoretisch alle gültigen Eingaben verarbeiten.
Dies ist A090493 bei OEIS.
Testfälle
2 -> 68
3 -> 39
4 -> 34
5 -> 19
6 -> 20
7 -> 18
8 -> 28
9 -> 24
11 -> 23
12 -> 22
13 -> 22
14 -> 21
15 -> 12
16 -> 17
17 -> 14
18 -> 21
19 -> 17
20 -> 51
21 -> 17
22 -> 18
23 -> 14
24 -> 19
25 -> 11
26 -> 18
27 -> 13
28 -> 11
29 -> 12
30 -> 39
31 -> 11
32 -> 14
33 -> 16
34 -> 14
35 -> 19
36 -> 10
1234567890 -> 1
1234567890 -> 1
.123456789
als pandigital? Es ist gleich0123456789
, was definitiv pandigital ist.Antworten:
Brachylog (v2), 9 Bytes
Probieren Sie es online!
Dies ist eine Funktionsübermittlung. Die TIO-Verknüpfung enthält einen Wrapper, der eine Funktion in ein vollständiges Programm umwandelt.
Erläuterung
quelle
Python 2 , 44 Bytes
Die Eingabe muss ein Long sein, da
`k`
sich Longs und Ints unterschiedlich verhalten.Probieren Sie es online!
quelle
Perl 6 , 32 Bytes
Probieren Sie es online!
Ziemlich selbsterklärend.
Erläuterung
quelle
JavaScript (Node.js) ,
51 4643 BytesÜbernimmt die Eingabe als BigInt-Literal. Gibt true anstelle von 1 zurück .
Probieren Sie es online!
quelle
Ruby , 41 Bytes
Probieren Sie es online!
quelle
Haskell, 50 Bytes
Probieren Sie es online!
Gleiche Byteanzahl:
quelle
J , 25 Bytes
Probieren Sie es online!
Einziges monadisches Verb. Die Eingabe sollte eine Ganzzahl mit erweiterter Genauigkeit sein (z
2x
. B. ).Wie es funktioniert
quelle
(]+10>#@=@":@^)^:_*
Tcl , 82 Bytes
Probieren Sie es online!
quelle
llength
82 BytesSchläger ,
11096 Bytes-14 Bytes dank UltimateHawk!
Probieren Sie es online!
quelle
(define(f n[b 1])(if(= 10(length(remove-duplicates(string->list(~v(expt n b))))))b(f n(+ b 1))))
Python 3 ,
5247 Bytesdanke an @BMO
Probieren Sie es online!
quelle
05AB1E (Legacy) ,
109 Bytes1 Byte gespart dank Mr. Xcoder
Probieren Sie es online!
Erläuterung
quelle
1µINmÙgTQ
- Probieren Sie es online!N
damals. Vielen Dank!Holzkohle , 19 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Schieben Sie die leere Zeichenfolge wiederholt in die leere Liste, bis es keine Ziffern mehr gibt, die die Potenz der Eingabe zur Länge der Liste nicht enthält.
Drucken Sie die Länge der Liste.
quelle
K (ngn / k) , 76 Bytes
Probieren Sie es online!
{
}
Funktion mit Argumentx
|(99#10)\x
Wir stellen Zahlen als umgekehrte Listen mit 99 Dezimalstellen dar - machen Sie das mit dem Argumenta::
Zuweisen zu globaler Variablea
(k hat keine Closures. Wir müssena
global sein, damit wir es in Unterfunktionen verwenden können.){
}{
}\
Während die erste Funktion falsey zurückgibt, wenden Sie weiterhin die zweite Funktion (auch while-Schleife genannt) an, um Zwischenergebnisse zu erhaltena*\:x
jedea
Ziffer multipliziert mit jederx
Ziffer ("äußeres Produkt")99 99#a*\:x,0
Füge eine zusätzliche Spalte mit 0s hinzu und verändere die Form erneut auf 99x99. Dies verschiebt die i-te Zeile um i Elemente nach rechts und füge 0s nach links ein (dies funktioniert für die Tests, bei größeren Eingaben kann 99x99 zu Überläufen führen).+/
Summe{+/2 99#,/|0 10\x,0}/
Übertragen:{
}/
Bewerben Sie sich bis zur Konvergenz0 10\x
DivMod durch 10 (ein Paar Listen)|0 10\x
moddiv um 102 99#,/|0 10\x,0
moddiv um 10, wobei der Teil "div" um eine Stelle nach rechts verschoben ist+/
Summe{10>#?(+/|\0<|x)#x}
- auf (nicht) pandigital prüfen:|x
umkehrenx
0<
welche Ziffern ungleich Null sind|\
Teilmaxima+/
sum - Dies zählt die Anzahl der führenden Nullen inx
10>
sind sie weniger als 10?#
Länge der Folge von Kräften - das ist das Ergebnisquelle
PowerShell , 107 Byte
Probieren Sie es online!
Ziemlich einfach, nur eine Schande, die wir
[bigint]
überall verwenden müssen. Wir nehmen Eingaben$a
und richten dann einfor
Schleife mit dem Initialisierer ein$b=1
.Jeder Iteration uns Schritt
$b
nach dem Prüfen , ob$a ^ $b
(überpow
) gesendett
oCharArray
,sort
mit der ed-u
nique Flagge, dann-join
in einen String ed zusammen ist-n
ote
qual auf den Bereich0..9
auch-join
in einen String ed.Das ist ein Schluck. Zum Beispiel würde vergleichen diese
7 ^ 5 = 16807 --> "01678"
gegen"0123456789"
, bestimmen sie nicht gleich sind, und die Schleife weiter.Sobald wir die Schleife verlassen haben, haben wir festgestellt, welcher für
$b
unsere Eingabe geeignet ist, und belassen diesen Wert in der Pipeline. Die Ausgabe ist implizit.quelle
Java, 108 Bytes
Probieren Sie es online!
Erläuterung
Brute Force, indem Sie eine Schleife von a ^ b durchlaufen, bis eine Zeichenfolge mit 10 (oder mehr) eindeutigen Zeichen gefunden wird. Dies ist jedoch unmöglich, da nur 0 bis 9 Zeichen vorhanden sind.
BigDecimal
Dies ist sowohl erforderlich, weilMath.pow
es nicht genau genug ist (schlägt in Groß-11
und Kleinschreibung fehl ), als auch, weil beim Konvertieren von aDouble
in einen String standardmäßig die wissenschaftliche Notation angezeigt wird, die diese Methode zum Ermitteln einer pandigitalen Zahl unterbricht.quelle
new java.math.BigDecimal(a).pow(++b).toString()
auf(new java.math.BigDecimal(a).pow(++b)+"")
(und das hintere Semikolon muss nicht für Lambda - Funktionen gezählt werden). Probieren Sie es online ausPyth,
108 BytesProbieren Sie es hier online aus .
2 Bytes dank FryAmTheEggman, dem vorherigen Code, eingespart
fq;l{j^QT;
quelle
T
im Power-Vorgang ausbleibende Zahl weglassen .Jelly ,
1211 BytesProbieren Sie es online!
Wie es funktioniert
quelle
Sauber ,
107101 BytesProbieren Sie es online!
Übernimmt die Eingabe als
Integer
, kehrt zurückInt
quelle
Wolfram Language (Mathematica) , 48 Byte
Probieren Sie es online!
quelle
Attache , 27 Bytes
Probieren Sie es online!
Erläuterung
Alternativen
28 Bytes:
${Generate{Unique@S[x^_]@9}}
29 Bytes:
${Generate{Unique[S[x^_]]@9}}
30 Bytes:
${Generate{#Unique[S[x^_]]>9}}
31 Bytes:
Generate@${{#Unique[S[x^_]]>9}}
32 Bytes:
${Generate[{#Unique[S[x^_]]>9}]}
33 Bytes:
${If[#Unique[x^y]>9,y,x&$!-~y]}&0
34 Bytes:
${If[#Unique[x^y]>9,y,$[x,y+1]]}&0
quelle