Розглянемо наступний список:
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',
...
]
Ось один із способів поглянути на це - ви навчитесь писати китайські символи та хочете навчитися все більшим шматкам їх, репетируючи їх під час руху. Ви починаєте з A, потім переходите з B, тоді вже є послідовність, яка є парою двох, так що ви комбінуєте її. Потім ви йдете з C і D, складаєте іншу пару, практикуєте це. Тоді ви репетируєте: ABCD. Потім те саме відбувається з E до H, потім репетируємо: ABCDEFGH. Список нескінченний.
Мета - генерувати та роздруковувати n-й елемент цього списку, індекси піднімаються з нуля. Припустимо, що після "Z" ви знову отримаєте "A".
Критеріями виграшу є довжина вихідного коду.
x,y,z,a,b...
).
BC
чиCDEF
? Що вирішує, що ми об'єднуємо, а що ні? Як це нескінченно, якщо воно починаєтьсяA
знову післяZ
(ти маєш на увазі в якийсь момент після того, якABCDEFGHIJKLMNOPQRSTUVWXZ
миABCDEFGHIJKLMNOPQRSTUVWXZAB
щось зробимо ?)