diff --git a/src/ballot.rs b/src/ballot.rs index 3522b49..1c8b3a9 100644 --- a/src/ballot.rs +++ b/src/ballot.rs @@ -28,6 +28,10 @@ impl Ballot { stats.both += 1; } + else if votes_candidate.len() == 0 && votes_party.len() == 1 { + stats.party_single += 1; + } + if votes_candidate.len() >= CANDIDATE_MIN.min(header.candidates.len()) { votes_candidate.sort_by(|a, b| i32::cmp(&a.0, &b.0)); votes = votes_candidate.into_iter().map(|(_,id)| id).collect_vec(); diff --git a/src/main.rs b/src/main.rs index f59b71b..c05c724 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,6 +31,7 @@ fn main() { eprintln!("Ballots:"); eprintln!(" Total: {}", counter.stats.total); eprintln!(" Above: {}, {}", counter.stats.party, Percent(counter.stats.party.into(), counter.stats.total.into())); + eprintln!(" 1 Preference: {}, {}", counter.stats.party_single, Percent(counter.stats.party_single.into(), counter.stats.total.into())); eprintln!(" Below: {}, {}", counter.stats.candidate, Percent(counter.stats.candidate.into(), counter.stats.total.into())); eprintln!(" Both: {}, {}", counter.stats.both, Percent(counter.stats.both.into(), counter.stats.total.into())); eprintln!("Quota: {}, {}", counter.get_quota(), Percent(counter.get_quota(), total)); diff --git a/src/stats.rs b/src/stats.rs index c28f470..12c594c 100644 --- a/src/stats.rs +++ b/src/stats.rs @@ -6,6 +6,7 @@ pub struct Stats { pub total: u32, pub candidate: u32, pub party: u32, + pub party_single: u32, pub both: u32, } @@ -14,6 +15,7 @@ impl Stats { Self { total: 0, party: 0, + party_single: 0, candidate: 0, both: 0, }