Index: TECH/Algo/GroepVerdeler.cls.xml =================================================================== diff -u -r363 -r397 --- TECH/Algo/GroepVerdeler.cls.xml (.../GroepVerdeler.cls.xml) (revision 363) +++ TECH/Algo/GroepVerdeler.cls.xml (.../GroepVerdeler.cls.xml) (revision 397) @@ -73,20 +73,27 @@ Set Verdeling = ##class(%ListOfDataTypes).%New() #dim Quotien As %Integer = ##class(TECH.Math).Floor(AantalElementen/MaximumInvullingPerGroep) #dim Rest As %Integer = AantalElementen#MaximumInvullingPerGroep - #dim AantalGroepen As %Integer = Quotien + (Rest'=0) + #dim AantalGroepen As %Integer = Quotien + (Rest'=0) #dim AantalGroepenNonGreedy = MaximumInvullingPerGroep - Rest #dim AantalGroepenGreedy = AantalGroepen - AantalGroepenNonGreedy #dim AantalVoorNonGreedy As %Integer = (AantalElementen - (AantalGroepenGreedy*MaximumInvullingPerGroep))/AantalGroepenNonGreedy - #dim GroepID As %Integer - For GroepID=1:1:AantalGroepen { - #dim Aantal As %Integer = 0 - If GroepID <= AantalGroepenGreedy { - Set Aantal = MaximumInvullingPerGroep - }Else{ - Set Aantal = AantalVoorNonGreedy + Set AantalVoorNonGreedy = (AantalElementen - (AantalGroepenGreedy*MaximumInvullingPerGroep))/AantalGroepenNonGreedy + If (AantalGroepenGreedy<0) && (Rest'=0) + { + Set Verdeling = ..MaximumInvullingPerGroepNonGreedy(AantalElementen,MaximumInvullingPerGroep-1) + }Else{ + #dim GroepID As %Integer + For GroepID=1:1:AantalGroepen { + #dim Aantal As %Integer = 0 + If GroepID <= AantalGroepenGreedy { + Set Aantal = MaximumInvullingPerGroep + }Else{ + Set Aantal = AantalVoorNonGreedy + } + Do Verdeling.Insert(Aantal) } - Do Verdeling.Insert(Aantal) - } + } + Quit Verdeling ]]>