20

在看到关于版主选举结果的最新 SO 博客文章后,我刚刚下载了 OpenSTV。Jeff 写道,他使用 OpenSTV 进行选举,并提供了一个包含投票数据的选票文件 (.blt)。

我的问题是:如何在 C# 中创建 .BLT 文件?

以下是我认为投票页面做到的两种方式:

  • 投票页面将每张选票添加到 SQL 数据库中,然后在投票结束后以某种方式将这些选票导出到 .BLT 文件中。怎么样?我怎样才能做到这一点?
  • 或者,投票页面创建文件,然后在每次有人投票时添加到该文件。我确定这不是投票页面的工作方式,因为它完全不可扩展,但我怎么能在 C# 中做到这一点?

我有兴趣了解这两种可能性如何工作以及如何在 C# 中做到这一点。提前致谢。哦,我希望杰夫看到这个问题,因为他可能会有一个很好的答案......

4

1 回答 1

27

BLT 文件格式的最佳解释在这里:

    4 2 # 四个候选人竞争两个席位
    -2 # Bob 已撤回(可选)
    1 4 1 3 2 0 # 第一次投票
    1 2 4 1 3 0
    1 1 4 2 3 0 # 第一个数字是选票权重(>= 1)。
    1 1 2 4 3 0 # 最后一个 0 是选票标记的结尾。
    1 1 4 3 0 # 中间的数字对应候选人
    1 3 2 4 1 0 # 在选票上。
    1 3 4 1 2 0
    1 3 4 1 2 0 # 查克、黛安、艾米、鲍勃
    1 4 3 2 0
    1 2 3 4 1 0 # 最后一票
    0 # 选票结束标记
    “艾米”#候选人1
    “鲍勃”#候选人2
    “查克”# 候选人 3
    《黛安》#候选人4
    “园艺俱乐部选举”#标题

我所做的只是

  1. 在 SQL Management Studio 中执行临时查询以获取投票结果
  2. 将结果复制粘贴到文本文件中(默认情况下输出是制表符分隔的)
  3. 编写了一个 50 行的 C# 小应用程序,将查询转换为 BLT 格式
于 2010-02-10T03:34:47.097 回答