Skip to the content

Narabe並べ

Play forty-eight abstract board games through immutable moves, legal choices and replayable records.

Narabe means arranging in Japanese, as in gomoku-narabe: five in a row. About the name

Contents

Reference · Rules and records

RUSSIAN_DRAUGHTS_RULESconstant

Russian draughts (shashki), from the Russian Draughts Federation's rules (ФШР, shashki.ru) and the FMJD/IDF rules for 8×8 draughts: men take both ways, kings fly, any capture may be chosen whatever it takes (FMJD-64 4.13), and a man that reaches the far row in the middle of a capture is crowned there and carries on capturing as a king (4.14).

Draws, as the federation writes them: a third repetition with the same side to move; three kings or more that have not taken a lone king by their fifteenth move, counted from when that balance arose; and any ending in which both sides have a king and nothing is taken or crowned for five moves (two or three pieces on the board), thirty (four or five) or sixty (six or seven). Fifteen moves of kings alone is rules/noProgress.ts.

NOT APPLIED: the five-move count for three pieces against a lone king on the main road, for the reason given at INTERNATIONAL_DRAUGHTS_RULES; the "clearly drawn position", which is an arbiter's judgement and not a count; and the three-kings rule's "or kings and men", which the federation's own text leaves unclear. It is read as kings alone, the narrower reading, so it never draws a game it might not apply to.

Import it

import { RUSSIAN_DRAUGHTS_RULES } from "@johnmorrisdotca/narabe";

Definition

const RUSSIAN_DRAUGHTS_RULES: CheckersRules = {
    menRows: 3,
    menCaptureBackward: true,
    flyingKings: true,
    captureChoice: CAPTURE_CHOICES.free,
    crownMidCapture: CROWN_MID_CAPTURE.continues,
    repetitionDraw: 3,
    endgameCounts: [
        {
            kind: ENDGAME_COUNT_KINDS.endings,
            restartsOnChange: true,
            endings: Array.from({ length: 10 }, (_, extra) => [{ kings: 3 + extra, men: 0 }, LONE_KING] as const),
            movesEach: 15,
        },
        { kind: ENDGAME_COUNT_KINDS.balance, pieces: [2, 3], movesEach: 5 },
        { kind: ENDGAME_COUNT_KINDS.balance, pieces: [4, 5], movesEach: 30 },
        { kind: ENDGAME_COUNT_KINDS.balance, pieces: [6, 7], movesEach: 60 },
    ],
}

Members

NameTypeDescription
menRowsnumber

Rows of men each side starts with, on the dark squares of its own side of the board.

menCaptureBackwardboolean

Whether a man may capture backward as well as forward. It always steps forward only.

flyingKingsboolean

Whether a king flies: moves any distance along an open diagonal, and takes a piece at any distance, landing on any empty square beyond it. Otherwise a king moves one square and jumps an adjacent piece, as a man does, both ways.

captureChoiceCaptureChoice
crownMidCaptureCrownMidCapture
repetitionDrawnumber | null

The same position standing for this many times, with the same side to move, is a draw. Null where this game is not played with a repetition rule here.

endgameCountsreadonly EndgameCount[]

The endings the stronger side must win within a count of moves, or draw.

Examples

import { RUSSIAN_DRAUGHTS_RULES } from "@johnmorrisdotca/narabe";
console.log(RUSSIAN_DRAUGHTS_RULES);
{
  menRows: 3,
  menCaptureBackward: true,
  flyingKings: true,
  captureChoice: 'free',
  crownMidCapture: 'continues',
  repetitionDraw: 3,
  endgameCounts: [
    {
      kind: 'endings',
      restartsOnChange: true,
      endings: [Array],
      movesEach: 15
    },
    { kind: 'balance', pieces: [Array], movesEach: 5 },
    { kind: 'balance', pieces: [Array], movesEach: 30 },
    { kind: 'balance', pieces: [Array], movesEach: 60 }
  ]
}

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/narabe 1.3.0.