lineRunsfunction
A line as the runs it is drawn in, each a list of points through its cells' middles. On a board that wraps, a step across the join ends one run a cell out beyond the edge (in the ghost) and starts the next a cell out beyond the other edge, so the line is seen to leave and come back. Through a portal the line is two runs: it ends just inside the ring it went into, and the next starts just inside the ring it comes out of, going on the same way.
Import it
import { lineRuns } from "@johnmorrisdotca/tsunagi/draw";
Definition
function lineRuns(layout: LinkLayout, geometry: TsunagiGeometry, line: readonly number[]): TsunagiPoint[][]
Parameters
| Name | Type | Description |
|---|---|---|
layout | LinkLayout | The decoded native board and its rule settings. |
geometry | TsunagiGeometry | The board-to-pixel geometry. |
line | readonly number[] | The cell sequence of one native line. |
Returns
TsunagiPoint[][]
A line as the runs it is drawn in, each a list of points through its cells' middles. On a board that wraps, a step across the join ends one run a cell out beyond the edge (in the ghost) and starts the next a cell out beyond the other edge, so the line is seen to leave and come back. Through a portal the line is two runs: it ends just inside the ring it went into, and the next starts just inside the ring it comes out of, going on the same way.
Examples
import { TSUNAGI_4 } from "@johnmorrisdotca/tsunagi/levels-4";
import { decodeLayout, linesOfAnswer } from "@johnmorrisdotca/tsunagi";
import { lineRuns, tsunagiGeometry } from "@johnmorrisdotca/tsunagi/draw";
const givens = TSUNAGI_4[0][0];
const answer = TSUNAGI_4[0][1];
const layout = decodeLayout(givens,4)!;
const solvedLines = linesOfAnswer(layout,answer)!;
const geometry = tsunagiGeometry(layout);
console.log(lineRuns(layout,geometry,solvedLines[0]));[
[
{ x: 64, y: 64 },
{ x: 164, y: 64 },
{ x: 264, y: 64 },
{ x: 334, y: 64 }
]
]What it prints (run when this page was built)