{-
Performs a single step of the convergent iterative scheme on a single candidate with: Quota, (Candidate, (Weight, Votes))
returns a (Candidate, Weight) that can be used to calculate the new excess, quota and votes
-}
convergeScore :: Double -> (Candidate, (CandidateState, Double)) -> (Candidate, CandidateState)
convergeScore _ (Lost, _) = (Lost, Hopeful)
convergeScore _ (c,(Excluded, _)) = (c, Excluded)
convergeScore quota (candidate, (Hopeful, alottedVotes))
| quota > alottedVotes = (candidate, Hopeful)