Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Meilleure formule de tournoi suivant le nombre de joueurs


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Meilleure formule de tournoi suivant le nombre de joueurs
    Bonjour,
    Pour l'organisation de tournois, j'essaie, en fonction du nombre de joueurs inscrits, de trouver la meilleure formule.

    Pour le moment, on limite aux jeux en duels (2 joueurs ou 2 équipes).
    Pour le moment, je détermine uniquement le 1er tour.

    Je me suis mis les contraintes suivantes:
    * Dès qu'on peut faire des poules (max 5 par poule), on le fait. Ca permet de déterminer plusieurs matchs à l'avance, et donc chacun gère. L'organisateur joue aussi!
    * Dès qu'on peut faire 4 poules, on le fait.
    * voir d'autres dans le code ici https://3v4l.org/6c7uK

    Que pensez-vous des formules obtenues?
    Svp ne répondez pas "Ca dépend de l'objectif recherché...". Donnez votre avis.

    Jusqu'à 30 joueurs, ça donne ceci:
    0 = No match!
    1 = No match!
    2 = Every player battles the other players.
    3 = Every player battles the other players.
    4 = Every player battles the other players.
    5 = Every player battles the other players.
    6 = 2 groups with 3 players each.
    7 = swiss system with 3 rounds. Some players play only 2 matchs.
    8 = 2 groups with 4 players each.
    9 = 3 groups with 3 players each.
    10 = 2 groups with 5 players each.
    11 = swiss system with 4 rounds. Some players play only 3 matchs.
    12 = 4 groups with 3 players each.
    13 = swiss system with 4 rounds. Some players play only 3 matchs.
    14 = swiss system with 4 rounds.
    15 = 5 groups with 3 players each.
    16 = 4 groups with 4 players each.
    17 = swiss system with 5 rounds. Some players play only 4 matchs.
    18 = 6 groups with 3 players each.
    19 = swiss system with 5 rounds. Some players play only 4 matchs.
    20 = 4 groups with 5 players each.
    21 = 7 groups with 3 players each.
    22 = swiss system with 5 rounds.
    23 = swiss system with 5 rounds. Some players play only 4 matchs.
    24 = 6 groups with 4 players each.
    25 = swiss system with 5 rounds. Some players play only 4 matchs.
    26 = swiss system with 5 rounds.
    27 = 9 groups with 3 players each.
    28 = swiss system with 5 rounds.
    29 = swiss system with 5 rounds. Some players play only 4 matchs.
    30 = 6 groups with 5 players each.

  2. #2
    Expert confirmé
    salut


    25 = swiss system with 5 rounds. Some players play only 4 matchs.
    cela ne devrais pas être 5*5 ? ou tu préfère des poule paire
    5*4+5

    autre petit truc le libelle de tes fonction
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function four_groups ($players_count)
      {
      echo "4 groups with ".$players_count." players each.";
      }
     
    function groups_with_N_players ($n, $players_count)
      {
      echo $players_count." "."groups with ".$n." players each.";
      }

    j'aurais plutôt écrit

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function four_groups ($nb_players_grp)
      {
      echo "4 groups with ".$nb_players_grp." players each.";
      }
     
    function groups_with_N_players ($nb_players_grp, $nb_group)
      {
      echo $nb_group." "."groups with ".$nb_players_grp." players each.";
      }


    ton code
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    if ($players_count == 8) 
    	return groups_with_N_players (4, (int)($players_count/4));

    est inutile il est inclus dans

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
          if ($players_count % 4 == 0 && $players_count/4<=5) 
             return four_groups ((int)($players_count/4));

    8 % 4 == 0 ok
    8/4 <= 5 ok

    je pense qu'il y a un moyen plus simple de faire des groupe
    tu aurais fait plutôt

    Nb_Group = QUOTIENT(Nb_Players_Count-1;Nb_MaxGroup)+1
    Nb_Players_SUP = MODULO(Nb_Players_Count;Nb_Group) ;//nombre d'element suplementaire
    Nb_Players_GRP = QUOTIENT(Nb_Players_Count;Nb_Group) ;//nombre d'element constituant
    ce qui te donne une solution lineaire et evolutive
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre à l'essai
    Citation Envoyé par anapurna Voir le message
    salut


    25 = swiss system with 5 rounds. Some players play only 4 matchs.
    cela ne devrais pas être 5*5 ? ou tu préfère des poule paire
    5*4+5
    Effectivement 5*5 c'est mieux.

    Citation Envoyé par anapurna Voir le message

    ton code
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    if ($players_count == 8) 
    	return groups_with_N_players (4, (int)($players_count/4));

    est inutile il est inclus dans

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
          if ($players_count % 4 == 0 && $players_count/4<=5) 
             return four_groups ((int)($players_count/4));

    8 % 4 == 0 ok
    8/4 <= 5 ok
    Non, ça fait 4 groupes de 2.

    Citation Envoyé par anapurna Voir le message

    je pense qu'il y a un moyen plus simple de faire des groupe
    tu aurais fait plutôt

    ce qui te donne une solution lineaire et evolutive
    Je vais regarder ça.
    Merci