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