本文へ移動

Kazu数

検証済みの数独や論理パズルを作り、標準の規則とヒントを読み、盤を描いたり埋め込んだりできます。

「数」は数字を表す言葉です。 名前について(英語)

目次

リファレンス · 数字パズルのエンジン

KazuGame型

リファレンスの説明と例は英語です。見出しと目次は日本語です。

A PUZZLE IN PLAY, as pure functions: what has been written, the pencil marks, and how to take a step back. Every function returns a new game and leaves the one it was given as it was, so a page can keep them as its history, and a server can replay a solve with no page at all. mountKazu is these functions with a drawing and a finger on them.

インポート

import type { KazuGame } from "@johnmorrisdotca/kazu";

定義

type KazuGame = {
    kind: KazuKind;
    size: number;
    givens: string;
    printed: KazuGivens;
    entries: readonly number[];
    notes: readonly number[];
    past: readonly {
        entries: readonly number[];
        notes: readonly number[];
    }[];
};

メンバー

名前型説明
kind"number-place" | "jigsaw" | "diagonal" | "sum-cages" | "more-or-less" | "towers"
sizenumber
givensstring

The puzzle's givens code, as made.

printedKazuGivens

What the puzzle was printed with.

entriesreadonly number[]

What the player has written, row-major, 0 where nothing; always 0 on a printed cell.

notesreadonly number[]

Pencil marks, a bit mask a cell: bit v is the note v. Always 0 on a printed cell or a cell with a number in it.

pastreadonly { entries: readonly number[]; notes: readonly number[]; }[]

The grids before this one, newest last, for Undo.

例

import type { KazuGame, KazuPuzzle } from "@johnmorrisdotca/kazu";
import { newKazuGame } from "@johnmorrisdotca/kazu";

const puzzle: KazuPuzzle = {"kind":"number-place","size":4,"level":"easy","seed":42,"givens":"14..2..1412.3..4","solution":"1432234141233214"};
const kind = puzzle.kind;
const size = puzzle.size;
const givens = puzzle.givens;
const game = newKazuGame(kind,size,givens)!;
const value: KazuGame = game;
console.log(value);
{
  kind: 'number-place',
  size: 4,
  givens: '14..2..1412.3..4',
  printed: {
    kind: 'number-place',
    size: 4,
    regions: [
      0, 0, 1, 1, 0, 0,
      1, 1, 2, 2, 3, 3,
      2, 2, 3, 3
    ],
    diagonals: false,
    cages: null,
    marks: [],
    clues: null,
    cells: [
      1, 4, 0, 0, 2, 0,
      0, 1, 4, 1, 2, 0,
      3, 0, 0, 4
    ]
  },
  entries: [
    0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0,
    0, 0, 0, 0
  ],
  notes: [
    0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0,
    0, 0, 0, 0
  ],
  past: []
}

出力(このページを作ったときに実行した結果)

ソースを見るGitHub で編集@johnmorrisdotca/kazu 2.1.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。