1.0.2 • Published 2 years ago

highest-averages v1.0.2

Weekly downloads
-
License
Unlicense
Repository
github
Last release
2 years ago

highest-averages

This is set of highest averages methods for allocating seats in a parliament.

Install

npm i highest-averages

Pure Example

  • Define the candidates with their vote
const a = new Candidate('A', 200)
const b = new Candidate('B', 140)
const c = new Candidate('C', 70)
  • Implement divisor function
const divisor: Divisor = new class implements Divisor {
  next (iteration: number): number {
    return iteration + 2
  }
}
  • Define the highest averages method
const highestAverage = new HighestAverage(divisor)
  • Get the results for 5 seats
const result = highestAverage
  .withSeat(5)
  .withCandidates([a, b, c])
  .apply()

result.forEach(candidate => console.log(`${candidate.name()}:${candidate.seat}`))
  • Result
A:3
B:2
C:0
  • Selection table of example
12345Result
A100*66.6666.66*50*403
B7070*46.6646.6646.66*2
C35353535350

Predefined Highest Averages Methods

  • D'Hondt
const result = new DHondt()
  .withSeat(5)
  .withCandidates([])
  .apply()
  • Sainte-Laguë
const result = new SainteLague()
  .withSeat(5)
  .withCandidates([])
  .apply()
  • Imperiali
const result = new Imperiali()
  .withSeat(5)
  .withCandidates([])
  .apply()
  • Huntington–Hill
const result = new HuntingtonHill()
  .withSeat(5)
  .withCandidates([])
  .apply()
  • Danish
const result = new Danish()
  .withSeat(5)
  .withCandidates([])
  .apply()

Election Implementations (examples)

  • Greenland general election (Inatsisartut) (2018, 2021)
  • Dutch general election (Tweede Kamer der Staten-Generaal) (2017, 2021)
  • San Marino general election (Consiglio Grande e Generale) (2019)