Geen zin om het te programmeren maar ik kan je wel een/de oplossing geven;
Je kunt het probleem opdelen in 2 identieke deelproblemen; namelijk de groep
1-8 en groep 9-16.
Die kun je s'ochtends / s'middags of om en om of op dubbele velden laten
spelen. Aan jou de keus.
Dan nu het deel probleem 8 teams, 8 sporten.
Elk team heeft dus 7 tegenstanders en zal dus altijd 1 keer tegen dezelfde
tegenstander moeten spelen om alle sporten te kunnen doen.
De volgende oplossing zorgt daar voor:
Neem de volgende indeling voor de eerste ronde:
kolom A kolom B
team 1 tegen het team 4 hoger (team 5)
team 2 tegen het team 1 hoger (team 3)
team 4 tegen het team 3 hoger (team 7)
team 6 tegen het team 2 hoger (team 8)
Deze indeling zorgt er voor dat er een team is die tegen 1 team hoger moet
spelen (team 2 tegen team 3), een team die tegen 2 hoger moet spelen (team 6
tegen 8) etcetera.
De volgende ronde moet je de B kolom 1 omhoog schuiven, dus 1 speelt tegen
het team 1 hoger enzovoort.
Dit doe je voor alle 8 de ronden en je bent klaar.
Als het te cryptisch is hoor ik het wel!
Veel succes,
Corno
Sport
spelronde A B C D E F G H
1 1-5 2-3 4-7 6-8
2 2-6 3-4 5-8 7-1
3 3-7 4-5 6-1 8-2
4 4-8 5-6 7-2 1-3
5 5-1 6-7 8-3
2-4
6 6-2 7-8 1-4
3-5
7 7-3 8-1 2-5
4-6
8 8-4 1-2 3-6
5-7
[ 8 onderdelen, 16 groepen die je in twee-en moet splitsen ]
Ik zou daar geen software voor schrijven, maar gewoon even uit het hoofd
doen...
onderdelen: a t/m h onder elkaar schrijven, en dan
daarachter meteen de getallen 1 t/m 4 en 9 t/m 12. In de volgende
kolom de getallen 5 t/m 8 en 13 t/m 16 zodat je weet welke
(leeftijds-)groepen dat spel tegen elkaar spelen.
En dan een beetje doorrouleren, wat is het probleem?
Corno
>Complexer dan je zou verwachten.... De kunst is om te zorgen dat iedereen
>alle tegenstanders ontmoet, alle sporten doet en dat ook nog in zo min
>mogelijk speelronden (8 is het theoretisch minimum maar verzin maar eens een
>speelschema die dat heeft).
Eh, met acht ploegen en acht verschillende sporten lukt het al niet.
Dat wil zeggen: je ontkomt er niet aan dat ploeg 1 dan twee keer
eenzelfde andere ploeg ontmoet bij een sport.
Corno
Bij bridgen zijn er hele schema's hoe je dit moet oplossen.
Lees dan alleen "paren" voor teams en "spellen" of "tafel" voor onderdeel.
Begin eerst met 8 teams en 7 ronden waarbij iedereen tegen iedereen een keertje
speelt. Dat zijn de zogenaamde "Howell" schema's. Voor 7 onderdelen is het
geheel dus allang opgelost. Met de termen "Howell", "pairs", "boards" en "table"
moet Google wel wat op kunnen leveren.
Uit m'n schema boek:
onderdeel
ronde A B C D E F G
1 1-2 3-4 5-6 7-8
2 6-7 2-8 3-5 1-4
3 8-3 2-4 5-7 1-6
4 4-5 2-6 1-8 7-3
5 1-7 6-3 4-8 5-2
6 8-5 1-3 6-4 7-2
7 4-7 1-5 3-2 8-6
Tja, ronde 8 en onderdeel H wordt dan wat lastiger. Als we 1-2,
6-3, 4-7 en 8-5 naar onderdeel H verplaatsen, kunnen die hun
oorspronkelijke onderdeel in ronde 8 doen.
onderdeel
ronde A B C D E F G H
1 xxx 3-4 5-6 7-8 1-2
2 6-7 2-8 3-5 1-4
3 8-3 2-4 5-7 1-6
4 4-5 2-6 1-8 7-3
5 1-7 xxx 4-8 5-2 6-3
6 xxx 1-3 6-4 7-2 8-5
7 xxx 1-5 3-2 8-6 4-7
8 1-2 8-5 4-7 6-3
Even de ronde hernummeren zodat de ronde met de kruisjes de eerste vier
ronden zijn, opdat er wat ruimte zit tussen het twee keer tegen dezelfde
spelen. Dat is wel zo leuk.
onderdeel
ronde A B C D E F G H
1 xxx 3-4 5-6 7-8 1-2
2 xxx 1-3 6-4 7-2 8-5
3 xxx 1-5 3-2 8-6 4-7
4 1-7 xxx 4-8 5-2 6-3
5 6-7 2-8 3-5 1-4
6 8-3 2-4 5-7 1-6
7 4-5 2-6 1-8 7-3
8 1-2 8-5 4-7 6-3
Als je met twee keer dit schema en de ronde volgorde gaat spelen, lukt
het misschien ook wel om voor een paar onderdelen slechts een veldje te
hoeven hebben. Zo zou je de ronde 5-8 van de bovenbouw in de eerste vier ronde
kunnen doen, dan heb je voor A en H slechts een veld nodig. Als je binnen
de ronden 1-4 van de onderbouw en 5-8 van de bovenbouw nog wat wisselt,
lukt het ook nog wel om nog een of twee onderdelen tot een veld te beperken.
ONDERBOUW onderdeel
ronde A B C D E F G H
1 1-5 3-2 8-6 4-7
2 3-4 5-6 7-8 1-2
3 1-7 4-8 5-2 6-3
4 1-3 6-4 7-2 8-5
5 6-7 2-8 3-5 1-4
6 8-3 2-4 5-7 1-6
7 4-5 2-6 1-8 7-3
8 1-2 8-5 4-7 6-3
BOVENBOUW onderdeel
ronde A B C D E F G H
1 1-2 8-5 4-7 6-3
2 6-7 2-8 3-5 1-4
3 8-3 2-4 5-7 1-6
4 4-5 2-6 1-8 7-3
5 3-4 5-6 7-8 1-2
6 1-7 4-8 5-2 6-3
7 1-3 6-4 7-2 8-5
8 1-5 3-2 8-6 4-7
A, B, G en H hebben nu maar een enkel veld nodig. C, D, E en F
zijn nog wel dubbel nodig, maar daar kun je de compactere onderdelen
voor kiezen. Verder zijn E en F nooit tegelijk dubbel nodig
(idem voor C en D), dus misschien kun je daar onderdelen voor kiezen
die een even groot veld nodig hebben. Ronde 8 voor de onderbouw en
ronde 1 voor de bovenbouw zijn de "verdubbelde" rondes.
Ik ben benieuwd of computers met brute force een betere oplossing
hadden gevonden. ;-)
Veel plezier!
Sjoerd Schreuder
>> >Complexer dan je zou verwachten.... De kunst is om te zorgen dat iedereen
>> >alle tegenstanders ontmoet, alle sporten doet en dat ook nog in zo min
>> >mogelijk speelronden (8 is het theoretisch minimum maar verzin maar eens
>een
>> >speelschema die dat heeft).
>>
>> Eh, met acht ploegen en acht verschillende sporten lukt het al niet.
>>
>> Dat wil zeggen: je ontkomt er niet aan dat ploeg 1 dan twee keer
>> eenzelfde andere ploeg ontmoet bij een sport.
>>
>Je hebt gelijk maar daarmee ik nog niet ongelijk!
Nou dan maak je koppeltjes. Laten we even alleen kijken
naar de ploegen 1/8 en sporten a/h
rondes:
1 2 3 4 5 6 7 8
a 12
b 34 13
c 56 24 15
d 78 14
e 68 16
f 17
g 18
h 12 <- nog een keer?
Nu heb ik alleen ploeg 1 helemaal ingevuld, dan ontkom je er niet aan
dat ploeg 1 ploeg 2 2x tegen komt.
Maar jij zegt dat het nu heel moeilijk is om alle andere koppeltjes bij
de sporten in te delen? Kan ik me niet zo goed voorstellen omdat je
ruim genoeg in de sporten zit, je hebt steeds maar vier koppeltjes
die je bij 8 sporten kan indelen.
(en de open plekken worden opgevuld door de koppeltjes 9/16)
Groet,
--
NIWO-FAQ: http://hace.dyndns.org/niwo/
Prevent RSI: http://hace.dyndns.org/files/rsibreakreminder/index.html
Team 6 speelt nu twee keer onderdeel e.
> Nu heb ik alleen ploeg 1 helemaal ingevuld, dan ontkom je er niet aan
> dat ploeg 1 ploeg 2 2x tegen komt.
> Maar jij zegt dat het nu heel moeilijk is om alle andere koppeltjes bij
> de sporten in te delen? Kan ik me niet zo goed voorstellen omdat je
> ruim genoeg in de sporten zit, je hebt steeds maar vier koppeltjes
> die je bij 8 sporten kan indelen.
Dat is inderdaad niet zo moeilijk, maar je kunt er wel fouten bij makne.
> (en de open plekken worden opgevuld door de koppeltjes 9/16)
Dat laatste is lastig te doen als je ook nog wilt zorgen dat ze niet
te vaak tegen dezelfde komen te spelen.
De beste manier om te bewijzen dat iets makkelijk te doen is, is om het
te doen. Dat kan nooit veel tijd kosten, want het is makkelijk te doen. <g>
Sjoerd Schreuder
Hartelijk dank
Volgend jaar zal ik het mogelijk gebruiken dit jaar gaan we met mijn eigen
brouwsel aan de slag, zonder dubbele velden maar wel met drie keer tegen
hetzelfde team.
Groeten,
Martijn Boer
p.s. mocht je interesse hebben in mijn schema laat het dan weten. Het is een
word document en die kan ik niet plaatsen, of het wordt onleesbaar.
>> Nou dan maak je koppeltjes. Laten we even alleen kijken
>> naar de ploegen 1/8 en sporten a/h
>>
>> rondes:
>> 1 2 3 4 5 6 7 8
>> a 12
>> b 34 13
>> c 56 24 15
>> d 78 14
>> e 68 16
>> f 17
>> g 18
>> h 12 <- nog een keer?
>
>Team 6 speelt nu twee keer onderdeel e.
Ach, niet opgelet en daarom een fout voorbeeld gegeven: dan had ik 16 en
17 even om moeten draaien.
>> Nu heb ik alleen ploeg 1 helemaal ingevuld, dan ontkom je er niet aan
>> dat ploeg 1 ploeg 2 2x tegen komt.
>> Maar jij zegt dat het nu heel moeilijk is om alle andere koppeltjes bij
>> de sporten in te delen? Kan ik me niet zo goed voorstellen omdat je
>> ruim genoeg in de sporten zit, je hebt steeds maar vier koppeltjes
>> die je bij 8 sporten kan indelen.
>Dat is inderdaad niet zo moeilijk, maar je kunt er wel fouten bij makne.
Dat blijkt :)
>> (en de open plekken worden opgevuld door de koppeltjes 9/16)
>
>Dat laatste is lastig te doen als je ook nog wilt zorgen dat ze niet
>te vaak tegen dezelfde komen te spelen.
>De beste manier om te bewijzen dat iets makkelijk te doen is, is om het
>te doen. Dat kan nooit veel tijd kosten, want het is makkelijk te doen. <g>
Laat ik het dan zo proberen: Volgens mij is het makkelijker om het
handmatig te doen, dan er een programmaatje voor te gaan schrijven.
Maar dat mag de OP verder zelf uitmaken natuurlijk, we hebben 'm nou wel
genoeg op weg geholpen ;)
Cheers,
>met mijn brouwsel aan de slag, zonder dubbele velden maar wel met drie keer tegen
>hetzelfde team.
Dat was niet de bedoeling toch?
>p.s. mocht je interesse hebben in mijn schema laat het dan weten. Het is een
>word document en die kan ik niet plaatsen, of het wordt onleesbaar.
Alleen ge-interesseerd in de source-code, als je die hebt.... we zitten
ten slotte in nl.comp.programmeren.... :)