Gra planszowa, dobieranie par, szwajcar

0

Cześć,
Może Wy coś podpowiecie. Mam takie dość nietrywialne i nieszablonowe zadanie. Muszę wykombinować algorytm, coś 'ala system szwajcarski, do przydzielania graczy w pary które następnie będą grać przeciw sobie. Może wytłumaczę o co chodzi. W grze biorą udział 4 osoby z czego nie grają one przeciw sobie, lecz w parach, czyli pierwsza para 2 osób gra przeciw drugiej parze dwóch osób. Punkty za grę zdobywają jako drużyna, nie indywidualnie. Czyli powiedzmy jedna para ma punktów 10, druga punktów 15. Ok, po skończonej grze, muszę pary przyporządkować od nowa. Czyli znowu muszę dobrać ludzi w pary a następnie z 2 par stworzyć drużynę (dwie pary grające przeciw sobie). Oczywiście nigdy dwie te same osoby nie mogą spotkać się w tej samej parze oraz dwie te same pary nie mogą grać przeciw sobie więcej niż jeden raz. Dodatkowo, po rozegraniu kilku rund, muszę mieć możliwość wyłonienia zwycięzców. Bez wątpienia musi tu być zastosowany system Buchholza. Hmm, ja kombinuję, rozrysowuję to sobie i na razie ciężko my wykombinować coś co miały by sens się sprawdzić. Może ktoś z Was podrzuci jakiś ciekawy pomysł rozwiązania problemu bo jak sami widzicie, nie jest on prosty :).

0

Ilość par zakładając, że jest podzielne przez 2, n=x/2, x - osoby
Każda para z każdą walczy czyli n*(n-1) = ilość meczy.
Potem wszystkie możliwe kombinacje par, kombinacje j = 2 osób z x.
I teraz podziel to na części o wielkości, (x-1)
Teraz każda grupa ma kombinacje danej osoby, jako pierwszej.
Teraz iterujesz elementy jednej grupy i zwracasz jako ciąg par bez powtórzeń, czyli jak wziąłeś kogoś z pierwszej grupy, to teraz szukasz w innej, ale uwzględniasz przy tym osobę dołączoną do pierwszej i omijasz jego grupę także, i tak do otrzymania n par, potem powtarzasz czynność dla następnego elementu grupy pierwszej.
Otrzymując następne możliwe kombinacje par do rozgrywki.

#edit
No i na końcu wszystkie możliwe kombinacje bez powtórzeń 2 z par.

0

Dzięki serdeczne za odpowiedź. Zapomniałem napisać jeszcze o jeden ważnej rzeczy (albo może nie jest to zrozumiałe). Problemem nie jest sam podział. Bo jeżeli chodzi o podzielenie graczy to nie stanowi to problemu. Problemem jest podział w taki sposób aby np nie było sytuacji że 2 najlepszych graczy będzie ze sobą w parze i będzie grało przeciw parze dwóch najgorszych graczy. I tu jest klu problemu. Bo podzielenie ich na pary a później pary na drużyny to jest banał. Złożoność tego problemu zaczyna się właśnie w tym miejscu. Podział musi być taki aby pary grające ze sobą, reprezentowały mniej więcej wyrównany poziom gry. Pierwszego podziału i ustawienia wiadomo dokonuje człowiek znając umiejętności każdego z gracza. Natomiast później, podziału trzeba dokonać już algorytmem łącząc ludzi tak w pary ale jedna dwója grające przeciw drugiej dwójce miała mniej więcej równe szanse. Dodatkowo na koniec musi być możliwość wyłonienia zwycięzcy jako pojedynczego gracza bo wiadomo że pary łączone są tak że jest jeden zawodnik lepszy, drugi gorszy ponieważ nie może być tak że spotyka się a jednej parze, dwóch super zawodników bo druga para która na nich trafi, jest z góry skazana na porażkę.

0

Ilu ludzi ma grać w te grę, 10, 1000, 10 000 ,100 000+. Czy to mają być zawody typu puchar polski, olimpiada gdzie jest ograniczona ilość prób, czy coś a'la kurnik, gry multiplayer w które można grać bez końca? Przy okazji jaką ilość gier na gracza przewidujesz, i ile trwa gra?

1 użytkowników online, w tym zalogowanych: 0, gości: 1