![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam problem z pewnym generatorem, pewnie sobie poradzę prędzej czy później, ale zapytam czy ktoś podobnego problemu nie miał już kiedyś? Chodzi o generowanie terminarzu spotkań do gry, czyli 1 vs 1 i każdy z każdy gdy było by 16 drużyn albo 20 Jakim łatwym sposobem można to w PHP wyświetlić żeby np wyświetlało się 16 kolejek //Edit by _)Martin(_ Witam. Znalazłem takie coś. Cytat Tylko jak taki generator mógł wyglądac do strony php Bo na tym mi zależy (IMG:style_emoticons/default/smile.gif) PozdraWiam Pa Ten post edytował _Martin_ 2.03.2010, 08:13:37 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
W miarę prosta matematyka i pętelki (zapewne for)!
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Chyba to za pomocą komendy round(); nie zrobię tyle wiem, i twój post nie wnosi nic po za nabijaniem postów powol tworze taki skrypt jak by ktoś miał jakieś rady na poczekaniu to proszę, Panu podziękujemy za udzielanie się już.. (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 6 Dołączył: 9.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie mogę zrozumieć idei tego losowania jak byś wytłumaczył na jakich zasadach są rozgrywane takie mecze to bym może coś pomógł (niestety nie interesowałem się nigdy piłką). Z tej stronki co podałeś to wpisałem 5 drużyn i wyświetliło 10 wyników i przykładowo drużyna 1 ma grać jeden raz z drużyną 2 a po dwa razy z pozostałymi (jak dla mnie to trochę dziwne). Czy to ma być każdy z każdym?
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To jest matematyka, ale lepiej sobie zerknij jak przebiega "zmienność" pól mając wybranych 8 lub 10 drużyn, a potem z 7 lub 9 (IMG:style_emoticons/default/smile.gif) Zauważysz pewien algorytm tworzenia zestawień. Zmieniają się one w określony sposób. Gdy już złapiesz jak się to zmienia sprawdź dla większych wartości liczby drużyn. Poza tym zwróć uwagę na fakt, że tak naprawdę potrzebujesz tylko połowę spotkań. Reszta to odbicie lustrzane, gdzie gość zamienia się z gospodarzem. Dla n drużyn więc potrzebujesz tak naprawdę (n-1) spotkań dla parzystej liczby drużyn i (n) dla nieparzystej bo wynika to z pauzowania za każdym razem jednej drużyny w kolejce. Zwróć szczególną uwagę na to jak zmieniają się drużyny co 2 kolejki to zauważysz pewne inkrementacje. Jeśli nie wiesz o co mi chodzi to zamiast nazw wprowadź liczby począwszy od 1 wzwyż po kolei i popatrz jak zmieniają się liczby w kolejkach 1,3,5,7 oraz 2,4,6,8 to załapiesz o co mi chodzi (IMG:style_emoticons/default/winksmiley.jpg) Tak naprawdę tworzenie tego terminarza to... obliczenie pewnej określonej JEDNEJ liczby i potem skakanie z nią po wszystkich indeksach tablicy oprócz ostatniego w przypadku parzystej liczby drużyn dla parzystej liczby drużyn. U nieparzystej z pozoru wygląda inaczej, ale to nieco mylne wrażenie z racji tej błądzącej drużyny pauzującej (IMG:style_emoticons/default/winksmiley.jpg)
EDIT: I źle widzisz. Drużyna 1 gra po 2 razy z każdą drużyną. Raz jako gospodarz i raz jako gość. Bo tak to jest w rzeczywistości. Każdy z każdym po dwa razy. Mając więc X drużyn każda zagra (X-1) * 2 meczy bo nie może grać sama z sobą. Dla nieparzystych jest tej "problem", że jedna pauzuje, więc ona musi mieć dodatkowy mecz, tak jakby drużyn było nie X, ale X+1 (IMG:style_emoticons/default/smile.gif) Naprawdę popatrz _Martin_ na to JAK się zmieniają dane w ich algorytmie, a załapiesz jak można generować te spotkania. To w dużej mierze lecenie po tablicy o ceil(n/2) pozycji (IMG:style_emoticons/default/winksmiley.jpg) Sam sobie to sprawdź na spokojnie. Ten post edytował thek 2.03.2010, 09:57:34 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje, chodzi mi o wygenerowanie numerów na xx kolejek gdzie gra kazdy z kazdym
np jak dzis gra 1 z 2 to innym razem musi 2 z 1 i tak aby kazdy w sezonie z kazdym zagral raz u siebie i raz na wyj! Pomysle jeszcze i cos wygeneruje ;D Thx za porade thek d3f3nd3r - Pomyśl jeśli potrafisz hihi |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Więc byś nie musiał za dużo myśleć zrób tak. Weź parzystą liczbę drużyn i zacznij od góry 2 kolumny w dół od najwyższej liczby i idź do 1 kolumny lecąc jak literka U. Teraz policz ceil(n/2) i do wszystkich pól oprócz pierwszego w 2 kolumnie zacznij dodawać ją i jeśli >= (n-1) to odejmij (n-1) wszędzie oprócz ostatniego elementu tablicy. On się nie zmienia nigdy. Dla nieparzystych jest mała zmiana. Też masz ceil(n/2) dodawane, ale odejmujesz n, gdy liczba >= n i masz zmieniać także pierwszy element 2 kolumny (IMG:style_emoticons/default/smile.gif) Kluczowe jest więc określenie czy masz do czynienia z parzystą, czy z nieparzystą liczbą drużyn oraz utworzyć pierwszą kolejkę. Reszta kolejek bazuje już na tej pierwszej. Od tego momentu wszystkie działania to w pętli obliczanie indeksu drużyn. To naprawdę już pikuś. Najtrudniejsze w całym zadaniu było "rozgryzienie" algorytmu dopasowania. Nie będę pisał Ci kodu bo mając podane przeze mnie informacje, napisanie generowania połowy kolejki to pryszcz. A potem zrobienie lustrzanej kopii to już śmiech na sali.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.09.2025 - 01:26 |