#计数 #投票 #选举 #投票 #选票

tallystick

tallystick 是一个用于计票的 Rust 库。

8 个版本

0.4.3 2021 年 7 月 11 日
0.4.2 2021 年 7 月 10 日
0.3.1 2020 年 2 月 21 日
0.2.0 2020 年 2 月 21 日
0.1.1 2020 年 2 月 21 日

#319 in 科学

每月 25 下载

MIT/Apache

185KB
2.5K SLoC

tallystick

docs Build Status codecov patreon flattr

tallystick 是一个用于计票的 Rust 库,目前仍在开发中。

当前状态非常不稳定。目前不推荐使用。以下复选框列出了已完成的特性列表。

目标

  1. 易用 - 使用简单。
  2. 快速 - 成为世界上最快的一般用途计票库。
  3. 安全 - 没有未定义的行为。
  4. 完整 - 支持所有知名投票方法。
  5. 确定性 - 重复执行相同的计票应始终产生相同的结果。
  6. 泛型 - 在候选人和计数类型上都是泛型的。

特性

  • wasm 支持在浏览器中使用,或在区块链智能合约中使用。
  • rational 支持使用有理分数进行精确计票,而不是使用浮点数。
  • fixed_point 支持十进制定点计票,这是某些法规所要求的。
  • ffi 支持从其他编程语言调用。
  • alloc 支持嵌入式和其他应用程序,其中存在分配器但没有标准库。

支持的计票方法

状态¹ 计票方法 支持的变体 性能² 备注
复数 120 百万次/秒 第一顺位投票制 (FPTP)
得分 3 百万次/秒
批准 4 百万次/秒
STV Newland-Britton, Meek, Warren 3 百万次/秒 单次可转让选票
CPO-STV
即时重选
条件
补充
孔多塞 2 百万次/秒
Copeland
Schulze 赢家、差距、比率 2 百万次/秒
Schulze STV
Kemeny–Young
Minimax
Borda 经典、Dowdall、修改 3 百万次/秒
Borda - Nanson 经典、Dowdall、修改
Borda - Baldwin 经典、Dowdall、修改
Dodgson Quick, Tideman
排序对 差距、赢家
STAR
多数判断
D'Hondt Sainte-Laguë, Huntington-Hill, Quota
  1. ✓ 表示已完成,⚠ 表示正在进行中,空白表示尚未开始但计划支持。
  2. 单线程性能以每秒计票次数衡量。在 2017 年 MacBook Pro 上进行基准测试。

贡献者

依赖项

约2.6–3.5MB
约64K SLoC