Inleiding
deelvragen:
Hoe werkt het Meerkamp indeling systeem?
Hoe werkt het Zwitsers indeling systeem?
Hoe werkt het Heller tabellen indeling systeem?
Hoe werkt het Berger tabellen indeling systeem? (optioneel)
Hoe implementeren wij dit op een goede manier in ons Java systeem?
Meerkamp
Het indelingssysteem Meerkamp wordt binnen UVS gespeeld over meerdere avonden. De rondes van een meerkamp worden gespeeld in groepen waar iedere speler een keer speelt tegen ieder speler. Het is ook mogelijk om de competitie enkelrondig (iedereen speelt een keer tegen elkaar) of dubbelrondig (iedereen speelt twee keer tegen elkaar) te spelen. Bij een meerkamp ingedeelde competitie is de indeling van alle rondes bij de start van de meerkamp al bekend.
Zie hier een voorbeeld van hoe een ronde binnen de meerkamp competitie werkt:
Naam | 1 | 2 | 3 | 4 | TOT |
---|---|---|---|---|---|
1 | |||||
2 | |||||
3 | |||||
4 |
Ronde 1: 1-4 2-3
Ronde 2: 4-3 1-2
Ronde 3: 2-4 3-1
Voorbeeld document van een scoreformulier van een dubbelrondige meerkamp:
Scoreformulier-vierkampen.pdf
Een meerkamp competitie wordt over meerdere avonden gespeeld. De groepen binnen de meerkampen zijn meestal gevuld met 4 spelers maar dit kunnen er ook meer zijn. Als er binnen de meerkamp competitie 5 spelers of een andere oneven getal zitten dan moet elke speler één keer een ronde uitzitten. Voor het uitzitten van een ronde ontvangt de speler een punt net als bij een overwinning alleen wordt de rating van de speler niet bijgewerkt. Bij een dubbelronde meerkamp zou dat natuurlijk twee keer per speler zijn.
Hoe krijgen wij dit werkend in onze Java applicatie?
Het meerkamp indelingssysteem lijkt mij redelijk simpel. Als de indeling gelijk wordt gedaan kan dit gebeuren met een simpele formule. Met van te voren een check of er even aantallen zijn binnen de groep is het mogelijk om het systeem gewoon door de lijst van spelers te gaan en ze een voor een op een willekeurige wijzen in te delen.
(Het is nog niet bekend welke spelers hoe de spelers zouden worden ingedeeld, is het willekeurig of is het bijvoorbeeld hoogste rating is nummer 1 en dan laagste is nummer 4. Wie bepaalt wie als eerste wit is of moet dit willekeurig gedaan worden per ronde?)
Zwitsers
Zwitsers is het meest complexe indelingsysteem dat voor klukkluk afgehandeld moet kunnen worden. Bij zwitsers is er maar een groep van spelers, en het doel van zwitsers is om mensen in deze groep nooit 2 keer tegen elkaar te laten spelen, en spelers met hogere scores tegen spelers met vergelijkbare sccores te matchen. Een toernooi dat ingedeelt wordt met een zwitserse indeling vind plaats over meerdere sessies, tussen deze sessies moeten de resultaten van de vorige sessie ingevoerd zijn, want deze zijn relevant voor het genereren van een indeling van de volgende ronde.
Voor alle rondes worden de spelers gesorteerd van hoog naar laag. Hierbij wordt eerst gekeken naar score binnen de wedstrijd, daarna naar weerstandspunten, daarna rating en daarna een willekeurig nummer. Het aantal rondes dat met zwitsers gespeeld kan worden is gelimiteerd, maar kan verschillen. Je kan het dus instellen in Klukkluk bij het aanmaken van de competitie.
De kleur die de spelers spelen wordt bepaald door de kleuren die de spelers al gespeeld hebben. Iedere speler heeft een kleurensaldo die vermeerdert als er gespeeld wordt met wit en vermindert als er gespeeld wordt met zwart. Als iemand 2 keer achter elkaar dezelfde kleur gespeeld heeft in de vorige twee matches moet die persoon met de andere kleur spelen. Anders moet de persoon met +1 saldo wit spelen, anders moet de persoon met -1 zwart spelen, anders moet een van de spelers de tegenovergestelde kleur kiezen, als dat niet lukt is het random. Bij een absolute kleurvoorkeur (2 keer achter elkaar een kleur, of kleursaldo van 2 of -2) moeten de matches zo ingedeeld worden dat deze persoon niet weer als deze kleur speelt.
Weerstandspunten worden bepaald via het sonnenborg-bergen systeem. Als een match heeft plaatsgevonden en speler 1 heeft gewonnen wordt de score van speler 2 dubbel bij de weerstandspunten van speler 1 opgeteld. Bij een remise krijgen beide spelers de score van de ander bij hun weerstandspunten opgeteld, en bij verlies krijgt de verliezende partij niets.
Als er een oneven aantal spelers is moet een van de spelers een timeout krijgen elke ronde. Dit mag een speler niet twee keer in een toernooi krijgen. Deze speler wordt de laatste die overblijft bij de indeling, die vanwege de sortering van de spelers in de praktijk vaak de laagste is.
De absolute regels die aangehouden moeten worden zijn dus:
Het aantal rondes moet niet hoger worden dan het vooraf bepaalde maximaal aantal rondes.
twee spelers mogen niet twee keer tegen elkaar spelen.
een speler mag niet 2 keer in een toernooi een Bye krijgen.
een speler mag niet drie keer achter elkaar dezelfde kleur hebben.
een speler mag niet een kleursaldo hebben van minder dan -2 of meer dan 2.
De sterke regels die verbroken mogen worden om een absolute regel niet te verbreken zijn:
Een speler mag niet twee keer achter elkaar dezelfde kleur hebben.
Een speler mag geen kleursaldo hebben van 1 of -1.
Een speler die naar beneden is geschoven vanwege een oneven aantal spelers in zijn scoregroep mag niet nog een keer naar beneden schuiven.
De voorkeuren die verbroken mogen worden om een sterke regel niet te verbreken zijn:
Een speler moet tegen een speler met dezelfde score spelen.
Een speler moet de tegenovergestelde kleur spelen als in de vorige match die de speler gespeeld heeft.
Heller
Het indelingssysteem Heller wordt binnen UVS gebruikt voor de periodecompetities. Het heller indelingssysteem heeft ongeacht het aantal spelers altijd 5 rondes. De ontvangen voorbeelden bevatten schema's voor 8 ,10 en 12 spelers. Binnen het Heller systeem zit er variatie in de verschillende rondes, het kleursaldo (Wie begint met welke kleur) en de som tegenstanders.
De ronde indeling wordt gelijk al bepaald voor alle rondes i.p.v. dat de winnaar van het ene potje speelt tegen de winnaar van een andere.
10 Spelers 5 Ronden
Schema 1; het oorspronkelijke met voorgestelde aanpassingen in wit/zwart verdeling
P1 | P2 | P3 | P4 | P5 | |
R1 | 1-10 | 2-9 | 3-6 | 4-7 | 5-8 |
R2 | 7-1 | 8-2 | 9-3 | 10-4 | 6-5 |
R3 | 5-1 | 2-4 | 3-8 | 10-6 | 7-9 |
R4 | 1-3 | 6-2 | 4-5 | 8-7 | 9-10 |
R5 | 1-2 | 4-3 | 9-5 | 6-7 | 8-10 |
Schema 1; het huidige in Rokade
P1 | P2 | P3 | P4 | P5 | |
R1 | 1-10 | 2-9 | 3-6 | 4-7 | 5-8 |
R2 | 7-1 | 8-2 | 9-3 | 10-4 | 6-5 |
R3 | 5-1 | 2-4 | 3-8 | 10-6 | 7-9 |
R4 | 1-3 | 6-2 | 4-5 | 8-7 | 9-10 |
R5 | 1-2 | 4-3 | 9-5 | 6-7 | 8-10 |
Schema 2, nieuw
P1 | P2 | P3 | P4 | P5 | |
R1 | 9-1 | 2-6 | 10-3 | 4-8 | 7-5 |
R2 | 1-6 | 5-2 | 3-8 | 7-4 | 10-9 |
R3 | 3-1 | 2-4 | 8-5 | 6-10 | 9-7 |
R4 | 1-4 | 3-2 | 10-5 | 6-7 | 8-9 |
R5 | 5-1 | 2-9 | 7-3 | 4-10 | 8-6 |
Schema 3, nieuw
P1 | P2 | P3 | P4 | P5 | |
R1 | 1-8 | 2-10 | 7-3 | 9-4 | 5-6 |
R2 | 7-1 | 9-2 | 3-8 | 4-5 | 10-6 |
R3 | 1-4 | 3-2 | 8-5 | 6-9 | 10-7 |
R4 | 2-1 | 6-3 | 4-10 | 5-7 | 8-9 |
R5 | 1-6 | 4-2 | 5-3 | 9-7 | 8-10 |
Schema 4, nieuw
P1 | P2 | P3 | P4 | P5 | |
R1 | 9-1 | 2-6 | 3-8 | 4-7 | 10-5 |
R2 | 1-7 | 2-5 | 6-3 | 10-4 | 8-9 |
R3 | 4-1 | 3-2 | 5-6 | 7-8 | 10-9 |
R4 | 1-3 | 2-4 | 8-5 | 6-10 | 7-9 |
R5 | 5-1 | 9-2 | 3-10 | 4-8 | 6-7 |
12 Spelers 5 ronden
Schema 1, het oorpronkelijke
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 10-1 | 6-2 | 12-3 | 4-8 | 9-5 | 11-7 |
R2 | 1-9 | 2-8 | 7-3 | 4-12 | 5-11 | 10-6 |
R3 | 7-1 | 2-10 | 3-11 | 5-4 | 12-6 | 9-8 |
R4 | 4-1 | 3-2 | 5-6 | 8-7 | 12-9 | 11-10 |
R5 | 1-3 | 2-5 | 6-4 | 7-9 | 8-11 | 10-12 |
Schema 1; het huidige in Rokade
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 12-1 | 11-2 | 7-3 | 4-9 | 8-5 | 10-6 |
R2 | 1-7 | 2-10 | 3-11 | 5-4 | 6-12 | 9-8 |
R3 | 1-8 | 6-2 | 9-3 | 10-4 | 5-12 | 11-7 |
R4 | 3-1 | 2-5 | 4-6 | 7-9 | 8-11 | 12-10 |
R5 | 1-2 | 3-4 | 5-6 | 7-8 | 9-10 | 11-12 |
Schema 2, nieuw
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 1-11 | 12-2 | 3-9 | 5-4 | 6-8 | 7-10 |
R2 | 8-1 | 2-6 | 11-3 | 4-7 | 12-5 | 9-10 |
R3 | 1-6 | 10-2 | 3-7 | 8-4 | 5-9 | 11-12 |
R4 | 2-1 | 4-3 | 7-5 | 9-6 | 8-12 | 10-11 |
R5 | 1-5 | 3-2 | 10-4 | 6-12 | 11-7 | 9-8 |
Schema 3, nieuw
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 10-1 | 2-11 | 9-3 | 4-12 | 7-5 | 6-8 |
R2 | 1-8 | 9-2 | 3-7 | 10-4 | 11-5 | 12-6 |
R3 | 5-1 | 4-2 | 3-6 | 7-11 | 8-12 | 9-10 |
R4 | 1-4 | 2-3 | 5-12 | 6-9 | 10-7 | 8-11 |
R5 | 6-1 | 2-5 | 3-8 | 4-7 | 12-9 | 11-10 |
Schema 4, nieuw
P1 | P2 | P3 | P4 | P5 | P6 | |
R1 | 1-10 | 2-12 | 3-11 | 9-4 | 8-5 | 6-7 |
R2 | 8-1 | 11-2 | 10-3 | 4-7 | 5-12 | 9-6 |
R3 | 7-1 | 2-5 | 6-3 | 4-8 | 9-11 | 10-12 |
R4 | 1-2 | 3-4 | 5-9 | 6-10 | 12-7 | 11-8 |
R5 | 1-5 | 3-2 | 4-6 | 7-9 | 12-8 | 11-10 |
8 Spelers 5 ronden
Schema 1, het huidige
P1 | P2 | P3 | P4 | |
R1 | 1-8 | 2-7 | 3-5 | 4-6 |
R2 | 5-1 | 6-2 | 7-3 | 8-4 |
R3 | 4-1 | 3-2 | 8-5 | 7-6 |
R4 | 1-3 | 2-4 | 5-7 | 6-8 |
R5 | 2-1 | 3-6 | 5-4 | 8-7 |
Schema 2, nieuw
P1 | P2 | P3 | P4 | |
R1 | 6-1 | 5-2 | 7-3 | 4-8 |
R2 | 1-7 | 2-8 | 3-6 | 5-4 |
R3 | 1-4 | 2-3 | 8-5 | 6-7 |
R4 | 1-2 | 5-3 | 4-6 | 8-7 |
R5 | 3-1 | 4-2 | 7-5 | 6-8 |
Schema 3, nieuw
P1 | P2 | P3 | P4 | |
R1 | 1-6 | 2-5 | 8-3 | 7-4 |
R2 | 7-1 | 8-2 | 6-3 | 4-5 |
R3 | 1-5 | 3-2 | 4-6 | 8-7 |
R4 | 2-1 | 3-4 | 5-7 | 6-8 |
R5 | 1-3 | 2-4 | 5-8 | 7-6 |
Schema 4, nieuw
P1 | P2 | P3 | P4 | |
R1 | 6-1 | 5-2 | 3-8 | 4-7 |
R2 | 1-7 | 2-8 | 3-6 | 5-4 |
R3 | 5-1 | 2-3 | 6-4 | 7-8 |
R4 | 1-2 | 4-3 | 7-5 | 8-6 |
R5 | 3-1 | 4-2 | 8-5 | 6-7 |
Een periodecompetitie bestaat uit een aantal groepen van spelers. Deze groepen zijn niet noodzakelijk allemaal even groot.
Iedere groep speelt vijf ronden (een ronde per avond). De indeling van alle ronden is bij de start van de periodecompetitie bekend.
Het indelingssysteem Heller heeft vanuit het meegegeven document van UVS
Implementatie
Strategy pattern