De bedoeling is om de deelnemers aan een kampeerweekend gedurende een halve dag op een plezierige manier bezig te houden en de 'leken' onder hen intussen te laten kennismaken met petanque. Door de mensen bij iedere reeks in nieuwe groepjes van 4 te verdelen wil ik de ervaren spelers en de nieuwelingen zo goed mogelijk door mekaar mengen. Ik doe die verdeling nu manueel, afhankelijk van het aantal deelnemers (telkens een veelvoud van 4 natuurlijk), en ik zoek eigenlijk een manier om dit te automatiseren. Ik doe het nu als volgt: in iedere groep 4 spelers, A, B, C en D. Spelers genummerd van 1 tot 6 (totaal 24). 1°reeks: A1+B1 - C1+D1 A2+B2 - C2+D2 enz., tot A6...
Er zit, vooral in de eerste reeksen, een soort logica in, maar ik zou die willen vatten in een formule, zodat ik dit in een computerprogramma zou kunnen verwerken met als input het aantal deelnemers en als output een lijst met de samenstelling van de opeenvolgende reeksen. Vier reeksen is eigenlijk al ruim voldoende om een voormiddag te vullen, je moet ermee rekening houden dat je moet wachten tot een reeks (bijna) volledig afgelopen is voor je een volgende kunt starten.
In ieder geval dank ik je om even mee te denken!
Groetjes, Jan.
Jan De
Iets anders - dinsdag 18 september 2007
Antwoord
Dag Jan,
Aha. Je hebt er genoeg aan als de spelers 4 rondes lang steeds andere spelers treffen. Dat maakt het een stuk eenvoudiger.
Je hebt zelf al gezien dat je alleen hoeft te kijken of de eerste combinatie elkaar nog niet gezien heeft. Daarna kun je de andere zes combinaties maken door gewoon steeds één verder te tellen. Na de 6 ga je dan weer verder met één. De formule die je daarvoor gebruikt (b.v. in excel) is de modulo. mod(i,6) is de rest die overblijft als je i door 6 deelt. Dus: mod(1,6)=1, mod(2,6)=2, mod(3,6)=3, mod(4,6)=4, mod(5,6)=5, mod(6,6)=0, mod(7,6)=1, etc. (in de nederlandstalige excel heet deze functie REST(i;6)).Na de 5 gaat het resultaat weer verder bij nul. Dat is hetzelfde als jij doet. Je moet er alleen nog één bij optellen.
Het vinden van de eerste combinatie voor iedere ronde heb je gedaan op een vergelijkbare manier als ik net schreef. De B's schuif je één plek op, de C's twee plekken en de D's drie plekken. Maar je hebt ook al ervaren dat niet werkt met 4 of 6 groepen. Zoals ik al schreef: dat komt omdat het geen priemgetallen zijn. Een handig getal om te nemen is 5.
Je krijgt dan: in ronde n speelt in groep m. A_rest(m;M) + B_rest(m+rest(n;5);M) tegen: C_rest(m+rest(2*n;5);M) + D_res(m+rest(3*n;5);M) (M is het aantal groepen. Hier M=6) Je hebt nu een schema voor 5 ronden. Wil je er meer dan kun je ook 7 nemen. Maar, dan moet je wel minstens 7 groepen hebben.