Da moulinette pour concours - v0.95 - perl

Da moulinette pour concours - v0.95 - perl - Concours - Photo numérique

Marsh Posté le 22-11-2006 à 17:27:57    

Voici la moulinette, encore très imparfaite qui permet de dépouiller les votes.
 

Code :
  1. #!\Perl\bin\perl.exe -s
  2. #!/usr/bin/perl -s
  3. #######################################################
  4. # DA MOULINETTE DE GESTION DES VOTES DES CONCOURS HFR #
  5. #######################################################
  6. # Version actuelle : v0.95 - 19/05/2008
  7. # -----------------------------------------------------
  8. #
  9. # HISTORIQUE :
  10. # ------------
  11. # Version | date       | Auteur | Notes
  12. # v0.9    | 22/11/2006 | Toxin  | Creation
  13. # v0.91   | 23/11/2006 | Toxin  | Gere le nombre de premieres place etc...
  14. #                                 en cas d'egalite de scores
  15. # v0.92   | 23/11/2006 | Toxin  | Gere les votes en double et rejette le bloc de 6 votes.
  16. #                                 Optimisation du code pour les structures conditionnelles.
  17. # v0.93   | 27/11/2006 | Toxin  | Affiche le nombre de votants
  18. # v0.94   | 15/01/2007 | Toxin  | Prend maintenant correctement en compte les pseudos composes
  19. #                                 v0.94 dite Michel Bouge Bouge.
  20. # v0.95   | 19/05/2008 | Toxin | Est Maintenant capable de gerer une syntaxe #01 -> #16 pour les votes.
  21. #                               
  22. #######################################################
  23. #
  24. # USAGE :
  25. # -------
  26. # moulinette.pl <pseudos> <votes> [> <fichier sortie>]
  27. #
  28. # Pour constituer le fichier des votes, afficher le topic des votes
  29. # sur une seule page.
  30. # Faites un selectionner tout + copier + coller dans un fichier texte
  31. #
  32. # Lancez la moulinette et consultez le resultat
  33. #
  34. # RESTRICTIONS ACTUELLES
  35. #
  36. # - La moulinette ne gerant pas les quotes, faites le menage.
  37. #
  38. ########################################################
  39. # CONSTANTES DU PROGRAME
  40. *NBVOTESPARPOST = \6 ;
  41. # Vrai
  42. #*DEBUG = \1 ;
  43. # Faux
  44. *DEBUG = \undef() ;
  45. ##############################################
  46. # Fonction - Trace mode Debug
  47. # --------------------------------------------
  48. # Paramètre : tout ce qui est a sortir a l ecran
  49. sub trace
  50. {
  51. my @args = @_ ;
  52. if ( $DEBUG )
  53. {
  54.  printf(@args) ;
  55.     }
  56. } # End trace()
  57. ##############################################
  58. # Fonction - chargement des pseudos.
  59. # --------------------------------------------
  60. # Le fichier doit contenir les pseudos ligne
  61. # par ligne de la manière suivante :
  62. # <pseudo> <numero image>
  63. # Si le pseudo est compose, c'est a dire avec des espaces, la
  64. # moulinette fonctionne de la maniere suivante
  65. # <- pseudo 1..n-1 ->   <image argument n>
  66. # Michel Bouge  Bouge 14
  67. #
  68. # Paramètre : le nom du fichier (chemin absolu)
  69. # Valeur de retour : un tableau tabPseudo[numero]="pseudo"
  70. #                               tabPseudo[0] contient le nombre d entrees
  71. sub readPseudoFile
  72. {
  73. my $pseudoFile = shift @_ ;
  74. my @tabPseudo ;
  75. my $nbPseudos=0 ;
  76. trace("opening $pseudoFile\n" ) ;
  77. open (IN, "<$pseudoFile" ) or die("Impossible de lire $pseudoFile\n" ) ;
  78. my @lignes = <IN> ;
  79. close (IN) ;
  80. while ( @lignes )
  81. {
  82.  # Partie du code remaniee pour prendre en compte les pseudos composes.
  83.  # Correction dite "Michel Bouge Bouge"
  84.  my (@array) = split(" ", shift @lignes) ;
  85.  my $image = $array[0] ;
  86.  my $pseudoT = "$array[1]" ;
  87.  for ( $i=2 ; $i <= $#array ; $i++ )
  88.  {
  89.   $pseudoT=$pseudoT . " " . $array[$i] ;
  90.     }
  91.  my $noImage = sprintf("%d", $image) ;
  92.  $tabPseudo[$noImage]=$pseudoT ;
  93.  trace("tabPseudo $noImage = #$pseudoT#  \n" ) ;
  94.  $nbPseudos++ ;
  95.     }
  96.     $tabPseudo[0]=$nbPseudos ;
  97.     return @tabPseudo ;
  98. } # End readPseudoFile()
  99. ##############################################
  100. # Fonction - Lecture de la prose des votes.
  101. # --------------------------------------------
  102. # Le fichier doit contenir au format texte les
  103. # votes respectant le formalisme :
  104. # #1 -> xx : commentaire pouvant deborder sur plusieurs lignes
  105. # #2 -> xx : idem
  106. # #3 -> xx : idem
  107. # #4 -> xx : idem
  108. # #5 -> xx : idem
  109. # #6 -> xx : idem
  110. #
  111. #
  112. # Paramètres : le nom du fichier (chemin absolu)
  113. #              le tableau des partcipants
  114. # Valeur de retour : un hash tabVoteImage{$pseudo}->{NO_IMAGE (int), SCORE (int), VOTES(a,b,c,d,e,f,g) (@int)}.
  115. sub readVotesFile
  116. {
  117. my ($votesFile, @tabPseudos) = @_ ;
  118. # Tableau de retour des scores par image
  119. my @tabPseudoPoints ;
  120. # Rappel : tabPseudo[0] contient le nombre de participant et donc d images.
  121.     for ( $i=1 ; $i <= $tabPseudos[0] ; $i++ )
  122. {
  123.  # Espace de stockage des informations collectees
  124.  # Le tableau a 7 elements car les indices commencent a 0
  125.  # Nous ne l utiliserons que pour les indices 1..6
  126.  # EXAEQUO devait servir pour l'affichage final
  127.  # Voir la fonction printResultats() pour plus de details.
  128.     my $record = { NO_IMAGE => $i,
  129.                    SCORE    => 0,
  130.                 VOTES    => [0, 0, 0, 0, 0, 0, 0],
  131.                 EXAEQUO  => "",
  132.                  } ;
  133.     $tabPseudoPoints{$tabPseudos[$i]}= $record ;
  134.     } # for initialisation de tabPseudoPoints
  135.    
  136.     # Espace de stockage temporaire des 6 votes le temps de faire
  137. # leur analyse avant de les compter effectivement
  138. my @tabTempVotes ;
  139. # Hashage de depistage de votes doubles. On le remplit de la manière suivante:
  140. # $hashVotes{"$numeroImage"} = trucmuche.
  141. # une fois les 6 votes stockés on calcule : scalar keys %hashVotes.
  142. # Si on a moins de 6 c'est qu'il y a eu un vote en double.
  143. my %hashVotes = {} ;
  144. my @list = keys %hashVotes ;
  145. # Init à zero
  146. for ( $i=1 ; $i <= $NBVOTESPARPOST ; $i++ )
  147. {
  148.   $tabTempVotes[$i]=0 ;
  149.     }
  150.    
  151. # Le bareme
  152. my @tabBareme ;
  153. $tabBareme[1]=10 ;
  154. $tabBareme[2]=6 ;
  155. $tabBareme[3]=4 ;
  156. $tabBareme[4]=3 ;
  157. $tabBareme[5]=2 ;
  158. $tabBareme[6]=1 ;
  159. open (IN, "<$votesFile" ) or die("Impossible de lire $votesFile\n" ) ;
  160. my @lignesFichier = <IN> ;
  161. close (IN) ;
  162. # Variable de gestion de lecture
  163. my $expectedRank = 1 ;
  164.     # C est parti !
  165. while ( @lignesFichier )
  166. {
  167.  my $ligne = shift @lignesFichier ;
  168.  #-------------------------------------------------------------------
  169.  # ON PREPARE LA LIGNE AVANT ANALYSE
  170.  #-------------------------------------------------------------------
  171.  # On elimine tous les espaces et on remplace : par " " pour etre certain
  172.  # d'avoir un motif qui est de la forme : ^#[d]
  173.  $ligne =~ s/ //g ;
  174.  # le fait de remplacer le : par un " " cree un separateur
  175.  # avec les eventuels commentaires des votes
  176.  $ligne =~ s/\:/ /g ;
  177.  #-------------------------------------------------------------------
  178.  # ANALYSE : ON VEUT RECUPERER LE NUMERO DE L'IMAGE AINSI QUE SON
  179.  #           CLASSEMENT POUR CE VOTE.
  180.  #-------------------------------------------------------------------
  181.  my ($rank, $image) = ( $ligne =~ m/#0*(\d{1})->#?(\d{1,2})/ ) ;
  182.  # Entres autres permet de convertir un 06 en 6.
  183.  my $noImage = sprintf("%d", $image) ;
  184.  #-------------------------------------------------------------------
  185.  # GESTION DES ERREURS OU DES LIGNES NON ATTENDUES
  186.  #-------------------------------------------------------------------
  187.  # On verifie que les rank et image ont été identifies
  188.  #par l expression reguliere
  189.  if ( !defined($rank) || !defined($noImage) )
  190.  {
  191.      # La ligne ne ressemble pas a un vote -> skip
  192.      next ;
  193.     } # if - le split sort bien des rank et noImage => ligne qui nous interesse
  194.    
  195.     # On verifie que l image existe bien
  196.  if ( !defined($tabPseudos[$noImage]) )
  197.  {
  198.   # Rate. ligne invalidant le bloc de 6 votes.
  199.      printf("Ligne ignoree pour cause d image %s et de pseudo %s fantasque=%s\n",
  200.              $noImage,
  201.              $tabPseudos[$noImage],
  202.              $ligne) ;
  203.     
  204.      # Plus rien a attendre des lignes restantes du bloc,
  205.      # on se positionne pour attendre le prochain bloc de 6 votes
  206.      $expectedRank=1 ;
  207.     
  208.      # Et plus rien a faire dans la ligne en cours.
  209.      next ;
  210.     } # if - le numero de l image existe bien.
  211.    
  212.     # A ce stade on verifie que $expectedRank correspond bien au $rank rencontre
  213.     if ( $expectedRank != $rank )
  214.     {
  215.      # ce n'est pas le cas => les votes sont mal ecrits
  216.      # On repositionne les valeurs de maniere a attendre un vote 1.
  217.      $expectedRank=1 ;
  218.     
  219.      # Et on n'a plus rien a faire dans cette ligne, on passe a la suivante
  220.      next ;
  221.     } # if - le vote est bien pour la nieme image (de 1 à 6) attendue.
  222.    
  223.  #-------------------------------------------------------------------
  224.  # CECI EST UNE LIGNE QUE L'ON ATTENDAIT
  225.  #-------------------------------------------------------------------
  226.     # Tout d'abord on comptabilise le vote
  227.     $tabTempVotes[$rank] = $noImage ;
  228.    
  229.     # On rempli un hash qui sert a detecter les votes doubles
  230.     $hashVotes{$noImage} = "flag" ;
  231.     # Ensuite on gere la boucle en fonction de l'avancement.
  232.    
  233.     if ( $rank <= 5 )
  234.     # Si on etait a rank 1 (premier vote) on attend 2 (deuxieme vote)
  235.     # Si on etait a 2 on attend 3.
  236.     # De meme jusqu'a 5.
  237.     {
  238.      $expectedRank++ ;
  239.     }
  240.         else
  241.         {
  242.            #-------------------------------------------------------------------
  243.     # BLOC DE 6 VOTES DANS @tabTempVotes !
  244.     #-------------------------------------------------------------------
  245.        
  246.        if ( (scalar keys %hashVotes) < 7 )
  247.        # Un couillon a vote deux fois pour meme image. 7 parce que on a toujours
  248.        # les elements + un hash
  249.        {
  250.         %hashVotes = {} ;
  251.         $tabTempVotes[1] = $tabTempVotes[2] = $tabTempVotes[3] =
  252.                            $tabTempVotes[4] = $tabTempVotes[5] =
  253.                            $tabTempVotes[6] = 0 ;
  254.         $expectedRank=1 ;
  255.         printf("Vote en double detecte, bloc de 6 votes ignore en ligne \n" ) ;
  256.         next ;
  257.        } # if - 6 votes distincts
  258.      
  259.        #---------------------------------------------------------------------
  260.     # VERIFS OK, ON PEUT MAINTENANT CREDITER LES IMAGES DES VOTES
  261.     #---------------------------------------------------------------------
  262.            for ( $i=1 ; $i<=6 ; $i++ )
  263.            {
  264.                ####################################################
  265.                # Code eclairci en vue d une meilleure maintenabilite
  266.                # --------------------------------------------------
  267.                # $i est un indice qui parcourt les 6 votes dans @tabTempVotes
  268.                # $tabTempVotes[$i] contient le numero de l image pour ce vote
  269.                # Avec le numero de l'image on peut acceder au pseudo via @tabPseudos :
  270.                #                                        $tabPseudos[$tabTempVotes[$i]]
  271.                # @tabBareme nous donne le nombre de points à créditer en fonction de $i :
  272.                #                                        $tabBareme[$i]
  273.                # Enfin, avec %tabPseudoPoints on peut acceder au SCORE  :
  274.                #             $tabPseudoPoints{$tabPseudos[$tabTempVotes[$i]]}->{SCORE}
  275.              
  276.                # On credite donc les points
  277.                $tabPseudoPoints{$tabPseudos[$tabTempVotes[$i]]}->{SCORE} +=
  278.                                 $tabBareme[$i] ;
  279.                              
  280.                # Et on incremente le nombre de votes en fonction de la position
  281.                $tabPseudoPoints{$tabPseudos[$tabTempVotes[$i]]}->{VOTES}[$i]++ ;
  282.          
  283.                #DEBUG
  284.            trace("Boucle %d - Image %3s de %10s gagne %2s points - Score actuel %3s\n",
  285.                  $i,
  286.                  $tabTempVotes[$i],
  287.                  $tabPseudos[$tabTempVotes[$i]],
  288.                  $tabBareme[$i],
  289.                  $tabPseudoPoints{$tabPseudos[$tabTempVotes[$i]]}->{SCORE}) ;
  290.                
  291.                $tabTempVotes[$i]=0 ;
  292.            } # for boucle de comptage des votes
  293.            # Et c est reparti pour un tour...
  294.            $expectedRank=1 ;
  295.            %hashVotes = {} ;
  296.            trace("-----------------\n" ) ;
  297.         } # if de traitement des 6 votes
  298.        
  299.     } # boucle qui parcourt le fichier des votes charge en memoire
  300.    
  301.     return %tabPseudoPoints ;
  302. } # End readVotesFile() - Fonction de lecture et de comptabilisation des votes
  303. #########################################
  304. # Fonction - pour remplir un hash en cas
  305. #            d egalite entre votes en pleine
  306. #            execution du sort pour trier les votes
  307. # ---------------------------------------
  308. # Retourne true a des fins de compatibilites du sort
  309. #
  310. sub fillHash
  311. {
  312. my ($hash, $key, $pseudoref) = @_ ;
  313. $hash->{$key} = "ex aequo avec $pseudoref" ;
  314. return 1 ;
  315. } # End fillHash()
  316. #####################################################
  317. # Fonction - Affichage des resultats tries par score
  318. # ---------------------------------------------------
  319. sub printResultats
  320. {
  321.     my %arg = @_ ;
  322.     my %exaequo ;
  323.    
  324.     my $nbVotes ;
  325. printf("----------------------------------------------\n" ) ;
  326. printf("       Pseudo    #Image      Score\n" ) ;
  327. printf("----------------------------------------------\n" ) ;
  328. # On trie le hash des votes
  329. # $arg{$b}->{SCORE} <=> $arg{$a}->{SCORE} fait la comparaison entre les scores
  330. # arg{$b}->{VOTES}[1] <=> $arg{$a}->{VOTES}[1] permet en cas d'egalite des SCORES
  331. # de trier sur le nombre de premieres places, etc... jusqu'a la 5eme place.
  332. # La 6ième place n'a pas besoin d'etre testée car les scores sont identiques, si on
  333. # en arrive là on sait que le nombre de 6ième places seront les memes.
  334. #
  335. # En cas d'egalite sur tous les criteres on remplit un hash avec les pseudos
  336. # pour se rappeler lors de l'affichage qu'il y avait ex aequo. En rusant avec
  337. # une fonction qui fait la modif par reference tout en renvoyant un booleen
  338. # pour le sort, ca marche.
  339. #
  340. # Note : je voulais au départ mettre la chaine de caractere dans un autre
  341. #        element de la structure : $arg{$b}->{EXAEQUO}
  342. #        mais je me fais jeter a la compile pour cause d'acces interdit a un scalaire.
  343. #        Je veux bien que l'on m'indique comment faire
  344. #        sans passer par un hash separe et sans fonction
  345. foreach $pseudo ( sort { $arg{$b}->{SCORE} <=> $arg{$a}->{SCORE} ||
  346.                            ( $arg{$b}->{VOTES}[1] <=> $arg{$a}->{VOTES}[1] ||
  347.                              $arg{$b}->{VOTES}[2] <=> $arg{$a}->{VOTES}[2] ||
  348.                              $arg{$b}->{VOTES}[3] <=> $arg{$a}->{VOTES}[3] ||
  349.                              $arg{$b}->{VOTES}[4] <=> $arg{$a}->{VOTES}[4] ||
  350.                              $arg{$b}->{VOTES}[5] <=> $arg{$a}->{VOTES}[5] ||
  351.                              fillHash(\%exaequo, $a, $b) )
  352.                        } keys %arg)
  353. {
  354.  for ($iVotes=0 ; $iVotes <= $NBVOTESPARPOST ; $iVotes++ )
  355.  { 
  356.   $nbVotes += $arg{$pseudo}->{VOTES}[$iVotes] ;
  357.      }
  358.  printf("%15s  %6s  %3s point(s) %s\n",
  359.         $pseudo,$arg{$pseudo}->{NO_IMAGE},
  360.         $arg{$pseudo}->{SCORE},
  361.         $exaequo{$pseudo}) ;
  362.     } # End foreach & sort
  363.     $nbVotes = $nbVotes / 6.0 ;
  364.        
  365.     printf("----------------------------------------------\n" ) ;
  366.     printf("               %4s votants\n", $nbVotes) ;
  367. } # End printResultats()
  368.   ####################################################
  369. ######################################################
  370. ###                                                  ###
  371. ###          #    #    ##       #    #    #          ###
  372. ###          ##  ##   #  #      #    ##   #          ###
  373. ###          # ## #  #    #     #    # #  #          ###
  374. ###          #    #  ######     #    #  # #          ###
  375. ###          #    #  #    #     #    #   ##          ###
  376. ###          #    #  #    #     #    #    #          ###
  377. ###                                                  ###
  378. ######################################################
  379.   ####################################################
  380. if ( $#ARGV != 1 )
  381. {
  382.    die ("Moulinette <fichiers des pseudos> <fichier des votes>\n" ) ;
  383. }
  384. my @pseudos = readPseudoFile($ARGV[0]) ;
  385. my %votes   = readVotesFile ($ARGV[1], @pseudos) ;
  386. printResultats(%votes) ;


 
Ne connaissant pas le perl j'ai fait au mieux. Des restrictions subsistent, elle ne gère pas les quotes et ne vérifie pas que quelqu'un vote 2 fois pour la même personne.


Message édité par Toxin le 19-05-2008 à 16:57:49

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 22-11-2006 à 17:27:57   

Reply

Marsh Posté le 22-11-2006 à 17:28:17    

Exemple de fichier des pseudos :
 

1 rodarur
2 LIENAD
3 Clémounet
4 Vorax1213
5 Tixa
6 siger29480
7 cdk3
8 ergerg
9 NeKsoN
10 theHitman
11 hono-lulu
12 Eroja
13 SAFE


 
 
Exemple de fichier des votes :
 

1 -> 02  : Un noir et blanc vraiment reussi, et une bonne idée, la photo donne deja mal au oreils.  
#2 -> 10  : L'idée me plait beaucoup
#3 -> 05  :    
#4 -> 04  : Bonne mise en scène  
#5 -> 09  : Belle représentation du son, mais un peu trop retouché.  
#6 -> 13  :
n°1275876
safe
 
Posté le 07-11-2006 à 23:22:31   profileditansweranswer +answer -homepageMPFavoris
Prévenir les modérateurs en cas d'abus
 
 
#1 -> 06  : J'aime beaucoup l'idée, la force que donne la mise en situation, les flous du reveil et du personnage.  
#2 -> 11  : J'aime beaucoup l'idée, le cadrage, la tête satisfait du gamin qui écoute la musique.
#3 -> 09  : J'aime l'idée, le cadrage et les traitements réalisés qui sont ni de trop ni pas assez.
#4 -> 07  : J'aime l'idée, la cadrage et la lumière de cette photo n&b.  
#5 -> 02  : C'est propre et simple, j'aime beaucoup.
#6 -> 04  : J'aime assez l'idée et récompense l'effort de mise en scène
 
@+
n°1276068
hono-lulu
 
Posté le 08-11-2006 à 06:54:42   profileditansweranswer +answer -IM
msn hono.lulu@hotmail.fr
homepageMPFavoris
Prévenir les modérateurs en cas d'abus


Etc...
 
Il suffit d'afficher le topic en mode impression et de faire CTRL-C CTRL-V dans un document texte.
 
On lance ensuite la moulinette selon votre OS :
UNIX

$moulinette.pl <pseudos> <votes> [ > resultat]


 
Windows

$perl moulinette.pl <pseudos> <votes> [ > resultat]


 
Le résultat est généré de la manière suivante :
 

-------------------------------------
       Pseudo    #Image      Score
-------------------------------------
     siger29480       6   49 point(s)
        rodarur       1   49 point(s)
           cdk3       7   43 point(s)
      hono-lulu      11   42 point(s)
         LIENAD       2   42 point(s)
      theHitman      10   36 point(s)
           Tixa       5   31 point(s)
      Vorax1213       4   27 point(s)
         NeKsoN       9   26 point(s)
      ClÚmounet       3    9 point(s)
           SAFE      13    5 point(s)
          Eroja      12    5 point(s)
         ergerg       8    0 point(s)
----------------------------------------------
                 14 votants


 
En cas d'ex aequo la moulinette affiche :
 

----------------------------------------------
       Pseudo    #Image      Score
----------------------------------------------
        rodarur       1   20 point(s)
      ClÚmounet       3   20 point(s) ex aequo avec rodarur
         LIENAD       2   20 point(s) ex aequo avec ClÚmounet
     siger29480       6    4 point(s)
      hono-lulu      11    3 point(s)
      Vorax1213       4    3 point(s) ex aequo avec hono-lulu
           cdk3       7    2 point(s)
           Tixa       5    2 point(s) ex aequo avec cdk3
          Eroja      12    2 point(s) ex aequo avec Tixa
           SAFE      13    1 point(s)
         ergerg       8    1 point(s) ex aequo avec SAFE
      theHitman      10    0 point(s)
         NeKsoN       9    0 point(s) ex aequo avec theHitman
----------------------------------------------
                 14 votants


Message édité par Toxin le 27-11-2006 à 10:03:33

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 22-11-2006 à 17:28:28    

<réservé>


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 22-11-2006 à 17:37:57    

<réservé>


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 22-11-2006 à 18:38:02    


 :hello: Je ne connais rien en perl, mais il me semble que tu ne tiens pas compte également du nombre de 1ères places, nombre de 2èmes places, etc, en cas d'égalité.

Reply

Marsh Posté le 22-11-2006 à 18:45:22    

Je propose de baptiser le programme "Dan la moulinette" :o

Message cité 1 fois
Message édité par Anathema le 22-11-2006 à 18:45:31

---------------
Isn't it something ? Nothingman
Reply

Marsh Posté le 22-11-2006 à 19:50:28    

rodadur a écrit :

:hello: Je ne connais rien en perl, mais il me semble que tu ne tiens pas compte également du nombre de 1ères places, nombre de 2èmes places, etc, en cas d'égalité.


 
Ca je crois que je ne le gèrerai jamais, d'une part c'est casse burnes, d'autre part c'est de la branlette d'ours polaires à mes yeux.
Mais si quelqu'un se dévoue ... [:bastard] !


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 22-11-2006 à 19:50:41    

Anathema a écrit :

Je propose de baptiser le programme "Dan la moulinette" :o


 
:D


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 23-11-2006 à 00:59:30    

oh ! j'avais fait un truc en c il ya un an ou deux il me semble... ça tenait compte de tout... mais c'était développé à l'ancienne (me suis fait plaisir avec des malloc et tout et tout !!   sisi)...  ça avait dépouillé deux concours mine de rien !!! :D
 
Cette façon de faire me semble bien plus moderne !

Reply

Marsh Posté le 23-11-2006 à 08:51:23    

Tu me diras que pour tenir compte de tout il suffit d'enrichir la structure de données.
 
L'ideal serait de faire comme un struct en C mais dans l'état actuel de mes connaissances assez limitées je ne sais pas comment faire.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 23-11-2006 à 08:51:23   

Reply

Marsh Posté le 23-11-2006 à 14:54:07    

v0.91
 
La moulinette gère le nombre de premières places, de deuxièmes places... pour faire le classement et en cas d'égalité sur tous les éléments de comparaison affiche "ex aequo".


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 23-11-2006 à 16:51:08    

Comme quoi il ne faut jamais dire "Fontaine, je ne boirai pas de ton eau" ! :D  


Message édité par rodadur le 23-11-2006 à 16:51:51
Reply

Marsh Posté le 23-11-2006 à 16:53:44    

Pour tout te dire en terme de concours je m'en fous et serait plutôt enclin à déclarer un ex aequo de suite, c'est tout à l'honneur des candidats et du concours. Mais comme je ne connais pas grand chose en perl j'ai été piqué par ma curiosité pour mettre sur pied une structure de données capable de gérer ça.
 
Plus la fonction qui fait le tri, complètement  :pt1cable:  
 
Par ailleurs j'ai une v0.92 prête sous le coude qui gère les votes en double.


Message édité par Toxin le 23-11-2006 à 16:54:44

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 27-11-2006 à 10:05:42    

v0.93

 

+ Gère les votes en double et en cas de détection de doublon le bloc de 6 votes mal rédigé est ignoré
+ Affiche le nombre de votants en fin de tableau des scores.

 

Code optimisé et clarifié. Beaucoup de commentaires ajoutés à des fins de maintenabilité.


Message édité par Toxin le 16-05-2007 à 16:36:38

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 14-12-2006 à 08:47:10    

du très beau boulot dont je suis incapable :D

Reply

Marsh Posté le 14-12-2006 à 08:52:54    

cybercap a écrit :

du très beau boulot dont je suis incapable :D


+1
 
reste plus qu'a decode le nb de declenchement des 20d dans les exifs et ca sera la consecration :D


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 14-12-2006 à 09:13:35    

Cygne_d_Etang a écrit :

+1
 
reste plus qu'a decode le nb de declenchement des 20d dans les exifs et ca sera la consecration :D


 [:sygus]  [:gui42]


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 14-12-2006 à 09:18:06    

Ceci dit, à partir du moment où l'on a une expérience en programmation et que l'on sait de quelles structures de données on a besoin, c'est pas si compliqué que ça :jap:

 

Bon, du code il est vrai que ça fait 10 ans que j'en ponds (moins maintenant du reste) et que dans mon job l'analyse de fichiers est un passage obligé :D

 

EDIT : je viens de voir deux ou trois trucs qui ne servent à rien et qui datent des versions précédentes, tiens :o


Message édité par Toxin le 14-12-2006 à 09:21:30

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 15-12-2006 à 14:26:48    

heuu, j'ai fait une couille en testant ta moulinette ?
 
http://img86.imageshack.us/img86/946/maj20dtoxinle5.jpg


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 15-12-2006 à 14:28:00    

C'est quoi -w :D ?

 

EDIT : effectivement ça ne marche pas bien du tout avec -w [:tinostar]
EDIT2 : sur mon PC je peux me passer d'appeler perl avant, je balance le .pl directement.


Message édité par Toxin le 15-12-2006 à 14:30:34

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 15-12-2006 à 14:31:29    

oki, pour une fois que je lis le manuel (active perl) [:tinostar]
 
edit: effectivement, sans le perl -w, c'est nickel
 
merci m'sieur  [:mzarella]  


----------------------------------------------
       Pseudo    #Image      Score
----------------------------------------------
     siger29480       6   10 point(s)  
      hono-lulu      11    6 point(s)  
         NeKsoN       9    4 point(s)  
           cdk3       7    3 point(s)  
         LIENAD       2    2 point(s)  
      Vorax1213       4    1 point(s)  
         ergerg       8    0 point(s)  
      theHitman      10    0 point(s) ex aequo avec ergerg
           SAFE      13    0 point(s) ex aequo avec theHitman
        rodarur       1    0 point(s) ex aequo avec SAFE
          Eroja      12    0 point(s) ex aequo avec rodarur
      Clémounet       3    0 point(s) ex aequo avec Eroja
           Tixa       5    0 point(s) ex aequo avec Clémounet
----------------------------------------------
                  1 votants


 
 
 
 
 [:bibije]


Message édité par Cygne_d_Etang le 15-12-2006 à 14:34:45

---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 15-12-2006 à 14:33:34    

Effectivement -w c'est pour une compile plus stricte.
J'ai bon espoir de plier mon code au use strict quand j'aurai le temps.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 15-12-2006 à 14:50:05    

heureusement, t'as pas capte le nom de la capture [:anathema]


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 15-12-2006 à 16:03:12    

Cygne_d_Etang a écrit :

heureusement, t'as pas capte le nom de la capture [:anathema]


J'avais pas fait attention  [:gui42]


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 16-05-2007 à 16:39:40    

v0.94 disponible.
Les pseudos comportant des espaces sont gérés correctement.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 16-05-2007 à 18:22:50    

active perl


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 16-05-2007 à 18:42:43    

Tiens on dirait qu'il y a une couille dans le potage dans cette version...


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 16-05-2007 à 18:44:45    

toxin ??
 
http://img184.imageshack.us/img184/2856/perlxf6.jpg
 
si tu pouvais ne pas laisser trainer tes couilles n'importe où :o


Message édité par Cygne_d_Etang le 16-05-2007 à 18:45:38

---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 16-05-2007 à 19:02:03    

Ouais ça suinte :o
Bon je verrais ça ce soir, je vais d'abord me rentrer :o


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 17-05-2007 à 19:22:36    

Débogué.

 

L'affichage final croûte un peu avec un pseudo aussi long que celui de MBB mais c'est fonctionnel.


Message édité par Toxin le 17-05-2007 à 19:50:31

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 17-05-2007 à 19:23:56    

:jap:
 
je teste


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 18-05-2007 à 05:57:33    

Salut,
 
Ca gère si on n'a pas les pseudo (fichier vide, ou sans nom, ou pas de premier paramètre par ex)?  
Car cas rarissime:
Il y a plusieurs mois, j'ai du compté les votes (excell) car l'organistrice du concours avait "disparue". Je n'avais donc pas les pseudos à associer aux gagnants, qui se sont fait connaitre après-coup du coup :)
Peut-être que ça n'arrivera plus jamais, mais au cas où...
 
Cordialement.


Message édité par adoy le 18-05-2007 à 05:59:23
Reply

Marsh Posté le 18-05-2007 à 07:04:13    

tu remplaces le pseudos par le numero de la photo et ca passe


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 18-05-2007 à 09:26:34    

Oui tu fais un fichier pseudo.txt construit de la manière suivante :

1 Photo01
2 Photo02
...

 

:)

Message cité 1 fois
Message édité par Toxin le 18-05-2007 à 09:33:26

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 18-05-2007 à 09:32:19    

Toxin a écrit :

Oui tu fais un fichier pseudo.txt construit de la manière suivante :

1 Photo01
[b]1 Photo02[/b]
...


 
:)


BUggg! :D


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 18-05-2007 à 09:33:30    

J'ai du mal les matins où je ne travaille pas :o


Message édité par Toxin le 18-05-2007 à 09:33:46

---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le 18-05-2007 à 09:36:56    

arghhhh, l'empaffé! [:rofl]


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?
Reply

Marsh Posté le 19-05-2007 à 02:26:24    

Merci pour ta réponse. J'ai oublié le plus important: bravo pour ta moulinette.

Reply

Marsh Posté le 21-05-2007 à 00:50:35    

Han le topic de geek :d


---------------
500px People who think they know everything are a great annoyance to those of us who do.
Reply

Marsh Posté le 21-05-2007 à 11:04:58    

Savoir programmer c'est être geek :??:


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed