Dank je. Ik heb gezien dat het niet uitmaakt vanaf welke kant je itereert:
for( i = PARTIES - 1; i >= 0; i--)
// for( i = 0; i < PARTIES; i++)
In beide gevallen krijg je uiteindelijk dezelfde uitkomsten:
Checked 8679 combinations
# coalitions = 380
# print calls = 380
# print iterations = 6460
Ook wordt in beide gevallen de eerste coalitie (D66, PVV, CDA, FvD, GL, CU) pas bij de 2.626-ste poging gevonden. De print-functie verzamelt alleen maar de namen van de deelnemende partijen. Het zeteltotaal en aantal deelnemers wordt op een slimmere manier bijgehouden.
De stand is nu 15.139 iteraties in C tegenover 9.406 in Lua. Daarmee is nog steeds niet bewezen dat mijn script beter is, want er zijn nu weliswaar iteraties geteld, maar geen machine-instructies.
Update 14:10 -- Wanneer ik de facultatieve rapportage over de mislukte pogingen opgeef, hoef ik de
inventariseer-functie slechts 380 keer aan te spreken. Zetel- en deelnemergroei kan ik tijdens de hoofditeratie bijhouden, en beider afname in de
rol_terug-functie. Dan loopt het script aanmerkelijk zuiniger:
Aantal pogingen = 672
Aantal coalities = 380
Aantal inventarisaties = 380
Aantal inventarisatie-iteraties = 4838
Aantal rollbacks = 126
Aantal rollbackiteraties = 797
Het totale aantal iteraties komt daarmee op 6.307. Het zuinige script is hier bijgesloten.