begin process at 2012 05 27 20:18:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N DE PARTICIPANT

FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N DE PARTICIPANT


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :calcul, duel, php, algorithme Niveau :Initié Date de création :31/05/2011 Date de mise à jour :31/05/2011 03:43:41 Vu :2 470

Auteur : mtrix000

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note


 Description

Tout est dans le titre :)
C'est simple mais assez utile ;)

J'ai commencé par creer cette fonction qui est trop lourde en calucl :

function nDuel($nombre){
    
    $list = array();
    $start = 1;
    $val = 0;
    if($nombre >= 2){
        do{
            for($i=$nombre;$i>=$start;$i--){
                
                    for($y=$start;$y<=$nombre;$y++){
                        if(
                           !in_array("$i/$y",$list)
                           and !in_array("$y/$i",$list)
                           and $i != $y
                        ){
                            $list[] = "$i/$y";
                        }
                    }
                    
            }
            $start ++;
        }while($start != $nombre);
        
        $val = count($list);
    }
    
    return  $val;
}


puis j'ai compris que c'était plus simple :)
Donc Voila !

Source

  • <?php
  • function nDuel($nombreDeParticipant){
  • $nombreDeDuel = ($nombreDeParticipant * $nombreDeParticipant - $nombreDeParticipant ) / 2;
  • return $nombreDeDuel;
  • }
  • //exemple
  • $nombre = 100;
  • echo nDuel($nombre);
  • ?>
<?php

function nDuel($nombreDeParticipant){
    $nombreDeDuel = ($nombreDeParticipant * $nombreDeParticipant - $nombreDeParticipant ) / 2;
    return $nombreDeDuel;

}

//exemple

$nombre = 100;
echo nDuel($nombre);

?>

 Conclusion

Bonne prog :)


 Historique

31 mai 2011 03:32:35 :
Micro correction
31 mai 2011 03:43:41 :
:)

 Sources du même auteur

Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM
Source avec Zip FORMULAIRE DE CONTACT PHP + ENVOI MAIL - PROFESSEUR-PHP.COM
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE YOUTUBE API
Source avec Zip Source avec une capture SIMPLE EMAILING SERVICE

 Sources de la même categorie

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
CLEF POUR EAN 13 ET 14 par RaftY
Source avec Zip Source avec une capture TRIANGLE DE PASCAL ET SON ÉQUATION par vendeeHdLR89
Source avec Zip CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LO... par varfendell
FONCTION QUI VÉRIFIE SI L'ARGUMENT EST UN NOMBRE PREMIER par darkelda

 Sources en rapport avec celle ci

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
REDIMENSIONNEMENT D'IMAGE PHP par JStevens
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter
EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8

Commentaires et avis

Commentaire de coucou747 le 02/06/2011 13:41:21 administrateur CS

Bonjour,

Si un homme prend tout le monde en duel (quand il meurt, le gagnant prend les autres en duel, bref, ca revient au meme)

t'obtiens n - 1 combat... c'est beaucoup moins qu'avec ta fonction

Si tu parles d'un tableau d'élimination, on obtient a peu pres le meme chiffre (pour N une puissance de deux, ca fonctionne)

Bref, ce que fait ton code n'est pas clair...

Commentaire de lbasic le 06/06/2011 10:43:52

Je pense que l'auteur a utilisé le mot "duel" dans le sens de "1 contre 1 et 1 seule fois"
sa fonction permet de calculer le nombre de "match" ou "partie" uniques entre deux personnes en fonction du nombre de participants.

en clair, le nombre de "partie" pour que tout le monde joue contre tout le monde 1 seule fois.

exemple avec 4 joueurs A,B,C,D

A-B
A-C
A-D
B-C
B-D
C-D

on obtiens 6 "parties".

CQFD

Commentaire de coucou747 le 06/06/2011 10:51:49 administrateur CS

ah c'est un tournois de poules...

Commentaire de LeFauve42 le 06/06/2011 13:19:40 1/10

Oui, ca marche, mais un niveau initié pour une fonction de stats élémentaire vue en troisième ou en seconde...

Note que la formule utilisée n*(n-1) donne toutes les permutations.
Ca veut dire que x1 contre x2 et x2 contre x1 sont deux duels différents.

Si tu veux les "duels" uniques, il faut diviser par le nombre de permutations parmis n éléments, c'est à dire n! (dans ton cas, n=2, n! = 1*2 = 2).

donc, pour le nombre de duels la formule est :
$n*($n-1)/2

Pour ceux que ca interesse, la formule générale (nombre de groupes de m éléments pris parmis n éléments) est :
(n!/(n-m)!)/m! ou si vous préférez : n!/((n-m)!*m!)

Eric

PS: Désolé pour la note mais franchement, entre nous, tu pousses un petit peu, non ? (une multiplication et une soustraction... Initié... :o) )

Commentaire de mtrix000 le 06/06/2011 15:59:51

Bonjour LeFauve42, et les autres...

tous dabord pour ton : $n*($n-1)/2 je pense que tu n'as pas lu entièrement ma fonctio nDuel qui est :

function nDuel($nombreDeParticipant){
$nombreDeDuel = ($nombreDeParticipant * $nombreDeParticipant - $nombreDeParticipant ) / 2;
return $nombreDeDuel;
}

Donc c'est la même chose que ta fonction.

Si j'ai fais cette fonction c'est pour savoir combien il y a de 1 contre 1, avec un grand nombre de participant.

Merci pour le 1 :)

Commentaire de mtrix000 le 06/06/2011 16:23:16

Tous ceux qui est Logique n'est pas toujours évident, Initié car je ne met pas de commentaire, je vois mal un débutant comprendre ca...
function nDuel($nombre){
    
    $list = array();
    $start = 1;
    $val = 0;
    if($nombre >= 2){
        do{
            for($i=$nombre;$i>=$start;$i--){
                
                    for($y=$start;$y<=$nombre;$y++){
                        if(
                           !in_array("$i/$y",$list)
                           and !in_array("$y/$i",$list)
                           and $i != $y
                        ){
                            $list[] = "$i/$y";
                        }
                    }
                    
            }
            $start ++;
        }while($start != $nombre);
        
        $val = count($list);
    }
    
    return  $val;
}

bref j'aurais du peut être ne rien partager.

Commentaire de mtrix000 le 06/06/2011 16:26:17

La preuve coucou747 qui est un expert n'a pas compris du premier cou :p

Commentaire de coucou747 le 06/06/2011 16:31:45 administrateur CS

hum...

faut pas le prendre si mal.

le truc, c'est que ta fonction est vraiment simple, t'aurais mis un truc pour le systeme suisse ça aurait été différent, t'aurais fait une classe abstraite qui gère un tournois de poules pour N joueurs, ça aurait pu être intéressant.

Commentaire de LeFauve42 le 07/06/2011 13:11:31

ooops,

Desole, je n'avais pas vu la scrollbar, et donc pas vu le /2 a la fin.

A part ca, si il est toujours possible de reecrire n'importe quel program simple d'une ligne en 50, 100 ou meme plusieurs miliers de lignes illisibles, ca n'en fait pas pour autant un code de niveau "initie".

Eric

Commentaire de marm0tte le 20/06/2011 15:53:02

+1 @leFauve42

Je pense même que sans commentaires, un débutant peut comprendre le code que tu as fait en l'analysant un minimum.

PS : @coucou747 : vois pas le rapport avec la Suisse ^^

Commentaire de coucou747 le 20/06/2011 16:04:59 administrateur CS

Le système suisse est un système de classement.
Il existe plusieurs systèmes de classements :
- le tableau de poules
- le tournois par élimination directe
- le montée descente
- le système suisse.

Le système suisse est utilisé aux échecs (par exemple).

Le tableau de poules tries les joueurs en O(n^2) parties, c'est donc très long.
Le tournois par élimination directe est chiant parce-qu'il ne laisse pas ses chances aux personnes qui se retrouvent directement contre le plus fort : il permet de trouver le meilleur si et seulement si la fonction de victoire est de la forme : si a > b et b > c alors a > c (transitive ?) Bref, c'est très peu précis pour la plupart des jeux.

Le montée descente est en O(n^2)

Le systeme suisse est en O(n * log(n)) ce qui est cool, et il est très précis.

C'est encore plus flagrant quand les joueurs ne sont pas deux mais plus sur une partie : on peut étendre toutes ces méthodes de tournois, et avoir des complexités encore plus horribles pour toutes sauf le système suisse et le tournois par élimination directe.

Bref, si vous faites un tournois, faites un système suisse, c'est fiable et rapide.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

calcul matriciel en php [ par cacoucatatonique ] bonjour à tous,je suis à la recherche d'un code d'exemple pour effectuer des calculs matriciels de dimension variable, j'ai un peut recherche sur le n Calcul de nombres a partir de fichiers .txt résulat dans une page .php [ par ArC3Nik ] Bonjour,Voila sur mon server j'ai plusieurs fichier ".txt" qui contienne chaqu'un un nombre sur la 1 &#232;re ligne.Je voudrais aditionner ces nombres Date des 4 saisons [ par lelutinvert ] Bonjour,Une recherche particuli&#232;re : un algorithme r&#233;alisable en php ou javascript (pour se situer plut&#244;t&nbsp;&#224; l'endroit de l'in aide pour un algorithme ! [ par shaoling ] Bonjour, j'ai une &#233;nigme &#224; r&#233;soudre, et pour cela je compte bien m'aider du php ! Voici l'&#233;nigme :Pour la somme de 5 euros, on a a Calcul date php [ par yoarf ] Salut, &nbsp; Je Calcul de pagerank [ par katytheone ] Salut tout l monde,enfaite j ai besoin de votre aide on me demande de programmer en php un outil de suivi de referencement en calculant la pagerank et Bonsoir,Donnez-moi s'il vous plait le code en php de calcul la moyenne des note des étudiants [ par floranda ] Bonsoir,Donnez-moi s'il vous plait le code en php de calcul la moyenne des note des étudiants.merci calcul par annee [ par tchaw ] bonjour, bonjour je veux calculer la total d'un somme d'un champs(MTTC) du table (vente) à chaque année dans MYSQL et je veux afficher le résultat dan calcul par annee [ par tchaw ] bonjour, bonjour je veux calculer la total d'un somme d'un champs(MTTC) du table (vente) à chaque année dans MYSQL et je veux afficher le résultat dan calcul par annee [ par tchaw ] bonjour, bonjour je veux calculer la total d'un somme d'un champs(MTTC) du table (vente) à chaque année dans MYSQL et je veux afficher le résultat dan


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales