Bonjour,
Voila je rencontre un petit problème avec mon code je suis actuellement entrain de convertir un code php vers le js , ca fait un petit moment que je n'ai pas codé et j'avoue ne pas trop comprendre mes erreurs, en espérant un petit coup de main de votre part et surtout m'expliquer d'ou viens l'erreur et pourquoi , ca serait sympathique =)
le code php
<?php
//VARIABLE POUR LE TESTE CES VARIABLE VIENDRONT DE LA BASE DE DONNEE PLUS TARD !!
$participant = array("1h","2f","3f","4f","5h","6h","7h","8f","9h","10h","11h","12f","13h","14h",'15h','16f','17h','18h','19f');
//VARIABLE POUR COMPTER LE NOMBRE DE PARTICIPANT
$nb_participant=count($participant);
//$nb_participant=41;
//VARIABLE POUR STOCKER LE NOMBRE DE DOUBLETTES
$nb_doublette;
//VARIABLE POUR STOCKER LE NOMBRE DE TRIPLETTES
$nb_triplette;
//VARIABLE POUR STOCKER LE NOMBRE DE PARTIE A CREER
$nb_partie;
//combinaison possible doublette
$combiPossibleD=array();
//combinaison possible triplette
$combiPossibleT=array();
$oldtirages = array();
//FONCTION POUR DETERMINER LE NOMBRE DE DOUBLETTE ET DE TRIPLETTE
function determination()
{
global $nb_participant,$nb_doublette,$nb_triplette, $nb_partie;
$reste = fmod($nb_participant,2);
$nb_doublette=(($nb_participant-$reste)/2)-$reste;
$nb_triplette = $reste;
if(($nb_triplette+$nb_doublette)%2!=0)
{
$nb_triplette+=2;
$nb_doublette-=3;
}
$nb_partie=($nb_doublette+$nb_triplette)/2;
}
function creationCombinaisonPossibleEquipe($index, $p, $n, $liste)
{
global $participant,$combiPossibleD,$combiPossibleT;
$liste2 = $participant;
if ($index>=$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,$oldtirages;
determination();
creationCombinaisonPossibleEquipe(0, 2, count($participant), $liste = array());
creationCombinaisonPossibleEquipe(0, 3, count($participant), $liste = array());
$tirage1 = nouveauTirage();
print_r($tirage1);
$tirage2 = nouveauTirage();
print_r($tirage2);
//-- exemple mauvais tirage
print_r(nouveauTirageInccorect());
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 nouveauTirage()
{
$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);
return $tirage;
}
function nouveauTirageInccorect()
{
$bon_tirage = true;
$nbmax_mauvais = 0;
while($bon_tirage === true || $nbmax_mauvais < 10)
{
$tirage = genererUnTirage();
$bon_tirage = is_a_good_tirage($tirage);
$nbmax_mauvais++;
}
return $tirage;
}
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++)
{
$oldtirages[$t[$i]][$t[$j]] = 1;
$oldtirages[$t[$j]][$t[$i]] = 1;
}
}
}
}
lanceur();
?>
et le js qui ne fonctionne pas
//VARIABLE POUR LE TESTE CES VARIABLE VIENDRONT DE LA BASE DE DONNEE PLUS TARD !!
var participant = ["1h","2f","3f","4f","5h","6h","7h","8f","9h","10h","11h","12f","13h","14h",'15h','16f','17h','18h','19f'];
var femme=["2","3","4","8","12","16","19"];
//VARIABLE POUR COMPTER LE NOMBRE DE PARTICIPANT
var nb_participant=participant.length;
//VARIABLE POUR STOCKER LE NOMBRE DE DOUBLETTES
var nb_doublette;
//VARIABLE POUR STOCKER LE NOMBRE DE TRIPLETTES
var nb_triplette;
//VARIABLE POUR STOCKER LE NOMBRE DE PARTIE A CREER
var nb_partie;
var oldtirages;
//FONCTION POUR DETERMINER LE NOMBRE DE DOUBLETTE ET DE TRIPLETTE
function determination()
{
reste = nb_participant%2;
nb_doublette=((nb_participant-reste)/2)-reste;
nb_triplette = reste;
if((nb_triplette+nb_doublette)%2!=0)
{
nb_triplette+=2;
nb_doublette-=3;
}
nb_partie=(nb_doublette+nb_triplette)/2;
}
function lanceur()
{
determination();
tirage1 = nouveauTirage();
console.log(tirage1);
tirage2 = nouveauTirage();
console.log(tirage2);
//-- exemple mauvais tirage
//print_r(nouveauTirageInccorect());
affichage();
}
function affichage()
{
console.log("Nombre de participant :"+nb_participant);
console.log("composition d'équipe (en favorisant les doublettes) :");
console.log("nombre d'équipe double : "+nb_doublette);
console.log("nombre d'équipe triple :"+nb_triplette);
console.log("nombre de partie à jouer à chaque tirage : "+nb_partie);
}
function nouveauTirage()
{
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);
return tirage;
}
/*function nouveauTirageInccorect()
{
bon_tirage = true;
nbmax_mauvais = 0;
while(bon_tirage === true || nbmax_mauvais < 10)
{
tirage = genererUnTirage();
bon_tirage = is_a_good_tirage(tirage);
nbmax_mauvais++;
}
return tirage;
}*/
function shuffle(a)
{
var j = 0;
var valI = '';
var valJ = valI;
var l = a.length - 1;
while(l > -1)
{
j = Math.floor(Math.random() * l);
valI = a[l];
valJ = a[j];
a[l] = valJ;
a[j] = valI;
l = l - 1;
}
return a;
}
function genererUnTirage()
{
part = participant;
part = shuffle(part);
tirage = [];
for(var i = 0;i<nb_doublette; i++)
{
tirage.push(new Array(part[i*2],part[i*2+1]));
}
for(var i = 0;i<nb_triplette; i++)
{
tirage.push(new Array(part[nb_doublette*2+i*3],part[nb_doublette*2+i*3+1],part[nb_doublette*2+i*3+2]));
}
return tirage;
}
String.prototype.replaceAll = function(search, replacement) {
var target = this;
return target.split(search).join(replacement);
};
function isset(str) {
return typeof str !== 'undefined';
}
function is_a_good_tirage(tirage)
{
tirage.forEach(function(t)
{
for(i = 0; i< t.length;i++)
{
for(j = i+1; j<t.length;j++)
{
//-- vérif si 2 femmes
if(t[i].substr(-1) == 'f' & t[j].substr(-1) == 'f')
{
return false;
console.log(t[i])
}
//-- vérif si déjà joué ensemble
if(oldtirages[t[i]][t[j]])
{
return false;
}
//-- vérif l'age du curé
if(false)
{
return false;
}
}
}
});
return true;
}
function save_tirage(tirage)
{
tirage.forEach(function(t)
{
for(var i = 0; i< t.length;i++)
{
for(var j = i+1; j< t.length;j++)
{
oldtirages[t[i]][t[j]] = 1;
oldtirages[t[j]][t[i]] = 1;
}
}
});
}
lanceur();```
les erreurs arrivent partout ou il y a "oldtirages[t[i]][t[j]]" si quelqu'un pouvait m'aider ca serait sympas ..fait un moment je n'ai pas trop touché au js etc..