Zad1 Napisać generator g(n,r) zwracający wszystkie permutacje liczb 1,2,...,n takie, że dowolna różnica dwu kolejnych wyrazów permutacji jest nie większa niż r. np. g(4,2) ma zwrócić wszystkie takie permutacje zbioru 1,2,3,4, w których 1 nie występuje koło 4 czyli: 1,2,3,4 1,2,4,3 1,3,2,4 1,3,4,2 2,1,3,4 4,2,1,3 4,2,3,1 2,4,3,1 3,1,2,4 4,3,1,2 4,3,2,1 3,4,2,1 Zad2 Napisać generator g(n) zwracający wszystkie rozmieszczenia liczb 1,2,...,n w dwóch cyklach reprezentowanych przez parę list. Efektem dzaiałania: for r in g(4):print(r) ma być ([1],[2,3,4]) albo te same cykle zapisane w inny sposób np: ([1],[3,4,2]), ([4,2,3],[1]),... ([1],[2,4,3]) albo ... ([2],[1,3,4]) ([2],[1,4,3]) ([3],[1,2,4]) ([3],[1,4,2]) ([4],[1,2,3]) ([4],[1,3,2]) ([1,2],[3,4]) ([1,3],[2,4]) ([1,4],[2,3]) w dowolnej kolejności Zad3 Napisać generator g(n) zwracający wszystkie przedstawienia (napisy) liczby naturalnej n jako sumę niemalejącego ciągu liczb naturalnych dodatnich. Efektem działania: for s in g(5):print(s) ma być 5 1+4 1+1+3 2+3 1+1+1+2 1+2+2 1+1+1+1+1 Wsk. Moim zdaniem warto napisać funkcję f(n,max), zwracającą ciągi z dodatkowym warunkiem: wyraz maksymalny jest nie większy od max. Wywołanie f(5,2) ma dać trzy ostatnie z wypisanych sum..