Une méthode de recrutement géniale !
Le site kSkills propose, aux chercheurs d’emploi dans les domaines IT, de soumissionner par le biais d’un défi code. Le principe : au lieu d’envoyer un CV, vous créez une fonction demandée dans un langage donné.
Avec ChooseYourBoss, le concours est de trouver le nombre de plages qui ne se chevauchent pas parmi une liste donnée. Voici mon code (ne le copiez pas, je saurai que c’est vous…) :
<?php function main() { $stdin = fopen('php://stdin', 'r'); $stdout = fopen('php://stdout', 'w'); //Write your code here ... // Get events number $nb_events=trim(fgets($stdin)); $total=0; if(is_numeric($nb_events)) { $tEvents=array(); for($i=0;$i<$nb_events;$i++) { // Read events $event= trim(fgets($stdin)); $tEvent=explode(';',$event); $temp=array(); //Check limit dates $temp['length']=$tEvent[1]; $temp['start']=$tEvent[0]; $temp['end']=date('Y-m-d', strtotime($temp['start']) + (($tEvent[1]-1) * 86400)); $tEvents[$temp['start'].'_'.$i]=$temp; $temp=null; } //Sort by start date ksort($tEvents); //Check datas $t=array_keys($tEvents); $tResults=array(); for($i=0;$i<count($tEvents)-1;$i++) { $temp=$tEvents[$t[$i]]; for($j=$i+1;$j<count($tEvents);$j++) { $tempNext=$tEvents[$t[$j]]; if($temp['end']<$tempNext['start']) { $tResults[$i]=$j; break; } } } $total=0; $tMax=array(); $max=0; // Following chains... foreach($tResults as $key=>$void) { $i=$key; $tMax[$key]=1; while(1) { if(isset($tResults[$i])) { $tMax[$key]++; // Biggest chain? if($max<$tMax[$key]) $max=$tMax[$key]; $i=$tResults[$key]; } else break; } } // Retun biggest $total=$max; } fwrite($stdout, $total); fclose($stdout); fclose($stdin); } main(); ?>