Při řešení úlohy Život by se nám bývala docela hodila cyklická datová struktura. Zkuste proto navrhnout (a naimplementovat) variantu datového typu seznam, která se však bude chovat cyklicky, tzn. že bude zvládat mimo jiné následující operace:
>>> from cyclic_list import CyclicList
>>> xs = CyclicList(range(10))
>>> xs
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> len(xs)
10
>>> xs[9]
9
>>> xs[10]
0
>>> xs[8:]
[8, 9]
>>> xs[18:]
[8, 9]
>>> xs[-10]
0
>>> xs[-11]
9
>>> xs[::3]
[0, 3, 6, 9]
>>> xs[::-3]
[9, 6, 3, 0]
>>> for x in xs: print(x)
...
0
1
2
3
4
5
6
7
8
9
Krok ve výřezové notaci by se měl chovat stejně jako u normálního seznamu – při čísle vyšším než počet prvků se vrátí podle znaménka buď pouze první nebo poslední prvek. Jinak bychom se totiž asi museli ucyklit :-)