Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- dicoba beberapa kali (refresh).. berhasil menyebar sampe masing2 10
- tetapi malah coba/refresh.. dapet 14?!?
- */
- $maxLoop=5;
- $mhsOk=0;
- $grup1=0;
- $loop=9;
- if (($handle = fopen("mahasiswa.csv", "r")) !== FALSE) {
- $mhs=array();$row=0;
- while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
- //$num = count($data);
- //echo "<p> $num fields in line $row: <br /></p>\n";
- $row++;
- if($row==1)continue;
- /*
- for ($c=0; $c < $num; $c++) {
- echo $data[$c] . "<br />\n";
- }
- */
- $a=array('nama'=>$data[0],'id'=>sprintf("15%02s%05s",$data[2],$row),'gender'=>$data[1], 'falCode'=>$data[2], 'stat'=>0);
- $mhs[]=$a;
- }
- fclose($handle);
- }
- $total=count($mhs);
- $nGroup=ceil($total / 10);
- shuffle($mhs);
- $rule0=array('male'=>6,'female'=>4,'falCode'=>array());
- $rule=$rule0;$grup1++;
- //echo "<hr>Grup $grup1";
- while($mhsOk<$total){
- $loop--;
- if($loop<1) break;
- foreach($mhs as $id=>$dt){
- //check rule
- $ok=1;
- //====sudah masuk?
- $stat=$dt['stat'];
- if($stat==1)continue;
- //===gender
- $gender=strtoupper($dt['gender']);
- if($gender=='P'&&$rule['female']<1){$ok=0;}
- if($gender=='L'&&$rule['male']<1){$ok=0;}
- if($ok==0)continue;
- //===jurusan
- $jurusan=$dt['falCode'];
- if(isset($rule['falCode'][$jurusan])&&$rule['falCode'][$jurusan]>1)$ok=0;
- if($ok==0)continue;
- $mhs[$id]['stat']=1;
- $groupMhs[$grup1][]=$mhs[$id];
- //echo'<hr>';var_dump($mhs[$id]);
- if($gender=='P' ){$rule['female']--;}
- if($gender=='L' ){$rule['male']--;}
- $mhsOk++;
- if(!isset($rule['falCode'][$jurusan])){
- $rule['falCode'][$jurusan]=1;
- }else{
- $rule['falCode'][$jurusan]++;
- }
- if(count($groupMhs[$grup1])==10){
- $grup1++;
- $rule=$rule0;
- //echo "<hr>Grup $grup1";
- $loop=$maxLoop;
- }
- }
- if($loop==1){
- $grup1++;
- $rule=$rule0;
- //echo "<hr>Grup $grup1";
- $loop=$maxLoop;
- }
- //if($loop!=4){ echo "<br/>loop=$loop ".json_encode($rule);}
- }
- echo "<br>Mahasiswa Yang Dapat kelompok:$mhsOk dari $total";
- if($mhsOk!=$total){
- $mhsFail=array();
- foreach($mhs as $id=>$dt){
- if($dt['stat']==0)$mhsFail[]="$id=> ".json_encode($dt);
- }
- echo "<ol><li>".implode("</li><li>",$mhsFail)."</li></ol>";
- }
- foreach($groupMhs as $id=>$team){
- $s="<br/>Group $id<ol>";
- foreach($team as $dt){
- $s.="<li>$dt[nama] ($dt[gender]) =>$dt[falCode]</li>\n";
- }
- $s.="</ol>";
- echo $s;
- }
- /*
- echo json_encode(array('data'=>$groupMhs,'created'=>'Gunawan');
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement