s12編組方式(800公尺8個跑道塞12人) by sairwolf@gmail.com 110.12.19
人數<=12 1-8依45367821編排,9-12依成績快慢編排。
人數>12且<=24
13==>6+7
14==>7+7
15==>7+8
16==>8+8
17==>8+9
18==>8+10
19==>8+11
20==>8+12
21==>9+12
22==>10+12
23==>11+12
24==>12+12
人數>24 的部分依<=12人的編排方式即可
//S形編組 800公尺塞12人
//傳入$source原始一維陣列
function oos_organize_s12($source) {
$group=(int)((count($source)+11)/12);
//排好後code_update()再調組
//print_r($source);
if(count($source)>24) {
for($j=($group-1);$j>=2;$j--) {
$point=count($source)-12;
//$b_half
//echo "$j<br>";
$ss[$j] = array_splice($source,$point);
//print_r($ss[$j]);
}
}
//print_r($source);
$cs=count($source);
for($i=0;$i<count($source);$i++) {
if($cs>=13 and $cs<=16) { //用S形編組
if(($i/$group)%2==0) {
$ss[$i%$group][(int)($i/$group)]=$source[$i];
//echo $i."==>[".($i%$group)."][".(int)($i/$group)."]".$ss[$i%$group][(int)($i/$group)]."<br>";
}
else {
$ss[($group-1)-($i%$group)][(int)($i/$group)]=$source[$i];
//echo $i."==>[".(($group-1)-($i%$group))."][".(int)($i/$group)."]".$ss[($group-1)-($i%$group)][(int)($i/$group)]."<br>";
}
}else if($cs>=17 and $cs<=24) {
if($i<8) //第0組先塞滿8人
$ss[0][$i]=$source[$i];
else if($i>=20) //20以後塞第0組
$ss[0][$i-12]=$source[$i];
else //其它的塞第1組
$ss[1][$i-8]=$source[$i];
}else { //用S12編組
$ss[(int)($i/12)][$i%12]=$source[$i];
//echo $i."==>[". (int)($i/12) ."][". $i%12 ."]".$ss[(int)($i/12)][$i%12]."<br>";
}
}
//print_r($ss);
//971001修正為45367821
//跑道12345678==>01234567
//名次56123478==>45012367
//名次75312468==>64201357
for($i=0;$i<$group;$i++) {
$ss_d[$i][0]=$ss[$i][7];
$ss_d[$i][1]=$ss[$i][6];
$ss_d[$i][2]=$ss[$i][2];
$ss_d[$i][3]=$ss[$i][0];
$ss_d[$i][4]=$ss[$i][1];
$ss_d[$i][5]=$ss[$i][3];
$ss_d[$i][6]=$ss[$i][4];
$ss_d[$i][7]=$ss[$i][5];
$ss_d[$i][8]=$ss[$i][8];
$ss_d[$i][9]=$ss[$i][9];
$ss_d[$i][10]=$ss[$i][10];
$ss_d[$i][11]=$ss[$i][11];
}
return $ss_d;
} //function oos_organize_s12