Vous voulez faire une chaîne où le ( 1-indexé caractère) à l' index n
est n
. Quand n
est inférieur à 10, cela est facile: "123456789"
. Quand n
est 12, par exemple, cela devient impossible, car les nombres supérieurs à 9 (en base 10) occupent plus d'un caractère. Nous pouvons transiger en divisant la chaîne en sous - chaînes de deux caractères: "020406081012"
. Maintenant, l'index de la fin de chaque sous n
- chaîne est n
.
Cela peut être généralisé pour n'importe d
quel nombre à chiffres. Voici une explication de la partie "0991021" de la chaîne pour un nombre à trois chiffres:
Index: ... * 97 98 99*100 101 102*103 ...
* * *
*---+---+---*---+---+---*---+
Character: ... * 0 | 9 | 9 * 1 | 0 | 2 * 1 | ...
*---+---+---*---+---+---*---+
Si vous ne l'avez pas encore compris, vous devez écrire un programme / fonction qui prend une chaîne ou un entier et produire sa chaîne auto-référentielle comme spécifié ci-dessus. Vous pouvez également générer un tableau de nombres à un chiffre, de caractères ou de chaînes à un seul caractère.
L'entier donné sera toujours positif et divisible par sa longueur (par exemple 126 est divisible par 3; 4928 est divisible par 4). Votre programme devrait théoriquement fonctionner pour une entrée arbitrairement grande, mais vous pouvez supposer qu'il est plus petit que la longueur entière et / ou la chaîne maximale de votre langue.
Quelques observations si vous ne l'obtenez toujours pas: La longueur de la sortie sera toujours l'entrée elle-même, et les nombres qui apparaissent dans la sortie seront divisibles par le nombre de chiffres dans l'entrée.
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Cas de test
1 => 1
9 => 123456789
10 => 0204060810
105 => 003006009012015018021024027030033036039042045048051054057060063066069072075078081084087090093096099102105
1004 => 00040008001200160020002400280032003600400044004800520056006000640068007200760080008400880092009601000104010801120116012001240128013201360140014401480152015601600164016801720176018001840188019201960200020402080212021602200224022802320236024002440248025202560260026402680272027602800284028802920296030003040308031203160320032403280332033603400344034803520356036003640368037203760380038403880392039604000404040804120416042004240428043204360440044404480452045604600464046804720476048004840488049204960500050405080512051605200524052805320536054005440548055205560560056405680572057605800584058805920596060006040608061206160620062406280632063606400644064806520656066006640668067206760680068406880692069607000704070807120716072007240728073207360740074407480752075607600764076807720776078007840788079207960800080408080812081608200824082808320836084008440848085208560860086408680872087608800884088808920896090009040908091209160920092409280932093609400944094809520956096009640968097209760980098409880992099610001004