52 lines
2.0 KiB
Plaintext
52 lines
2.0 KiB
Plaintext
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";
|
|
} |