Zij een natuurlijk getal \(n > 0\) gegeven. Gevraagd is om alle partities van \(n\) te bepalen, m.a.w. om alle mogelijke manieren op te stellen waarop \(n\) te schrijven is als som van strikt positieve natuurlijke getallen. Zo kan het natuurlijk getal 6 op volgende manieren geschreven worden: \(6\), \(5+1\), \(4+2\), \(4+1+1\), \(3+3\), \(3+2+1\), \(3+1+1+1\), \(2+2+2\), \(2+2+1+1\), \(2+1+1+1+1\) en \(1+1+1+1+1+1\).
Schrijf een klasse MyPartitioner
, die de gegeven interface Partitioner
1 implementeert door de methode public List<Partition> partitions(int sum)
te implementeren. Als input krijgt deze methode een natuurlijk getal mee. Indien een negatief getal of 0 wordt meegegeven, gooi je een IllegalArgumentException
op. Als output geeft deze methode een lijst van partities terug. Elk object van de klasse Partition
2 houdt de termen van een som bij. Deze klasse bevat naast constructoren (default, copy-constructor en varargs-constructor) de methodes addTerm(int term)
en removeTerm(int term)
om termen eenvoudig toe te voegen en te verwijderen uit een partitie. Omdat het een subklasse is van HashMap<Integer,Integer>
kan je echter nog vele andere methoden gebruiken.
Gebruik eventueel de testklasse SimpleTest
3 om je oplossing lokaal te testen. Je kan hierin eenvoudig extra testgevallen toevoegen.
Merk op dat de online testen enkel de uniciteit en som van jouw partities zullen testen.