Reference · Number-puzzle engines
KazuGivenstype
WHAT A PUZZLE WAS PRINTED WITH, read from its givens code: the printed cells, and for a Jigsaw its regions, for Sum Cages its cages, for More or Less its marks, for Towers its clues. Each kind writes them after the cells. The drawing, the play and the hint all read a puzzle through this.
Import it
import type { KazuGivens } from "@johnmorrisdotca/kazu";
Definition
type KazuGivens = {
kind: KazuKind;
size: number;
cells: number[];
regions: number[] | null;
diagonals: boolean;
cages: Cage[] | null;
marks: Mark[];
clues: TowerClues | null;
};
Members
| Name | Type | Description |
|---|---|---|
kind | "number-place" | "jigsaw" | "diagonal" | "sum-cages" | "more-or-less" | "towers" | |
size | number | |
cells | number[] | The printed numbers, row-major; 0 where nothing is printed. |
regions | number[] | null | The region each cell is drawn in (a box, or a Jigsaw's own region), which the heavy rules go round; null for More or Less and Towers. |
diagonals | boolean | Whether the two long diagonals are groups too (Diagonal). |
cages | Cage[] | null | Sum Cages: the cages and their sums. |
marks | Mark[] | More or Less: which of two neighbouring cells is bigger. |
clues | TowerClues | null | Towers: the clues round the edge. |
Examples
import type { KazuGivens, KazuPuzzle } from "@johnmorrisdotca/kazu";
import { readGivens } 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 printed = readGivens(kind,size,givens)!;
const value: KazuGivens = printed;
console.log(value);{
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
]
}What it prints (run when this page was built)