Hjälp med att ta fram en algoritm till en turneringstabell utifrån villkor

Trädvy Permalänk
Medlem
Plats
Sweden
Registrerad
Sep 2003

Hjälp med att ta fram en algoritm till en turneringstabell utifrån villkor

Hej!

Håller på att skapa upp en tabell för ett spel.
Spelet spelas alltid 2v2 och kan ha olika antal deltagare varje gång. Ofta är vi fler än 4st.

Så som tabellen skapas upp idag så uppfylls villkoret att alla ska spela med alla.
Några bekymmer som vi försöker komma runt är:

#1 Vid spel >4st så får alltid någon vila mellan matcherna. Däremot blir det ojämnt. vissa få vila varannan. Vissa får vila 3 i rad. osv

#2 Medan alla får spela med alla, så blir det ändå en ojämn fördelning kring vilka man spelar mot.
Det blir helt enkelt för många matcher om alla ska spela med alla mot alla. Men som det är nu så kan det bli lite väl märkligt att man spelar med en vissa personer 1 gång, och andra 4-5ggr.

Jag har initialt försökt lösa #1 genom att rita matriser och få summorna att stämma överens. Sedan är det en vän som faktiskt kan programmera som får problemet om att faktiskt programmera det

Ett urdrag från en slumpad tabell. 0 är vila. 1 är att man spelar. Totalt rör det sig om 14st matcher.
Problem med denna tabellen är att Player1 får spela 4 matcher i rad.
Olika spelare har också en vila >1 matcher i rad. Så vederbörande får sitta och kolla på/vänta lite väl länge

1 2 3 4 5 6 7 8 9 10 11 12 13 14 Player1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 8 Player2 0 1 0 1 1 0 1 1 0 1 0 1 0 1 8 Player3 0 1 1 0 0 1 1 0 1 0 1 1 0 1 8 Player4 1 0 1 0 1 1 0 0 1 0 1 0 1 1 8 Player5 1 0 1 0 1 0 1 1 0 1 0 1 1 0 8 Player6 1 0 1 1 1 0 0 0 1 1 0 0 1 1 8 Player7 1 1 0 1 0 1 0 1 0 1 1 1 0 0 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Genom att skapa en matris själv kommer jag åtminstone lite närmre ett av villkoren, att inte vila mer än 1 match i rad:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 Player1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 8 Player2 0 1 0 1 0 1 0 1 1 0 1 1 0 1 8 Player3 0 1 0 1 0 1 1 1 0 1 0 1 0 1 8 Player4 1 0 1 0 1 1 0 1 0 1 0 1 0 1 8 Player5 1 0 1 1 1 0 1 0 1 0 1 0 1 0 8 Player6 1 1 1 0 1 0 1 0 1 0 1 0 1 0 8 Player7 1 0 1 0 1 0 1 0 1 1 1 0 1 0 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Däremot så löser det inte problem #2.

Några förslag på hur vi lämpligast bygger upp tabellen för att få en så jämn fördelning som möjligt?

Shit happens