Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] jak rozdać karty do gry?
ibalyx
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 20.08.2013

Ostrzeżenie: (0%)
-----


hejo (IMG:style_emoticons/default/smile.gif) proszę o pomoc.

mam 4 stosy kart (A,B,C,D). w każdym stosie mam 4 karty (1,2,3,4). karty mają jakąś wartość liczbową (od 5 do 20). mam też 4 graczy.
chcę rozdać te karty graczom z pewnymi wymaganiami:
- każdy gracz może mieć tylko jedną kartę z każdego stosu
- suma wartości kart każdego gracza ma być możliwie wyrównana

dlatego potrzebuję skryptu który mi to obliczy, czyli przejrzy wszystkie możliwe kombinacje. nie wiem jak to zrobić. próbowałem z 4 pętlami, jedna w drugiej ale to chyba nie to. macie jakieś pomysły?

Ten post edytował ibalyx 18.12.2013, 20:06:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Gelio
post
Post #2





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 28.02.2009

Ostrzeżenie: (10%)
X----


Nie jest to rozwiązanie optymalne, ale jedno z prostszych - wystarczy te stosy posortować i po kolei dawać każdemu graczowi skrajne wartości.

Dla przykładu:
  1. $tablica = array(
  2. array(5,10,15,20),
  3. array(6,11,14,19),
  4. array(7,12,13, 18),
  5. array(8, 11, 16, 19)
  6. ); // to musi być posortowane
  7. $gracz1 = array($tablica[0][0], $tablica[1][0], $tablica[2][3], $tablica[3][3]);
  8. $gracz2 = array($tablica[0][1], $tablica[1][1], $tablica[2][2], $tablica[3][2]);
  9. $gracz3 = array($tablica[0][2], $tablica[1][2], $tablica[2][1], $tablica[3][1]);
  10. $gracz4 = array($tablica[0][3], $tablica[1][3], $tablica[2][0], $tablica[3][0]);


Rozwiązanie jest szybkie, nie wymaga żadnych pętli, jednak są i minusy - dwóch graczy będzie miało wartości zbliżone do siebie, natomiast dwóch innych graczy będzie miało wartości skrajne.

Mam nadzieję, że kod się przyda.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 06:03