Рассмотрим следующий список:
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
или что-то?)