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

replayMovesfunction

Replays a record through the engine: every position it passed through, including the ones a swap-opening decision produced. When the record runs out of decisions while a choice is pending, the chooser is assumed to have kept their colour, which is all a store without seat data can say.

Stops at the first move that will not replay, since the record no longer fits the rules from there. facts says what the moves cannot: a record read without them is taken to have had no clock, and a forfeit on it stops the replay like any other move the rules refuse.

Import it

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

Definition

function replayMoves(start: GameState, moves: readonly MoveInput[], choices?: readonly OpeningChoice[], facts?: ReplayFacts): GameState[]

Parameters

NameTypeDescription
startGameState

The initial game position used to replay the record.

movesreadonly MoveInput[]

The move record in replay order.

choices (optional)readonly OpeningChoice[]

Recorded choices made during the opening protocol.

facts (optional)ReplayFacts

Whether the original game ran a clock; needed to accept forfeits.

Returns

GameState[]

The initial position followed by every successfully replayed position; replay stops at the first refused input.

Examples

import { createGame, replayMoves } from "@johnmorrisdotca/narabe";

const state = createGame({variant:"freestyle",size:15});
console.log(replayMoves(state, [{row:7,col:7}]).length);
2

What it prints (run when this page was built)

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