2010-02-10 12 views
15

Ho appena scaricato OpenSTV dopo aver visto il post del blog SO più recente, riguardante i risultati dell'elezione del moderatore. Jeff ha scritto che ha usato OpenSTV per condurre le elezioni e ha fornito un file di votazione (.blt) insieme a quello che contiene i dati di voto.Come posso generare file .BLT per le elezioni OpenSTV usando C#?

La mia domanda è: come si crea un file .BLT in C#?

Qui ci sono due modi in cui posso pensare che la pagina di voto lo ha fatto:

  • La pagina di voto aggiunti ogni voto in un database SQL, e quindi in qualche modo, questi voti sono stati esportati in un file .blt dopo la votazione era finita. Come però? Come posso fare questo?
  • Oppure, la pagina di votazione ha creato il file e poi aggiunto ad esso ogni volta che qualcuno ha votato. Sono sicuro che questo NON è il modo in cui la pagina di voto ha funzionato, perché è completamente invalicabile, ma come posso farlo in C#?

Sono interessato a scoprire come funzionano entrambe le possibilità e come posso farlo in C#. Grazie in anticipo. Oh, e spero che Jeff vede questa domanda, perché non aveva probabilmente hanno una grande risposta ...

risposta

21

La migliore spiegazione del formato di file BLT è qui:

 
    4 2   # four candidates are competing for two seats 
    -2   # Bob has withdrawn (optional) 
    1 4 1 3 2 0 # first ballot 
    1 2 4 1 3 0 
    1 1 4 2 3 0 # The first number is the ballot weight (>= 1). 
    1 1 2 4 3 0 # The last 0 is an end of ballot marker. 
    1 1 4 3 0 # Numbers in between correspond to the candidates 
    1 3 2 4 1 0 # on the ballot. 
    1 3 4 1 2 0 
    1 3 4 1 2 0 # Chuck, Diane, Amy, Bob 
    1 4 3 2 0 
    1 2 3 4 1 0 # last ballot 
    0   # end of ballots marker 
    "Amy"  # candidate 1 
    "Bob"  # candidate 2 
    "Chuck"  # candidate 3 
    "Diane"  # candidate 4 
    "Gardening Club Election" # title 

Tutto quello che ho fatto è stato

  1. Eseguire una query ad-hoc in SQL Management Studio per ottenere il voto risultati
  2. risultati copia-incollati in un file di testo (output è delimitato da tabulazioni di default)
  3. scritto un piccolo 50 lin e C# app convertire da query in formato BLT
+0

Jeff, quando OpenSTV convertito alla licenza proprietaria più restrittiva, si tratta fondamentalmente portato giù tutte le voci di codice & Wiki (il codice sorgente per la versione GPL di OpenSTV che distribuiamo è non è più disponibile neanche). Ho rimosso il collegamento poiché (per fortuna) l'hai riepilogato. Il formato di tale file è estremamente difficile da trovare. –

+0

Penso che dovremmo anche ripetere ciò che abbiamo discusso in chat a beneficio di quelli che stanno arrivando per semplificare il "formato" di una determinata linea: "(il commento va qui) W vv ... v 0' dove' W' è il il peso del voto e 'vv ... v' sono i voti individuali, a partire da 1.N voti. – jcolebrand

+3

Sono anche un po 'confuso sul peso della scheda elettorale. Se prendiamo l'elezione SO come esempio, in quali circostanze il peso della votazione non sarà lo stesso per ogni ballottaggio? –