Wiwis d'Or: (dépouillement et stats auto)

Miscellaneous programs and scripts, opensource or not, and sometimes, random mathematical stuff.
User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Wed Jul 16, 2008 5:25 pm

Ce programme automatise autant que faire se peut le premier tour de la célèbre cérémonie des Wiwis d'Or. (Enfin, ça automatise le dépouillement pour les coloriés: faut quand même que les gens votent, hein :langue )

VERSION OBSOLETE! VOIR DERNIER POST
Wiwidor.zip


(edit 27/09/2008: Windows EXE:
wiwidor.exe.tar.gz
)

Mode d'emploi:
[plus totalement à jour; la syntaxe a été considérablement assouplie]
Spoiler: Reveal
Pour les Wiwilandais:

Contrairement à un dépouilleur humain, le système est très bête et n'a pas le sens de l'humour. Les bulletins doivent donc être remplis très sérieusement, et les noms des personnes pour lesquelles vous votez doivent être orthographiés exactement. Si les noms sont compliqués, faire un copier-coller n'est pas une mauvaise idée.

Les bulletins sont présentés selon un format simple, que le programme peut lire facilement: pour commencer, il faut préciser votre nom, en l'écrivant à la ligne directement en dessous de l'entête "VOTEUR". Par exemple, pour moi

Code: Select all

*VOTEUR
  Gamall

(Note: les espace avant ou après un nom sont ignorés. Les espaces au milieu d'un nom comptent.)

Après cela, il ne reste plus qu'à voter. Chaque catégorie se présente sous cette forme:

Code: Select all

+identifiant_de_catégorie
  Nom1
  Nom2
  Nom3
(éventuellement des lignes blanches)
+autre_catégorie
  etc...

Si vous voulez voter blanc (part), laissez une ligne blanche à la place d'un des noms. Attention:

Code: Select all

+identifiant_de_catégorie
  Tartempion

+autre_catégorie


est incorrect: ce sera interprété comme un vote pour "Tartempion", un vote blanc, et un vote pour un gars appelé "+autre_catégorie", inconnu au bataillon. Cette erreur obligerait la personne en charge des votes à corriger manuellement votre bulletin. Pas bien.

Un bulletin prêt à l'emploi est normalement fourni par le colorié en charge des votes.

Pour le colorié en charge des votes

-> créer un bulletin vierge: pour creer vers un fichier appelé "bulletin":

Code: Select all

$ ./wiwidor -generate-ballot bulletin

** Ze Wiwi d'Or
** by Gamall Wednesday Ida
** email : gamall.ida@gmail.com
** web   : gamall-ida.com

Generating white ballot 'bulletin'...
Ballot generated successfully.

Si le fichier existe il est écrasé...

Normalement vous obtenez ce fichier:

Code: Select all

# Les Wiwis d'Or: Premier tour


*VOTEUR
  Votre pseudo Wiwiland
 

+annee





+sadique





+drole





+cool





+raleur





+flooder





+serviable





+plume





+rpiste





+journaliste





+fou





+sage





+bel_avatar





+moche_avatar





+signature





+dessinateur







* THE END


-> stocker les bulletins: un bulletin est un fichier texte. Tous les bulletins correspondant à la même session des Wiwis d'Or doivent être stockés dans le même dossier (défaut: le dossier "votes", dans le répertoire courant.). Assurez-vous qu'il n'y a aucun autre fichier dans ce dossier.

-> Vérifier les noms: pour que le programme puisse déterminer si "Tartempion" existe réellement, il lui faut la liste des utilisateurs du forum, présentée dans un fichier texte contenant un nom par ligne, et rien d'autre. (défaut: users.list).

-> Dépouiller: pour dépouiller, si les votes et la liste des utilisateurs sont aux emplacements par défaut, il suffit de lancer le programme sans options: exemple sur quelques votes de test

Code: Select all

$ ./wiwidor

** Ze Wiwi d'Or
** by Gamall Wednesday Ida
** email : gamall.ida@gmail.com
** web   : gamall-ida.com

Building usernames table... 5 names recorded.
Loading vote files... < kafou > < bulletin > < gamall >


Main results :


Voters: Gamall, isa, Kafou


Ze Wiwilandais de l'ann�e

  2   Gamall
  1   isa
  1   Isa
  1   Kafou

Wiwi d'Or du plus sadique

  3   Gamall

Wiwi d'Or du plus dr�le

  1   Kafou

Wiwi d'Or du plus cool

  1   Gamall
  1   Kafou

Wiwi d'Or du plus r�leur

  2   Gamall
  1   ida
  1   Kafou

Wiwi d'Or du plus floodeur

  1   Kafou

Wiwi d'Or du plus serviable

  1   ida

Les résultats sont affichés par catégories, et triés par nombre de voix, puis par ordre alphabétique pour les ex aequos. La liste des voteurs est triée par ordre alphabétique.

-> Changer les défauts: pour plus d'infos, voir

Code: Select all

$ ./wiwidor --help
Ze Wiwi d'Or HELP

wiwidor [-votes-dir <votes>] [-users-list <users.list>]

-> Make stats using votes in directory <votes>, validating
   usernames against file <users.list>.

wiwidor -generate-ballot <path>

-> Generate a white, ready-to-use ballot.

wiwidor --help

-> Display this help page.



-> Infos sur le dépouillement:

Les votes multiples pour une même personne dans une même catégorie ne sont pris en compte qu'une seule fois.

Code: Select all

+cat
Gamall
Gamall
Gamall

équivaut à un vote pour Gamall et deux votes blancs. Ceci n'est pas considéré comme une erreur.

Une personne peut voter pour elle-même.

Une personne ne peut utiliser qu'un seul bulletin. Un double bulletin provoque une erreur et interrompt le dépouillement.

Une personne (voteurs et candidats) doit avoir un nom d'utilisateur valide (ie. dans la liste). Un nom invalide provoque une erreur.


-> Autres infos:

Les sources sont fournies sous la GPL. (OCaml. J'utilise v. 3.09.2)

Les sources sont documentées: voir le dossier ./doc

L'exécutable fourni est compilé sur un Linux (K)ubuntu 7.10. Si ça ne vous va pas, il faut soit compiler vous-même, soit me demander.

La complexité asymptotique du dépouillement est en O(n*log n), où n est le nombre de votes.
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Kafou
Poulidor Gnomonique
Posts: 1501
Joined: Sun Aug 19, 2007 7:17 pm
Location: dans son labo
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Kafou » Wed Jul 16, 2008 6:16 pm

Gamall wrote:Commencé cette nuit, pour cause d'insomnie.

Sera probablement terminé la prochaine fois que j'aurai des troubles du sommeil :haha

ROFL :love

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Thu Jul 17, 2008 8:50 pm

Gamall wrote:Commencé cette nuit, pour cause d'insomnie.

Sera probablement terminé la prochaine fois que j'aurai des troubles du sommeil :haha


Bon ben voilà, la prochaine fois est arrivée :hum Je ne peux pas m'endormir avant 6h du matin, il semble...

Il reste à écrire un petit mode d'emploi. :zzz

edit: et voilà :)
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Tue Jan 06, 2009 4:39 pm

Mise à jour:

La syntaxe d'entrée est maintenant beacoup plus flexible:

Code: Select all

+  cat

X

Y

Z

+         cat
+othercat


sont maintenant valides;

*THE END est maintenant un commentaire : #THE END

Ajout d'une fonction permettant de détecter les gens votant pour eux-mêmes: exemple de sortie

Code: Select all

Building usernames table... 5 names recorded.
Loading vote files... < kafou > < bulletin > < gamall >
The following people have voted for themselves:

              Gamall  <--->  sadique
              Gamall  <--->  raleur
                 isa  <--->  sage


Et voilà :)
Wiwidor.tar.gz


edit: corrigé typo, ajouté exécutable windows
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Wed Jan 07, 2009 12:31 am

Importé la vraie liste d'utilisateurs

Les noms sont maintenant insensibles à la casse.
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Wed Jan 07, 2009 1:05 am

Et l'exécutable windows
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Wed Jan 07, 2009 4:04 am

changement de catégories;

correction d'un "cheat" potentiel :P
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Wed Jan 07, 2009 8:06 pm

Version finale (je l'espère)

exécutables linux et windows; + sources
Wiwidor.tar.gz
(306.14 KiB) Downloaded 271 times
wiwidor.exe.gz
(138.75 KiB) Downloaded 272 times


edit: on me fait remarquer dans les coulisses du trombone que j'aurais pu nettoyer les fichiers temporaires autour des sources si je n'avais pas été une grosse feignasse.

Je réponds fi!; voilà :langue
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Fri Jan 09, 2009 3:29 am

Divers machins ajoutés à la demande de Kafou (stats + flag -hide-details)
Attachments
wiwidor.ml
v7
(12.29 KiB) Downloaded 234 times
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Fri Jan 09, 2009 3:56 am

Maj. -hide-details n'affiche que les 3 premiers nominés.

Cas particuliers: ne pas afficher noms ayant moins de 1 vote ; en cas d'ex-aequo, on peut afficher plus de trois noms (autant de noms qu'il faut pour avoir trois scores distincts, s'il y en a assez)

[sauf erreur de ma part, je n'ai pas de jeu de test pour vérifier]

le code concerné est

Code: Select all

if not !hide_details then
    let f = function name, count -> pf "%3s   %s\n" (soi count) name
    in List.iter f res; pnl ()
  else
    let rec disp n last = function
      | (name, num) :: l ->
        if n > 0 && num > 1 then begin
          pf "  %s\n" name;
          disp (if num <> last then succ n else n) num l
        end
      | [] -> ()
    in disp 3 0 res
Attachments
wiwidor.ml
v9
(12.47 KiB) Downloaded 252 times
Last edited by Gamall on Fri Jan 09, 2009 4:13 am, edited 1 time in total.
Reason: corrigé bug idiot et évident
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Fri Jan 09, 2009 6:16 am

Tiens, je relis le machin, et je me rends compte que
if num <> last then succ n else n
ne risque pas de marcher... remplacer succ par pred ;)
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Fri Jan 09, 2009 4:21 pm

Hop;

corrections:

- -hide-details dans le --help
- retour chariot après le dernier nom de chaque catégorie dans la version hide-details
- liste des "votees" avec le nombre de votes classée par ordre du nombre de votes (puis par ordre alphabétique à nb de votes égal, bien sûr)
Attachments
wiwidor.ml
v pi/2
(12.88 KiB) Downloaded 246 times
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Kafou
Poulidor Gnomonique
Posts: 1501
Joined: Sun Aug 19, 2007 7:17 pm
Location: dans son labo
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Kafou » Fri Jan 09, 2009 4:25 pm

Gamall wrote:Hop;

corrections:
- retour chariot après le dernier nom de chaque catégorie dans la version hide-details

Hihi maintenant c'est dans la version "normale" qu'il manque le retour :green

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Fri Jan 09, 2009 4:28 pm

Je viens de voir à l'instant. :banghead
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }

User avatar
Gamall
Hic sunt dracones
Posts: 4126
Joined: Fri May 26, 2006 11:09 pm
Contact:

Re: Wiwis d'Or: (dépouillement et stats auto)

Postby Gamall » Fri Jan 09, 2009 4:30 pm

patch: un begin end autour du else

Code: Select all

else begin
    let rec disp n last = function
      | (name, num) :: l ->
        if n > 0 && num > 1 then begin
          pf "  %s\n" name;
          disp (if num <> last then pred n else n) num l
        end
      | [] -> pnl ()
    in disp 3 0 res;
  end; pnl ()


je vois pas pourquoi mais bon :?
{<§ Gamall Wednesday Ida §>}
{ Mods and Programs - Mods TES-IV Oblivion }


Return to “Freewares, game mods, Java, C++, OCaml & Maths”

Who is online

Users browsing this forum: No registered users and 13 guests