Mathematica, 82 Bytes
Unter Verwendung des Einreichungsmusters von @Jenny_mathys Antwort ...
(d=x=1;y=0;f:=(10^x-1)10^y;n:=If[y>0,y--;x++,y=d;d++;x=1];While[Mod[f,#]!=0,n];f)&
Eingang:
[17]
Ausgabe:
9999999999999999
Und relativ zu dem Argument in Kommentaren bei @ Jenny_mathys Antwort mit @Phoenix ... RepeatedTiming[]
der Anwendung auf den Eingang [17]
gibt
{0.000518, 9999999999999999}
also eine halbe Millisekunde. Sich zu einem etwas größeren Eingang [2003]
:
{3.78, 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
etwas unter 4 Sekunden.
Testtabelle: Bei den ersten 30 positiven ganzen Zahlen sind die Ergebnisse
{9, 90, 9, 900, 90, 90, 999999, 9000, 9, 90, 99, 900, 999999,
9999990, 90, 90000, 9999999999999999, 90, 999999999999999999, 900,
999999, 990, 9999999999999999999999, 9000, 900, 9999990, 999,
99999900, 9999999999999999999999999999, 90}
Erläuterung: Die einzige Magie hier ist der benutzerdefinierte Iterator ("Iterator" im CS-Sinne, nicht der M'ma-Sinn).
n := If[ y>0 , y-- ; x++ , y=d ; d++ ; x=1]
Dies wirkt sich auf die globalen Variablen x
, die Anzahl der führenden "9" y
, die Anzahl der nachfolgenden "0" und d
die Gesamtzahl der Ziffern aus. Wir möchten die Anzahl der Stellen durchlaufen und für jede Wahl der Anzahl der Stellen mit den meisten "0" und den geringsten "9" beginnen. Daher initialisiert der Code zuerst d
auf 1, erzwingt x
1 und y
0. Der benutzerdefinierte Iterator überprüft, ob die Zeichenfolge der "0" gekürzt werden kann. In diesem Fall wird die Zeichenfolge von "0" um eins gekürzt und die Zeichenfolge von "1" um eins erhöht. Ist dies nicht der Fall, wird die Anzahl der Stellen erhöht, die Anzahl der "0" auf eins weniger als die Anzahl der Stellen gesetzt und die Anzahl der "9" auf 1 gesetzt.d
ist der gewünschte Wert von y
.)