Reference · Rules, solvers and generation
layoutOffunction
The layout and answer the lines leave: their ends as stones, lettered in
reading order, with whatever else the board has — blocked cells, bridges
(in two lines' paths, drawn +) and walls.
Import it
import { layoutOf } from "@johnmorrisdotca/tsunagi";
Definition
function layoutOf(size: number, paths: readonly number[][], extras?: LinkExtras): { layout: string; answer: string; }
Parameters
| Name | Type | Description |
|---|---|---|
size | number | The number of cells on each side of the board. |
paths | readonly number[][] | The complete grid-filling cell paths. |
extras (optional) | LinkExtras | Optional blocked cells and native twists. |
Returns
{ layout: string; answer: string; }
The layout and answer the lines leave: their ends as stones, lettered in reading order, with whatever else the board has — blocked cells, bridges (in two lines' paths, drawn +) and walls.
Examples
import { TSUNAGI_4 } from "@johnmorrisdotca/tsunagi/levels-4";
import { decodeLayout, layoutOf, linesOfAnswer } from "@johnmorrisdotca/tsunagi";
const givens = TSUNAGI_4[0][0];
const answer = TSUNAGI_4[0][1];
const layout = decodeLayout(givens,4)!;
const solvedLines = linesOfAnswer(layout,answer)!;
console.log(layoutOf(4,solvedLines.map(line=>[...line])));{ layout: 'A..AB..BC..CD..D', answer: 'AAAABBBBCCCCDDDD' }What it prints (run when this page was built)