Ben x kek kimlikleri ve y insanların kimlikleri ile başka bir ilişkisel dizi ile bir dizi var. Her kek tam 2 kişi tarafından ve her kişi genel pasta adil bir pay alır zevk emin olmak istiyorum. Ancak, kekler (kişi başına ortalama pasta bir kısmını ise, yani bu fraksiyon bazıları için yuvarlanır, ve aşağı diğerleri için) tüm tutulmalıdır. Hiç kimse iki defa aynı kek atanabilir. Örneğin:
$cake = array(''1','2')
$people = array('1','2','3')
Bunu yapmak için, ben her satır bir pasta-kişi atama temsil eden yeni bir dizi oluşturmak istiyoruz. Her kek iki kişiye tahsis edilirken, bu tablodaki satır sayısını kek tam iki sayı olmalıdır. Orada bu sorunun tam 1 çözüm olmayacak ama yukarıdaki örnekte bir çözüm olacaktır:
$cake_person = array(
'1'=>array('1', '1'),
'2'=>array('1', '2'),
'3'=>array('2', '2'),
'4'=>array('2', '3'),
)
Insanlar 1 ve 3 dışarı kaybediyor ama etrafında gitmek için daha fazla pasta olduğundan olduğunu fark! Her kek tam iki kez verilmelidir.
Nasıl insanlar ve kek büyük sayılar için güvenilir böyle bir çözüm üretebilir?
Artefacto en yararlı tepkisini hayata sahip, ben herkesten çok faydalı bulduğu sadece durumda aşağıda benim kod göndermeye karar verdim.
Data
//Create people array with 25 people
$people = range(1,25);
//Create cake array with 77 cakes
$cake = range(1,77);
Code
$people_cakes = array();
$totalPeople = count($people);
$idp = 0;
foreach($cakes as $cake) {
$id1 = $idp % $totalPeople;
$id2 = ($idp + 1) % $totalPeople;
$people_cakes[] = array($people[$id + 1], $cake);
$people_cakes[] = array($people[$id + 2], $cake);
$idp = $idp + 2;
}