1.1.1 • Published 5 months ago

chess-matchmaker v1.1.1

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

♟️ Chess Matchmaker - Tournament Scheduler

Chess Matchmaker generates tournament schedules using different formats:

  • Round Robin (Everyone plays against everyone)
  • Rating-Based Groups (Players are grouped based on their rating and play Round Robin)
  • Knockout (Single-elimination matches until a winner is determined)

This package automatically handles an odd number of players by adding a BYE when necessary.


Installation

You can use it in two ways:

1️⃣ Import functions in your project

2️⃣ Use the CLI directly from the terminal


Using as a Library in Your Project

npm install chess-matchmaker

Or with yarn:

yarn add chess-matchmaker

After installing, you can import the functions like this:

import { roundRobin, ratingBasedGroups, knockout } from 'chess-matchmaker';

1️⃣ Round Robin

Every player plays against every other player exactly once.

Example Input:

const players = ['Alice', 'Bob', 'Charlie'];
const schedule = roundRobin(players);

Example Output:

[
  {
    round: 1,
    matches: [
      { gameNumber: 1, player1: 'Alice', player2: 'Bob' },
      { gameNumber: 2, player1: 'Charlie', player2: 'BYE' },
    ],
  },
  {
    round: 2,
    matches: [
      { gameNumber: 3, player1: 'Alice', player2: 'Charlie' },
      { gameNumber: 4, player1: 'Bob', player2: 'BYE' },
    ],
  },
  {
    round: 3,
    matches: [
      { gameNumber: 5, player1: 'Bob', player2: 'Charlie' },
      { gameNumber: 6, player1: 'Alice', player2: 'BYE' },
    ],
  },
];

2️⃣ Rating-Based Groups

Players are grouped by their rating and play Round Robin within their group. Groups are balanced so that they have a similar number of players.

Example Input:

const players = [
  { name: 'Alice', rating: 1800 },
  { name: 'Bob', rating: 1700 },
  { name: 'Charlie', rating: 1600 },
  { name: 'David', rating: 1500 },
];
const schedule = ratingBasedGroups(players, 2);

Example Output:

{
  groups: [
    [ { name: "Alice", rating: 1800 }, { name: "Bob", rating: 1700 } ],
    [ { name: "Charlie", rating: 1600 }, { name: "David", rating: 1500 } ]
  ],
  rounds: [
    {
      round: 1,
      matches: [
        { gameNumber: 1, player1: "Alice", player2: "Bob" },
        { gameNumber: 2, player1: "Charlie", player2: "David" }
      ]
    },
    {
      round: 2,
      matches: [
        { gameNumber: 3, player1: "Alice", player2: "BYE" },
        { gameNumber: 4, player1: "Charlie", player2: "BYE" }
      ]
    }
  ]
}

3️⃣ Knockout Tournament Players compete in 1v1 matches. Winners advance to the next round.

Example Input:

const players = ['Alice', 'Bob', 'Charlie', 'David'];
const schedule = knockout(players);

Example Output:

[
  {
    round: 1,
    matches: [
      { gameNumber: 1, player1: 'Alice', player2: 'Bob' },
      { gameNumber: 2, player1: 'Charlie', player2: 'David' },
    ],
  },
  {
    round: 2,
    matches: [{ gameNumber: 3, player1: 'Winner Game 1', player2: 'Winner Game 2' }],
  },
];

Using the CLI

You can run the Chess Matchmaker CLI to generate a tournament schedule without writing code.

npm install -g chess-matchmaker

Or with yarn:

yarn global add chess-matchmaker

1.1.1

5 months ago

1.1.0

5 months ago

1.0.0

5 months ago