![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Hej, tworzę stronę gdzie każdy ma daną ilość punktów, wygranych, przegranych i wyjść z gry.
Stworzyłem jak na razie takie założenia, wygrany ma +5, przegrany -3, osoba która wyszła z gry podczas jej trwania -10, w grze zawsze występuje 5 osób, istnieją dwie drużyny każda po 5. Gracze wchodzą do gry i po uzbieraniu 10 gra automatycznie jest stratowana, a oni przydzielanie dowiedzionych drużyn tak by gra była jak najbardziej zrównoważona. Nie koniecznie wiem jaki algorytm można by zastosować by teamy były jak najbardziej zrównoważone, można by przydzielać graczy w systemie 1-2-2-2-2-2-1, od największej ilości punktów do najmniejszej, lecz jeśli pierwszy gracz posiada 2000pkt, a reszta ~1200pkt to teamy nadal nie będą w najlepszej kondycji. Przydzielanie najlepszego do pierwszego teamu, a następnie reszty od najlepszego do najgorszego do drugiego aż do wyrównania różnicy też może nie zawsze dać dobry rezultat. Trzeba pamiętać, że nawet najlepszy gracz z gromadą osób nie umiejących grać nie da sobie rady z samymi średnio zaawansowanymi. Gracze z małą ilością wygranych (procentowo) lub z małą ilością punktów powinni mieć jakieś inne/specjalne uprawniania do rozkładania ich po równo w drużynach. Co o tym myślicie? Moim zdaniem najlepszym pomysłem na daną chwilę jest dodanie najlepszego do #1, reszty do #2 do czasu gdy ich pkt nie będzie większe nić #1, a jeśli go przewyższy znów do #2 na identycznych zasadach, gracze rozdawani od największej ilości punktów, jeśli w końcowym rozrachunku drożyny będą różniły się większą ilością pkt. niż 10% (liczba strzelona nieco w ciemno) gra może zostać automatycznie zamknięta, a gracze proszeni o wejście do nowej. Moim pytaniem związanym z php, a w zasadzie z samym algorytmem było by jak coś takiego najlepiej zapisać pamiętając o ograniczeniach z strony php, kod będzie w przeszłości odpalany co kilkanaście sekund więc jego optymalność, a w zasadzie optymalność algorytmu musi być dosyć spora, macie jakiś pomysł na spisanie go lub opracowanie innego? Mam nadzieje, że nie namieszałem za mocno. (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Everth... Algorytm w postaci jaką podałem i jaką policzył autor tematu w pierwszym przejściu, bez jakichkolwiek wymian, pokazał, że różnica punktów w porównaniu do ilości punktów słabszej drużyny to 6%. Gdyby patrzeć na różnicę w porównaniu do całości to spada ona do 3% (IMG:style_emoticons/default/winksmiley.jpg) Jak więc widać, limit 10% bez optymalizacji został osiągnięty. Prościutka matma bez rekurencji czy ogromu iteracji. Sumowanie i parę IFów. Jeśli autor dorzuci wymiany zasugerowane przeze mnie i sprawdzi różnice tych wymian oraz zostawi te kombinację z najmniejszą to będzie zadanie niewiele bardziej obciążające. W zasadzie nastapi tylko wymiana na kilku polach i sumowanie, bo ponowny przydział graczy do drużyn nie jest konieczny. Całość się ograniczy do:
1) Weź policzony układ bazowy 2) Zapisz różnicę drużyn 3) Wymień graczy według kombinacji 4) Wróć do 2 robiąc wszystkie kombinacje wymian 5) Wybierz najmniejszą różnicę. To Twoja kombinacja graczy najlepsza. 6) Koniec |
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 07:12 |