I forget how many stupid versions I have already published.
The voters list on their ballots so many ranks as they choose. Each rank lists one or more candidates and indicates support for or opposition to those candidates listed. It must be support for all or opposition to all, within the rank. The order of the ranks on the ballot signifies.
Tallying proceeds in rounds, where each round eliminates a candidate. The last candidate not eliminated wins the election.
Each round begins by zeroing a counter for each candidate not already eliminated. The round then examines the ballots. For each ballot, the round must determine the earliest rank (the one closest to the top of the ballot, given that the voters are using a language that is written from top to bottom, such as English) such that each candidate named in that rank is still in the running (i. e. has not already been eliminated by a prior round). If this rank declares support for one or more candidates, each of those identified candidates receives a point and a point is deducted from each of the counters of the other candidates. If the rank declares opposition to one or more candidates, a point is deducted from each indicated candidate’s counter and one is added to the counter of each of the other candidates still in the running. Once the rank is interpreted in this way, the processing of the ballot is complete for the current round, and the round proceeds onward to the next ballot, if any. Once all the ballots are processed in this way, the round eliminates the candidate having the lowest total on her counter, and that completes the round.