Nocturnal Pumpkin Maelstrom
Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

sainte-lague

2.1.1 • Public • Published

sainte-lague

An implementation of the Sainte-Laguë (also known as Webster or Schepers) method. Parliament seat allocation algorithm used in multiple countries such as Germany, Latvia, New Zealand etc…

Attention: Since some countries (like Latvia or Norway) use a modification of the algorithm instead of this vanilla version, you should check your country's electoral legislature. Furthermore, I don't take any responsibility for the accuracy of the calculated numbers, even though I'm pretty confident with my implementation.

npm version Build Status Greenkeeper badge dependency status license chat on gitter

Installation

npm install sainte-lague

Usage

const sainteLague = require('sainte-lague')
 
const electionResults = { // number of votes per party
    socialists: 130755,
    conservatives: 102068,
    liberals: 34012,
    greens: 31090,
    crazypeople: 11111
}
const seats = 420 // number of seats to be distributed
const opt = { // options, can be null
    draw: false // if a draw would be necessary to determine the seat count (e.g. 11 seats and two parties with 100 votes each), the library will throw an error, unless you set draw: true, in which case it will assert the ambiguous seat(s) randomly
}
 
const parliament = sainteLague(electionResults, seats, opt)

The parliament variable will look like this:

{
    "socialists": 178,
    "conservatives": 139,
    "liberals": 46,
    "greens": 42,
    "crazypeople": 15
}

Similar Projects

  • hare-niemeyer - Hare-Niemeyer / Hamilton / largest remainder method
  • DHondt – D'Hondt method

Contributing

If you found a bug or want to propose a feature, feel free to visit the issues page.

Install

npm i sainte-lague

DownloadsWeekly Downloads

104

Version

2.1.1

License

ISC

Unpacked Size

13.4 kB

Total Files

5

Last publish

Collaborators

  • avatar