Как создать файлы .BLT для выборов OpenSTV с помощью C#?

StackOverflow https://stackoverflow.com/questions/2233695

  •  19-09-2019
  •  | 
  •  

Вопрос

Я только что скачал OpenSTV после просмотра последней записи в блоге SO о результатах выборов модератора.Джефф написал, что он использовал OpenSTV для проведения выборов, и предоставил вместе с ним файл бюллетеня (.blt), содержащий данные голосования.

Мой вопрос:как создать файл .BLT на C#?

Вот два способа, которыми я могу представить, что страница голосования сделала это:

  • Страница голосования добавляла каждый голос в базу данных SQL, а затем каким-то образом эти голоса экспортировались в файл .BLT после окончания голосования.Но как?Как я могу это сделать?
  • Или страница голосования создала файл и затем добавляла его каждый раз, когда кто-то голосовал.Я уверен, что страница голосования НЕ так работала, потому что она совершенно немасштабируема, но как я мог сделать это на C#?

Мне интересно узнать, как работают обе возможности и как это сделать на C#.Заранее спасибо.О, и я надеюсь, что Джефф увидит этот вопрос, потому что у него, вероятно, будет отличный ответ...

Это было полезно?

Решение

Лучшее объяснение формата файла BLT находится здесь:

    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

Все, что я сделал, это

  1. Выполните специальный запрос в SQL Management Studio, чтобы получить результаты голосования.
  2. Скопировать и вставить результаты в текстовый файл (вывод по умолчанию разделен табуляцией)
  3. Написал небольшое приложение на C# из 50 строк для преобразования запроса в формат BLT.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top