Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Generowanei terminarz - PĘTLE
Forum PHP.pl > Forum > Przedszkole
_Martin_
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 smile.gif
PozdraWiam
Pa
mortus
W miarę prosta matematyka i pętelki (zapewne for)!
_Martin_
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ż.. smile.gif
d3f3nd3r
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?
thek
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 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 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 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 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 winksmiley.jpg Sam sobie to sprawdź na spokojnie.
_Martin_
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
thek
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 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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.