algo un certains nombre N de joueurs a chaque session, une table joue à un jeu avec T joueurs le but : _ faire le moins de sessions possibles _ chaque joueurs à joué une fois à chaque jeu _ maximiser la diversité des oppositions _ minimiser le nombre de table avec le meme jeu pour chaque session un joueur à : _ une liste de jeu possible _ une liste des opposants déjà rencontrés (pondéré au nombre de rencontres) le but : former Math.floor(N/T) tables Js = la liste des joueurs non affectés TANT QUE Nb_Tables < Math.floor(N/T) et jeux pas vide faire jeux = map jeu/liste joueurpossible (le joueur n'a pas joué et est présent dans Js) si moins de T joueurs dispo , jeu pas dans map pour le jeu dans jeux avec le moins de joueurs (en cas d'égalité celui le moins joué a cette session) faire table avec T de choisir_joueur( liste_joueur ) retirer les T joueurs de Js pour chaque joueur de la table retirer le jeu et ajouter la table en oposant fin tant que function choisir_joueur (listejoueur) { o(n2) //probleme des colocataire à T-tuple //construction de la préférence pour chaque joueur de listejoueur : preference[joueur] = { forte:[], faible:[], nulle : [], score:0} //pas rencontré , rencontré 1x rencontré plusieurs fois pour chaque joueur' de liste joueur: si joueur= joueur' continuer si Nb rencontr joueur'<--> joueur ==0 preference[joueur].forte.push(joueur') si Nb rencontr joueur'<--> joueur ==1 preference[joueur].faible.push(joueur') sinon preference[joueur].nulle.push(joueur') fin pour Si preference[joueur].forte a T-1 element trouvé preference[joueur].score = forte *liste_joueur **2 + faible *liste_joueur + null; fin pour //réduction prendre preference forte et preference faible du joueur au meilleur score dans faible, prendre par score décroissant. pour former un T_tuple; retourner "pas possible"; }