Как создать файлы .BLT для выборов OpenSTV с помощью C#?
Вопрос
Я только что скачал 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
Все, что я сделал, это
- Выполните специальный запрос в SQL Management Studio, чтобы получить результаты голосования.
- Скопировать и вставить результаты в текстовый файл (вывод по умолчанию разделен табуляцией)
- Написал небольшое приложение на C# из 50 строк для преобразования запроса в формат BLT.
Не связан с StackOverflow