Considere a seguinte lista:
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',
...
]
Aqui está uma maneira de analisar: você está aprendendo a escrever caracteres chineses e deseja aprender cada vez mais grandes partes deles, ensaiando-os à medida que avança. Você começa com A, depois vai com B, então já existe uma sequência que é um par de dois, então você a combina. Então você vai com C e D, faz outro par, pratica. Então você ensaia: ABCD. Então o mesmo acontece com E até H, depois ensaie: ABCDEFGH. A lista é infinita.
O objetivo é gerar e imprimir um n-ésimo elemento desta lista, os índices subindo de zero. Suponha que após 'Z', você obtenha 'A' novamente.
O critério vencedor é o comprimento do código-fonte.
x,y,z,a,b...
).
BC
ouCDEF
? O que decide o que concatenamos e o que não fazemos? Como é infinito se ele começa emA
novamente depoisZ
(quer dizer, em algum momento depoisABCDEFGHIJKLMNOPQRSTUVWXZ
temosABCDEFGHIJKLMNOPQRSTUVWXZAB
ou algo assim?)