[sport]s12編組方式(800公尺8個跑道塞12人)

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

 

本篇發表於 程式設計。將永久鏈結加入書籤。