tsgammon-core
Version:
A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui
26 lines (25 loc) • 967 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.collectNodes = void 0;
/**
* 指定された局面について、冗長な手も含めて、手番終了時の局面を全て格納した配列を返す。
*
* 可能な手がない場合は、指定された局面だけがそのまま格納された配列が返る。
* @param node 局面
*/
function collectNodes(node) {
const hasUnusedDice = node.dices.find((dice) => !dice.used);
if (hasUnusedDice) {
const major = node.board.points
.map((_, idx) => node.majorFirst(idx))
.map((node) => (node.hasValue ? collectNodes(node) : []))
.flat();
const minor = node.board.points
.map((_, idx) => node.minorFirst(idx))
.map((node) => (node.hasValue ? collectNodes(node) : []))
.flat();
return minor.concat(major);
}
return [node];
}
exports.collectNodes = collectNodes;