https://github.com/mieuxvoter/majority-judgment-library-dart
Dart package to rank proposals according to Majority Judgment, using a score-based algorithm for performance and scalability
https://github.com/mieuxvoter/majority-judgment-library-dart
dart majority-judgment political-science polls
Last synced: about 1 month ago
JSON representation
Dart package to rank proposals according to Majority Judgment, using a score-based algorithm for performance and scalability
- Host: GitHub
- URL: https://github.com/mieuxvoter/majority-judgment-library-dart
- Owner: MieuxVoter
- License: mit
- Created: 2021-10-12T16:15:43.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-10-14T06:30:13.000Z (over 4 years ago)
- Last Synced: 2025-06-14T02:02:46.308Z (12 months ago)
- Topics: dart, majority-judgment, political-science, polls
- Language: Dart
- Homepage:
- Size: 27.3 KB
- Stars: 1
- Watchers: 6
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Majority Judgment for Dart
[](LICENSE)
[](https://github.com/MieuxVoter/majority-judgment-library-dart/releases)
[](https://github.com/MieuxVoter/majority-judgment-library-dart/actions/workflows/dart.yml)
[](https://www.codefactor.io/repository/github/mieuxvoter/majority-judgment-library-dart)

[](https://discord.gg/rAAQG9S)
This Dart package helps to resolve polls using [Majority Judgment](https://fr.wikipedia.org/wiki/Jugement_majoritaire).
## Features
- Efficient Majority Judgment algorithm, scales well to billions of participants
- Configure whether to favor _adhesion_ or _contestation_ (default)
- Balance proposal tallies using a static default grade or the median grade[^median_todo]
- Room for Central Judgment and Usual Judgment
- Unit-tested (run `dart test`)
[^median_todo]: TODO, see #1 ; it's a good first issue if you want to contribute
## Get started
``` dart
import 'package:majority_judgment/majority_judgment.dart';
void main() {
final pollTally = PollTally([
[1, 2, 4, 2, 1], // Proposal A, from "worst" grade to "best" grade
[1, 2, 4, 1, 2], // Proposal B
[3, 1, 3, 1, 2], // Proposal C
[1, 2, 4, 2, 1], // Proposal D (equal to A)
]);
final mj = MajorityJudgmentResolver();
final result = mj.resolve(pollTally);
print(result.proposalsResults.map((ProposalResult p) => p.rank));
//> (2, 1, 4, 2)
print(result.sortedProposalsResults.map((ProposalResult p) => p.index));
//> (1, 0, 3, 2)
}
```
## Contribute
Usual git flow: clone, tinker, request a merge.
## Authors
This package was made by [MieuxVoter](https://mieuxvoter.fr/), a french nonprofit.