未知の長さの配列があり、常に均等に割り切れる量の値があります。次に例を示します。
print_r($initialarray);
Array ( [0] => 30 [1] => 31 [2] => 32 [3] => 33 [4] => 34 [5] => 35 )
セットを作成する必要があります:
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;
値の順序はvで除算され、セットであることを示します。セット内の値の順序は重要ではありません(頭からランダムにまとめました)。ご覧のとおり、他のセットまたは同じセット内で一致する重複セットはありません。
私はうまくいくものを考え出すために多くの異なることを試みました。私が得た最も近いものは、すべての可能な有効なマッチアップを含むカスケード配列に初期値を入れることでした。
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 ) )
これらの値は、$schedと呼ばれる1つの配列内の配列です。 配列から30を残しました..おっと
数字はチームです。各チームは、各チームを1回プレイする必要があります。スケジュールは、各チームが毎週1試合のみプレイするように設定されます。チームが週に2回以上プレーすることなくすべてのゲームをプレーできるようにするには、スケジュールを数週間にわたって設定する必要があります。
私はすでに順列関数を使用しました、そしてそれは私が同じマッチアップを持たない上記の配列を思いついた方法です。上記のセットに示されているように、スケジュールを出力する方法を理解する必要があります。(同じセットで2回プレーするチームがない限り、例の順序は重要ではないことに注意してください)
$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;
}
それがうまくいかなかったので、私はこれを本来あるべきものを超えて複雑にしていて、もう問題に頭を悩ませることはできません。最初からやり直すことを意味する場合でも、どんな助けでも大歓迎です!