Düşündüğümden daha PHP ile bir oyun programı oluşturma _ Harder

3 Cevap php

Ben her zaman, örneğin, bir değerler kalansız miktarda olacak bir unknown length bir dizi var:

print_r($initialarray);

Array ( [0] => 30 [1] => 31 [2] => 32 [3] => 33 [4] => 34 [5] => 35 )

I need to create sets:

Set 1: 30 v 35; 31 v 34; 32 v 33;

Set 2: 30 v 34; 31 v 33; 32 v 35;

Set 3: 30 v 33; 31 v 32; 34 v 35;

Set 4: 30 v 32; 33 v 34; 31 v 35;

Set 5: 30 v 31; 32 v 34; 33 v 35;

Değerlerin sırası, bir dizi vardır göstermek için v bölün vardır. Kümesindeki değerlerin sıralaması (kafamdan dışarı rastgele bir araya koymak önemli değil). Gördüğünüz gibi başka herhangi bir set veya aynı set içinde eşleşen yinelenen setleri olamaz.

I have tried many different things to come up with something that works. The closest I've gotten was putting the initial values into a cascading array containing all possible valid matchups:

Array ( [0] => Array ( [0] => 35 [1] => 31 ) [1] => Array ( [0] => 34 [1] => 31 ) [2] => Array ( [0] => 33 [1] => 31 ) [3] => Array ( [0] => 32 [1] => 31 ) )

Array ( [0] => Array ( [0] => 35 [1] => 32 ) [1] => Array ( [0] => 34 [1] => 32 ) [2] => Array ( [0] => 33 [1] => 32 ) )

Array ( [0] => Array ( [0] => 35 [1] => 33 ) [1] => Array ( [0] => 34 [1] => 33 ) )

Array ( [0] => Array ( [0] => 35 [1] => 34 ) )

These values are arrays within one array called $sched. I left 30 out of the array.. oops

The numbers are teams. Each team needs to play each team once. The schedule will be set so that each team only plays one game each week. The schedule needs to be set over several weeks to allow all the games to be played without a team playing more than once in a week.

Ben zaten bir permütasyon fonksiyonu kullanmış ve ben aynı maç ups yok olan yukarıdaki dizi ile geldi nasıl olduğunu. Ben yukarıda Setleri gösterildiği gibi şimdi nasıl çıktı zamanlamayı anlamaya ihtiyacımız var. (Hiçbir takım aynı sette iki kez oynar gibi örnek olduğu için sürece önemli değil akılda tutarak)

$count = count($initialarray);
$recount = $count -1;
for($u=0; $u < $count;$u++){
    for($d=0;$d<$recount;$d++){
         $vs[$u][$d] = $sched[$d][$u];
    }
$recount -= 1;
}

Yani ben ne olmalıdır ötesinde bu komplike ve ben artık soruna kafamı veremiyorum, işe yaramadı. Tüm herhangi bir yardım, hatta baştan başlamak anlamına gelir, büyük takdir edilecektir!

3 Cevap

Ben düz bir cevabım yok, ama grafik teorisi biraz gerekebilir gibi görünüyor. http://en.wikipedia.org/wiki/Tournament_%28graph_theory%29

Sen bu yüzden gibi sth içinde her bir "oyun" ile bir dizi inşa edebileceğini

0 => 30 v 35
1 => 31 v 34
2 => 32 v 33

Bu oldukça kolay olmalıdır. Sonra sadece bu dizide geçmesi ve takımların hiçbiri zaten oynuyor ilk satırdaki oyun koymak. Orada daha iyi ve daha hızlı çözüm olabilir ama bu benim aklıma geldi ve ben yazmak için onun oldukça basit düşünüyorum ilk olabilir.

this soru istediğiniz cevabı var mı?