Beste mensen,
Ik was vandaag bezig met een programma om hockeypoules te genereren. Helaas is mijn wiskunde kennis niet zo geweldig, vandaar deze post. Het programma is overigens geschreven in Java, maar dat maakt voor de aard van het probleem niet heel veel uit.
Ik moet hockeypoules genereren aan de hand van een X aantal teams. X is altijd 18 of hoger (daaronder liggen allemaal uitzonderingssituaties). Bij 18 en daarboven moeten de teams ingedeeld worden in poules van 6 tot 8. Een gelijkmatige verdeling is gewenst, maar niet noodzakelijk.
Een voorbeeld:
Als er 18 teams aangeboden worden, worden er 3 (6 + 6 + 6) poules gemaakt.
Zijn er 19 teams, dan 3 poules (6 + 6 + 7).
Bij 29 teams 4 poules ( 6 + 7 + 8 + 8 )
etc.
Nu is het me wel gelukt om het te maken (zie onder), maar ik kan ook wel zien dat dit niet de meeste geweldige implementatie is. Ik hoopte daarom dat iemand mij hiermee kan helpen.
Alvast bedankt. Erik.
Ik was vandaag bezig met een programma om hockeypoules te genereren. Helaas is mijn wiskunde kennis niet zo geweldig, vandaar deze post. Het programma is overigens geschreven in Java, maar dat maakt voor de aard van het probleem niet heel veel uit.
Ik moet hockeypoules genereren aan de hand van een X aantal teams. X is altijd 18 of hoger (daaronder liggen allemaal uitzonderingssituaties). Bij 18 en daarboven moeten de teams ingedeeld worden in poules van 6 tot 8. Een gelijkmatige verdeling is gewenst, maar niet noodzakelijk.
Een voorbeeld:
Als er 18 teams aangeboden worden, worden er 3 (6 + 6 + 6) poules gemaakt.
Zijn er 19 teams, dan 3 poules (6 + 6 + 7).
Bij 29 teams 4 poules ( 6 + 7 + 8 + 8 )
etc.
Nu is het me wel gelukt om het te maken (zie onder), maar ik kan ook wel zien dat dit niet de meeste geweldige implementatie is. Ik hoopte daarom dat iemand mij hiermee kan helpen.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| public static void createPoules(int teamCount) { System.out.println("Creating poules for " + teamCount + " teams."); // 19 22 int pouleCount = teamCount / 6; // = 3 = 3 int restTeams = teamCount % 6; // = 1 = 4 int[] poules = new int[pouleCount]; // 3 arrays 3 arrays for(int i = 0; i < poules.length; i ++) { poules[i] = 6; } int fullTeams = restTeams / 2;// 3 // = 0 = 1 int notFullTeams = restTeams % 2;// 3 // = 1 = 1 for( int i = 0; i < poules.length; i ++ ) {if( i < fullTeams ) { poules[i]+=2; } else {poules[i]+= notFullTeams; break; } } System.out.println("Created poules"); for(int i = 0; i < poules.length; i ++) { System.out.print( poules[i] + ", "); } } |
Alvast bedankt. Erik.