Sie möchten einen String erstellen, in dem das ( 1-indizierte ) Zeichen am Index n
steht n
. Wenn n
weniger als 10, dann ist dies einfach: "123456789"
. Wenn n
zum Beispiel 12 ist, wird es unmöglich, da Zahlen größer als 9 (in der Basis 10) mehr als ein Zeichen belegen. Wir können durch Kompromisse die Zeichenfolge in zwei Zeichen Teilteilung: "020406081012"
. Nun wird der Index des Endes jeder Teilkette n
ist n
.
Dies kann für jede d
einstellige Zahl verallgemeinert werden . Hier ist eine Erklärung für den Teil "0991021" der Zeichenfolge für eine dreistellige Zahl:
Index: ... * 97 98 99*100 101 102*103 ...
* * *
*---+---+---*---+---+---*---+
Character: ... * 0 | 9 | 9 * 1 | 0 | 2 * 1 | ...
*---+---+---*---+---+---*---+
Wenn Sie es noch nicht herausgefunden haben, müssen Sie ein Programm / eine Funktion schreiben, die eine Zeichenfolge oder eine Ganzzahl verwendet und die selbstreferenzierende Zeichenfolge wie oben angegeben ausgibt. Sie können auch ein Array aus einstelligen Zahlen, Zeichen oder Zeichenfolgen ausgeben.
Die angegebene Ganzzahl ist immer positiv und durch ihre Länge teilbar (z. B. 126 ist durch 3 teilbar; 4928 ist durch 4 teilbar). Ihr Programm sollte theoretisch für eine beliebig große Eingabe funktionieren, Sie können jedoch davon ausgehen, dass es kleiner als die maximale Ganzzahl und / oder Zeichenfolgenlänge Ihrer Sprache ist.
Einige Beobachtungen, wenn Sie sie immer noch nicht erhalten: Die Länge der Ausgabe ist immer die Eingabe selbst, und die Zahlen, die in der Ausgabe erscheinen, sind durch die Anzahl der Stellen in der Eingabe teilbar.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Testfälle
1 => 1
9 => 123456789
10 => 0204060810
105 => 003006009012015018021024027030033036039042045048051054057060063066069072075078081084087090093096099102105
1004 => 00040008001200160020002400280032003600400044004800520056006000640068007200760080008400880092009601000104010801120116012001240128013201360140014401480152015601600164016801720176018001840188019201960200020402080212021602200224022802320236024002440248025202560260026402680272027602800284028802920296030003040308031203160320032403280332033603400344034803520356036003640368037203760380038403880392039604000404040804120416042004240428043204360440044404480452045604600464046804720476048004840488049204960500050405080512051605200524052805320536054005440548055205560560056405680572057605800584058805920596060006040608061206160620062406280632063606400644064806520656066006640668067206760680068406880692069607000704070807120716072007240728073207360740074407480752075607600764076807720776078007840788079207960800080408080812081608200824082808320836084008440848085208560860086408680872087608800884088808920896090009040908091209160920092409280932093609400944094809520956096009640968097209760980098409880992099610001004