Nitroglycerin Pickle Machine

    hare-niemeyer

    3.0.0 • Public • Published

    hare-niemeyer

    An implementation of the Hare-Niemeyer (also known as Hamilton or largest remainder) method. Parliament seat allocation algorithm used in multiple countries around the world.

    Attention: Since some countries 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 License Contact me

    Installation

    npm install hare-niemeyer

    Usage

    This package is ESM only.

    import hareNiemeyer from 'hare-niemeyer'
    
    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 parliament = hareNiemeyer(electionResults, seats, draw=true)

    The parliament variable will look like this:

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

    The draw option changes the behaviour of the algorithm in case of equal quota remainders for multiple parties. Usually, in this case the elections administrator would draw by lot which party gets the remaining seat. The script does this for you if the draw option is true or not set at all (default behaviour). If you change the option to false, the script will return the raw quotas for the involved parties instead:

    const electionResults = { // number of votes per party
    	socialists: 10,
    	conservatives: 15,
    	liberals: 1,
    	greens: 4
    }
    const seats = 100 // number of seats to be distributed
    
    const parliament = hareNiemeyer(electionResults, seats, false)

    In this case, the parliament variable looks like this:

    {
    	"socialists": 33.333333333333,
    	"conservatives": 50,
    	"liberals": 3.333333333333,
    	"greens": 13.333333333333
    }

    Similar Projects

    Contributing

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

    Install

    npm i hare-niemeyer

    DownloadsWeekly Downloads

    1,055

    Version

    3.0.0

    License

    ISC

    Unpacked Size

    6.98 kB

    Total Files

    4

    Last publish

    Collaborators

    • juliuste