2个不稳定版本
使用旧的Rust 2015
0.3.0 | 2019年3月26日 |
---|---|
0.2.0 | 2018年9月20日 |
#5 在 #mutate
每月 28次下载
12KB
249 行
RCIR
RCIR是一个用Rust编写的排序选择即时决选库。还在开发中。库位于rcir目录下,示例二进制文件位于rcir_csv目录下。
在最后一名并列且没有获胜者的情况下,所有最后一名的候选人都会被移除,因此它不是一个“保密证明”方法 保密效果 + 防止策略投票
RCIR不会修改输入,并旨在对数据类型施加尽可能少的限制
示例
选民A | 选民B | 选民C | 选民D | 选民E |
---|---|---|---|---|
Bob | Sue | Bill | Bob | Sue |
Bill | Bob | Sue | Bill | Bob |
Sue | Bill | Bob | Sue | Bill |
这将导致在任何操作模式下都是ElectionResult::Winner(&"sue")
并列示例
选民A | 选民B |
---|---|
Bob | Sue |
这将导致在任何操作模式下都是ElectionResult::Tie([&"Bob", &"Sue"])
操作模式
RCIR有两种操作模式
- 完整多数
- 剩余多数
这两个之间的区别最好用以下示例说明
开始
选民A | 选民B | 选民C | 选民D | 选民E |
---|---|---|---|---|
Alice | Bob | Chris | Sam | Alice |
Sam | Sam | Bob | Chris | Chris |
第一轮之后
Bob、Chris和Sam被淘汰(得票最低)
选民A | 选民B | 选民C | 选民D | 选民E |
---|---|---|---|---|
Alice | _ | _ | _ | Alice |
_ | _ | _ | _ | _ |
在CompleteMajority
下,没有获胜者,结果将是:ElectionError::NoMajorityWinner
,因为Alice有2/5的选票,低于完整多数的50%门槛。
在RemainingMajority
下,结果将是ElectionResult::Winner(&"Alice")
,因为Alice拥有100%(2/2)的剩余选票,这些选票来自仍留有候选人的选民。