SyBox
Run
Save
=$p) { $listeSup = array("0","1","2","3","4","5","6","7","8","9"); $j1 = str_replace($listeSup,"",$liste[0]);//recupere le sexe du j1 $j2 = str_replace($listeSup,"",$liste[1]);//recupere le sexe du j2 //pour generer les triplettes if($p==3) { $j3 = str_replace($listeSup,"",$liste[2]);//recupere le sexe du j3 //on s'assure qu'il n'y a pas 2 femmes dans la meme equipe if(($j1!="f"&&$j2!="f")||($j1!="f"&&$j3!="f")||($j2!="f"&&$j3!="f")) { array_push($combiPossibleT,$liste); } } //pour generer les doublettes else { //on s'assure qu'il n'y a pas 2 femmes dans la meme equipe if($j1!="f"||$j2!="f") { array_push($combiPossibleD,$liste); //echo implode(" - ", $liste)."\n"; } } // la liste est construite -> FIN return; } // ajoute un nouvel element candidat dans la liste // - sans ordre -> candidat: tous les elements // - avec ordre -> candidat: seulement les elements supérieurs au précédent $start=0; if (true && $index>0) { $start = array_search($liste[$index-1], $liste2) + 1; } for($i=$start;$i<$n;$i++) { $liste[$index] = $liste2[$i]; creationCombinaisonPossibleEquipe($index+1, $p, $n, $liste); } } function lanceur() { global $participant,$combiPossibleT,$combiPossibleD,$nb_participant,$nb_doublette,$nb_triplette, $nb_partie; determination(); creationCombinaisonPossibleEquipe(0, 2, count($participant), $liste = array()); creationCombinaisonPossibleEquipe(0, 3, count($participant), $liste = array()); $bon_tirage = false; $nbmax_mauvais = 0; while($bon_tirage === false || $nbmax_mauvais < 10) { $tirage = genererUnTirage(); $bon_tirage = is_a_good_tirage($tirage); $nbmax_mauvais++; } save_tirage($tirage); print_r($tirage); affichage(); } function affichage() { global $numero,$combiPossibleT,$combiPossibleD,$nb_participant,$nb_doublette,$nb_triplette, $nb_partie,$joueurPris; echo "Nombre de participant :".$nb_participant."\n"; echo "nombre de combinaison de triplette possible (en ayant retiré les équipes avec 2 femmes dedans) :".count($combiPossibleT)."\n"; echo "nombre de combinaison de doublette possible (en ayant retiré les équipes avec 2 femmes dedans) :".count($combiPossibleD)."\n"; echo "composition d'équipe (en favorisant les doublettes) :\n"; echo "nombre d'équipe double :".$nb_doublette."\n"; echo "nombre d'équipe triple :".$nb_triplette."\n"; echo "nombre de partie à jouer à chaque tirage : ".$nb_partie."\n"; } function genererUnTirage() { global $numero,$combiPossibleT,$combiPossibleD,$nb_participant,$nb_doublette,$nb_triplette, $nb_partie,$joueurPris,$participant; $part = $participant; shuffle($part); $tirage = []; for($i = 0;$i<$nb_doublette; $i++) { $tirage[] = [$part[$i*2],$part[$i*2+1]]; } for($i = 0;$i<$nb_triplette; $i++) { $tirage[] = [$part[$nb_doublette*2+$i*3],$part[$nb_doublette*2+$i*3+1],$part[$nb_doublette*2+$i*3+2]]; } return $tirage; } function is_a_good_tirage($tirage) { global $oldtirages; foreach($tirage as $t) { for($i = 0; $i< count($t);$i++) { for($j = $i+1; $j< count($t);$j++) { //-- vérif si 2 femmes if(substr($t[$i],-1) == 'f' and substr($t[$j],-1) == 'f') { return false; } //-- vérif si déjà joué ensemble if(isset($oldtirages[$t[$i]][$t[$j]])) { return false; } //-- vérif l'age du curé if(false) { return false; } } } } return true; } function save_tirage($tirage) { global $oldtirages; foreach($tirage as $t) { for($i = 0; $i< count($t);$i++) { for($j = $i+1; $j< count($t);$j++) { $oldtirage[$t[$i]] = $t[$j]; $oldtirage[$t[$j]] = $t[$i]; } } } } lanceur();
Code
Result
generateur de partie
{TITLE}
{MESSAGE}
{MESSAGE}