JSPM

highest-averages

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 23
  • Score
    100M100P100Q64428F
  • License Unlicense

Package Exports

  • highest-averages
  • highest-averages/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (highest-averages) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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
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)