highest-averages
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

highest-averages

Zero-dependency and extensible 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
1 2 3 4 5 Result
A 100* 66.66 66.66* 50* 40 3
B 70 70* 46.66 46.66 46.66* 2
C 35 35 35 35 35 0

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)

Package Sidebar

Install

npm i highest-averages

Weekly Downloads

1

Version

1.0.3

License

Unlicense

Unpacked Size

27.8 kB

Total Files

61

Last publish

Collaborators

  • omerfarukdemir