2010-02-10 18 views
15

Właśnie pobrałem OpenSTV po obejrzeniu najnowszego wpisu na blogu SO, dotyczącego wyników wyborów moderatora. Jeff napisał, że użył OpenSTV do przeprowadzenia wyborów i dostarczył plik głosowania (.blt) wraz z nim, który zawiera dane głosowania.Jak wygenerować pliki .BLT dla wyborów OpenSTV za pomocą C#?

Moje pytanie brzmi: w jaki sposób utworzyć plik .BLT w języku C#?

Oto dwa sposoby, że mogę myśleć, że strona głosowanie to zrobił:

  • Strona głosowania każdy głos dodany do bazy danych SQL, a następnie jakoś te głosy były eksportowane do pliku .BLT po zakończeniu głosowania. Jak jednak? Jak mogę to zrobić?
  • Strona głosowania utworzyła plik, a następnie dodała go za każdym razem, gdy ktoś głosował. Jestem pewien, że nie jest tak, jak działała strona do głosowania, ponieważ jest całkowicie nie skalowalna, ale jak mogę to zrobić w C#?

Chciałbym dowiedzieć się, jak działają obie możliwości i jak mogę to zrobić w języku C#. Z góry dziękuję. Aha, i mam nadzieję, że Jeff widzi to pytanie, dlatego że pewnie mają wielki odpowiedź ...

Odpowiedz

21

Najlepszym wyjaśnieniem formacie BLT jest tutaj:

 
    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 

Ja tylko

  1. Wykonać zapytania ad-hoc w SQL Management Studio, aby uzyskać wyniki
  2. kopiowaniem wklejone wyników głosowania do pliku tekstowego (wyjście jest tabulatorami domyślnie)
  3. napisałem mały 50 Lin e C# aplikacja do konwersji z zapytania do formatu BLT
+0

Jeff, kiedy OpenSTV przekonwertował na bardziej restrykcyjną licencję prawną, w zasadzie usunęli wszystkie wpisy kodu i wiki (kod źródłowy do wersji OpenSTV GPL, którą dystrybuujemy jest nie są już dostępne). Usunąłem link, ponieważ (na szczęście) podsumowałeś to. Format tego pliku jest niezwykle trudny do znalezienia. –

+0

Myślę, że powinniśmy również powtórzyć to, co omówiliśmy na czacie, z korzyścią dla osób przybywających, aby uprościć "format" danej linii: '(komentarz tutaj) W vv ... v 0' gdzie' W' jest waga do głosowania i 'vv ... v' są indywidualnymi głosami, od 1. do N. głosów. – jcolebrand

+3

Jestem również nieco zdezorientowany na wadze do głosowania. Jeśli weźmiemy udział w wyborach SO jako przykład, w jakich okolicznościach masa do głosowania nie byłaby taka sama dla każdej karty do głosowania? –

Powiązane problemy