Considérez la liste suivante:
expected = [
'A',
'B',
'AB',
'C',
'D',
'CD',
'ABCD',
'E',
'F',
'EF',
'G',
'H',
'GH',
'EFGH',
'ABCDEFGH',
'I',
'J',
'IJ',
'K',
'L',
'KL',
'IJKL',
'M',
'N',
'MN',
'O',
'P',
'OP',
'MNOP',
'IJKLMNOP',
'ABCDEFGHIJKLMNOP',
...
]
Voici une façon de voir les choses: vous apprenez à écrire des caractères chinois et souhaitez en apprendre de plus en plus de gros morceaux, en les répétant au fur et à mesure. Vous commencez avec A, puis allez avec B, puis il y a déjà une séquence qui est une paire de deux, donc vous la combinez. Ensuite, vous allez avec C et D, faites une autre paire, entraînez-vous. Ensuite, vous répétez: ABCD. Ensuite, la même chose va de E à H, puis répétez: ABCDEFGH. La liste est infinie.
Le but est de générer et d'imprimer un n-ième élément de cette liste, les index remontant à zéro. Supposons qu'après «Z», vous obtenez à nouveau «A».
Le critère gagnant est la longueur du code source.
x,y,z,a,b...
).
BC
ouCDEF
? Qu'est-ce qui décide de ce que nous concaténons et de ce que nous ne faisons pas? Comment est-il infini si celaA
recommence aprèsZ
(vous voulez dire à un moment donné après queABCDEFGHIJKLMNOPQRSTUVWXZ
nous ayonsABCDEFGHIJKLMNOPQRSTUVWXZAB
quelque chose?)