Files
2024-08-30 06:59:03 +02:00

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";
}