#choice #instant #aims #input #mutate #few #voter

rcir

一个用于运行排序选择即时决选选举的库。旨在减少数据类型要求,并避免修改输入

2个不稳定版本

使用旧的Rust 2015

0.3.0 2019年3月26日
0.2.0 2018年9月20日

#5#mutate

每月 28次下载

MIT 协议

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)的剩余选票,这些选票来自仍留有候选人的选民。

无运行时依赖项