Exercise 2 — The tenth ballot: the nine counted ballots¶
Generated from ex02_nine_ballots.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.
Method: STAR (single winner) · 1 seat · Expected winner: Alex
Scenario¶
The base case: nine club ballots, five candidates. Scoring round: Alex 27, Bella 25, Chris 24, Eli 22, Dana 20 — Alex and Bella advance, and Alex wins the runoff 6-3. The exercise (ex02_tenth_ballot.md) then perturbs this election twice: a forgotten tenth ballot whose FAVORITE is Alex flips the win to Chris (a participation failure), and Bella withdrawing flips it to Chris too (a runoff-slot spoiler). Ballots adapted from a RangeVoting.org example, posed as an exercise in Brendan W. Sullivan, "An Introduction to the Math of Voting Methods" (2022), ch. 5.
Ballots¶
Row 1 = candidate names; each later row is one voter's 0–5 scores (a N × prefix = N identical ballots).
Alex,Bella,Chris,Dana,Eli
3,2,4,5,0 # 4 voters: Dana first, Chris close second
3,2,4,5,0
3,2,4,5,0
3,2,4,5,0
3,5,0,0,4 # 3 voters: Bella first, Eli second
3,5,0,0,4
3,5,0,0,4
3,1,4,0,5 # 2 voters: Eli first, Chris second
3,1,4,0,5
What the engine says¶
The count, step by step — the rounds and how the winner is reached:
[Divergence from STAR]
STAR = Alex
Choose-One (Plurality) = Dana (differs from STAR)
RCV-IRV = Bella (differs from STAR)
RCV-RR = Eli (differs from STAR)
Note: no ballots had tied scores, so RCV-IRV vs STAR here is a genuine
method difference, not a tie-breaking artifact.
Full round-by-round reports (generated for review):
RCV-IRV rounds: cases_tabulated/ex02_nine_ballots_RCV-IRV_tabulated.txt
RCV-RR round-robin: cases_tabulated/ex02_nine_ballots_RCV-RR_tabulated.txt
--- STAR Voting Method (single winner) ---
[STAR Voting]
Tabulating 9 ballots.
Count × Alex,Bella,Chris,Dana,Eli
4 × 3, 2, 4, 5, 0
3 × 3, 5, 0, 0, 4
2 × 3, 1, 4, 0, 5
[STAR Voting: Scoring Round]
The two highest-scoring candidates advance to the next round.
Alex -- 27 -- First place
Bella -- 25 -- Second place
Chris -- 24
Eli -- 22
Dana -- 20
Alex and Bella advance.
[STAR Voting: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
Alex -- 6 -- First place
Bella -- 3
Equal Support -- 0
Alex wins.
Runoff math:
9 ballots cast
− 0 Equal Support (no preference between the two finalists)
─
9 voters with a preference (majority = 5)
Alex 6 (67%) · Bella 3 (33%)
[STAR Voting: Winner — STAR Voting Method (single winner)]
Alex
Full audit — preference matrix, Condorcet, and score distribution¶
--- Runoff (Preference) Matrix ---
Head-to-head / pairwise comparison
Legend: For - Equal Support - Against
* indicates Top 2 Finalist
| * Alex | * Bella | Chris | Dana | Eli |
-----------------------------------------------------------------------------
* Alex > | --- |6 - 0 - 3 |3 - 0 - 6 |5 - 0 - 4 |4 - 0 - 5 |
* Bella > | 3 - 0 - 6 | --- |3 - 0 - 6 |5 - 0 - 4 |7 - 0 - 2 |
Chris > | 6 - 0 - 3 |6 - 0 - 3 | --- |2 - 3 - 4 |4 - 0 - 5 |
Dana > | 4 - 0 - 5 |4 - 0 - 5 |4 - 3 - 2 | --- |4 - 0 - 5 |
Eli > | 5 - 0 - 4 |2 - 0 - 7 |5 - 0 - 4 |5 - 0 - 4 | --- |
[Condorcet Winner]
No Condorcet winner (majority cycle: Alex > Bella > Dana > Chris > Alex)
[Score Distribution] (how many ballots gave each star rating)
Score
Candidate 5 4 3 2 1 0 | Total Avg
Alex 0 0 9 0 0 0 | 27 3.0
Bella 3 0 0 4 2 0 | 25 2.8
Chris 0 6 0 0 0 3 | 24 2.7
Dana 4 0 0 0 0 5 | 20 2.2
Eli 2 3 0 0 0 4 | 22 2.4
Everything in one file: the _tabulated mirror (regenerated on every run; every analysis forced on).
Run it yourself:
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 01_STAR/05_Practice/cases/ex02_nine_ballots.yaml
See also¶
- Methods disagree on this election — its entry in the divergence review ledger
- Vote splitting (worked set)
- Runoff reversal (worked set)
- Glossary · all cases by method
More cases in this set: ex01_district_combined · ex01_district_east · ex01_district_west · ex02_bella_exits · ex02_tenth_ballot · ex03_five_verdicts · ex04_olympics_1994 · ex05_center_squeeze · ex06_bullet_backfire · ex06_bullet_honest · ex07_vanishing_votes · ex08_minimal_reversal_2c · ex08_minimal_reversal_3c · ex09_game_night_cycle · ex10_generous · ex10_reticent · ex11_spoiler_added · ex11_two_way_base · ex12_bloc_sweep · ex12_proportional_share · ex13_approve3 · ex13_approve4 · ex13_bullet · ex13_opinions · ex14_two_novels · ex14_two_novels_fullranks · ex15_approval_pairwise · ex15_approval_yes_no · ex15_score_profile