Programmieraufgabe: Partitionen

Definition

eine Partition einer natürlichen Zahl n ist eine Liste von positiven natürlichen Zahlen [x1, ..., xk] mit x1 + ... + xk = n und x1 >= ... >= xk.

Beispiel

partitions :: Int -> [ Partition ]
partitions 5 = [Partition [5],Partition [4,1],Partition [3,2],
                Partition [3,1,1],Partition [2,2,1],
		Partition [2,1,1,1],Partition [1,1,1,1,1]]

Programm

Die Liste aller Partitionen einer Zahl bestimmen wir mit diesem Programm.

Aufgabe

Schreibe eine Funktion u_partitions, die die Liste aller Partitionen bestimmt, die nur aus ungeraden Zahlen bestehen. - Beispiel:
u_partitions 5 =
[Partition [5],Partition [3,1,1],Partition [1,1,1,1,1]]
Schreibe eine Funktion f_partitions, die die Liste aller Partitionen bestimmt, die streng monoton fallend sind. - Beispiel:
f_partitions 5 =
[Partition [5],Partition [4,1],Partition [3,2]]
Finde einen Zusammenhang zwischen length (u_partitions n) und length (f_partitions n) und beweise diesen.