Vraag & Antwoord

Programmeren

bridge

3 antwoorden
  • een aantal paren, a,b,...n bridged op een avond een aantal ronden 1,2,...n. Elk paar mag maar maar eenmaal tegen een ander paar per avond spelen. Als paar a met paar b heeft gespeeld mogen zij die avond in geen enkle andere ronde tegen elkaar spelen. Hoe is dit te organiseren/programmeren? :D
  • Het aantal mogelijke samenstellingen is (n-1)!. Die boom kun je aflopen en in een array vastleggen. Daarna kun je per ronde de gebruikte mogelijkheden afstrepen.
  • Stel: [i:666818c07c]n[/i:666818c07c] is oneven. Dan voeg ik een ploeg "vrij" toe. [i:666818c07c]n[/i:666818c07c] is nu even. Als een ploeg tegen ploeg "vrij" speelt is die ploeg die ronde vrij. Als [i:666818c07c]n[/i:666818c07c] oneven is elke ronde precies één ploeg vrij. Ik mag nu dus aannemen dat [i:666818c07c]n[/i:666818c07c] even is. Ik maak een functie [i:666818c07c]f[/i:666818c07c] van {1,2,...,[i:666818c07c]n[/i:666818c07c]} naar {1,2,...,[i:666818c07c]n[/i:666818c07c]} als volgt:[list:666818c07c][*:666818c07c][i:666818c07c]f[/i:666818c07c]([i:666818c07c]m[/i:666818c07c]) := [i:666818c07c]m[/i:666818c07c]+1als [i:666818c07c]m[/i:666818c07c] < [i:666818c07c]n[/i:666818c07c]-1 [*:666818c07c][i:666818c07c]f[/i:666818c07c]([i:666818c07c]m[/i:666818c07c]) := 1 als [i:666818c07c]m[/i:666818c07c] = [i:666818c07c]n[/i:666818c07c]-1 [*:666818c07c][i:666818c07c]f[/i:666818c07c]([i:666818c07c]m[/i:666818c07c]) := [i:666818c07c]n[/i:666818c07c] als [i:666818c07c]m[/i:666818c07c]=[i:666818c07c]n[/i:666818c07c][/list:u:666818c07c][i:666818c07c]f[/i:666818c07c] is een soort van rotatie waarbij [i:666818c07c]n[/i:666818c07c] op zijn plaats blijft. Ik maak een functie [i:666818c07c]g[/i:666818c07c] van {1,2,...,[i:666818c07c]n[/i:666818c07c]}*{1,2,...,[i:666818c07c]n[/i:666818c07c]} naar {1,2,...,[i:666818c07c]n[/i:666818c07c]} (een functie met twee argumenten) op de volgende recursieve manier:[list:666818c07c][*:666818c07c][i:666818c07c]g[/i:666818c07c]([i:666818c07c]m[/i:666818c07c],[i:666818c07c]0[/i:666818c07c]) := [i:666818c07c]m[/i:666818c07c] [*:666818c07c][i:666818c07c]g[/i:666818c07c]([i:666818c07c]m[/i:666818c07c],[i:666818c07c]k+1[/i:666818c07c]) := [i:666818c07c]f[/i:666818c07c]([i:666818c07c]g[/i:666818c07c]([i:666818c07c]m[/i:666818c07c],[i:666818c07c]k[/i:666818c07c]))[/list:u:666818c07c] [i:666818c07c]g[/i:666818c07c] is dus [i:666818c07c]f[/i:666818c07c]([i:666818c07c]m[/i:666818c07c]) [i:666818c07c]k[/i:666818c07c] keer toegepast. Laat [i:666818c07c]r[/i:666818c07c] de nummer van de ronde zijn (1 tot en met [i:666818c07c]n[/i:666818c07c]-1) en laat de ploegen genummerd zijn (1 tot en met [i:666818c07c]n[/i:666818c07c]). Omdat [i:666818c07c]n[/i:666818c07c] even is, is [i:666818c07c]n[/i:666818c07c]/2 een geheel getal. Laat de tafels genummert zijn met [i:666818c07c]u[/i:666818c07c] (1 tot en met [i:666818c07c]n[/i:666818c07c]/2). Op tafel [i:666818c07c]u[/i:666818c07c] speelt in ronde [i:666818c07c]r[/i:666818c07c] de ploegen met nummers[list:666818c07c][*:666818c07c][i:666818c07c]g[/i:666818c07c]([i:666818c07c]u[/i:666818c07c],[i:666818c07c]r[/i:666818c07c]) [*:666818c07c][i:666818c07c]g[/i:666818c07c]([i:666818c07c]n[/i:666818c07c]+1-[i:666818c07c]u[/i:666818c07c],[i:666818c07c]r[/i:666818c07c])[/list:u:666818c07c] Dit komt neer op het volgende: De tafels staan in een rij. Iedereen gaat aan een tafel zitten. Aan het eind van de ronde gaat iedereen die NZ (Noord Zuid) speelt een tafel naar "links" en iedereen die "Oost West" speelt een tafel naar "rechts". Één ploeg blijft de hele avond zitten. Als een ploeg een bepaalde richting niet meer opkan (ze zijn op de meest linkse tafel en ze moeten naar links, of andersom) dan verandert de windrichting: NZ wordt OW en andersom (voor die ploeg alleen). Als een ploeg aan een tafel moet zitten waar de ploeg zit die blijft zitten, dan schuift die ploeg nog een plaats op. Ik weet niet zeker of de uitleg iets toevoegt, maar misschien helpt het het algoritme te begrijpen.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.