Rozważ następującą listę:
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',
...
]
Oto jeden ze sposobów, aby na to spojrzeć - uczysz się pisać chińskie znaki i chcesz nauczyć się coraz większych ich fragmentów, ćwicząc je podczas podróży. Zaczynasz od A, potem B, a potem jest już sekwencja złożona z dwóch, więc ją połączysz. Następnie idź z C i D, stwórz kolejną parę, ćwicz ją. Następnie ćwiczysz: ABCD. To samo dotyczy E do H, a następnie ćwiczyć: ABCDEFGH. Lista jest nieskończona.
Celem jest wygenerowanie i wydrukowanie n-tego elementu tej listy, indeksów rosnących od zera. Załóżmy, że po „Z” znów dostajesz „A”.
Kryterium wygranej to długość kodu źródłowego.
x,y,z,a,b...
).
BC
lubCDEF
? Co decyduje o tym, co łączymy, a co nie? Jak to jest nieskończone, jeśli zaczyna się odA
nowa poZ
(masz na myśli w pewnym momencie po tymABCDEFGHIJKLMNOPQRSTUVWXZ
,ABCDEFGHIJKLMNOPQRSTUVWXZAB
czy coś?)