Documentation
¶
Overview ¶
Package dutch implements the FIDE Dutch Swiss pairing system (C.04.3).
The Dutch system is the most widely used Swiss pairing system in chess. Players are grouped by score, then paired within brackets using transposition and exchange algorithms subject to 21 quality criteria.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNoPairingPossible = errors.New("no valid pairing exists for the remaining players")
ErrNoPairingPossible is returned when no valid pairing can be found.
var ErrTooFewPlayers = errors.New("swiss pairing requires at least 2 active players")
ErrTooFewPlayers is returned when there aren't enough active players.
Functions ¶
This section is empty.
Types ¶
type Options ¶
type Options struct {
// Acceleration selects Baku acceleration mode.
// Values: "none" (default), "baku".
Acceleration *string `json:"acceleration,omitempty"`
// TopSeedColor forces the top seed's color in round 1.
// Values: "auto" (default), "white", "black".
TopSeedColor *string `json:"topSeedColor,omitempty"`
// ForbiddenPairs lists player ID pairs that must not be paired together.
ForbiddenPairs [][]string `json:"forbiddenPairs,omitempty"`
}
Options holds Dutch-specific pairing configuration. All fields use pointer-nil pattern: nil = use default.
func ParseOptions ¶
ParseOptions converts a generic map[string]any into typed Options.
func (Options) WithDefaults ¶
WithDefaults returns a copy of options with defaults applied for nil fields.
type Pairer ¶
type Pairer struct {
// contains filtered or unexported fields
}
Pairer implements the chesspairing.Pairer interface for FIDE Dutch Swiss pairing.
func NewFromMap ¶
NewFromMap creates a new Dutch pairer from a generic options map.
func (*Pairer) Pair ¶
func (p *Pairer) Pair(_ context.Context, state *chesspairing.TournamentState) (*chesspairing.PairingResult, error)
Pair generates pairings for the next round using the FIDE Dutch system (C.04.3).
Algorithm:
- Build PlayerState for all active players
- Build score groups (all players enter matching pool)
- Global Blossom matching (PairBracketsGlobal) — includes Stage 0.5 completability pre-matching for bye determination with odd player count
- Order boards per FIDE A.6
- Allocate colors for all paired games
- Unmatched player (if any) receives PAB
- Return PairingResult