Reference · Rules, solvers and generation
ReducedCandidatetype
What a made board has besides its lines.
Import it
import type { ReducedCandidate } from "@johnmorrisdotca/tsunagi";
Definition
type ReducedCandidate = LinkCandidate & {
portals: number;
waypoints: number;
wrap: boolean;
blocked: number;
};
Members
| Name | Type | Description |
|---|---|---|
layout | string | |
answer | string | |
pairs | number | |
nodes | number | Positions the solver looked at to prove the answer is the only one. |
branches | number | Positions where it had to try more than one way: how much guessing the level asks for. |
turns | number | Turns in the answer's lines, over all of them: how much the lines wind. |
key | string | The layout in its one spelling over all eight turns and mirrors, so two levels are never the same board. |
portals | number | |
waypoints | number | |
wrap | boolean | |
blocked | number |
Examples
import { TSUNAGI_4 } from "@johnmorrisdotca/tsunagi/levels-4";
import { decodeLayout, symmetryKey, turnsIn } from "@johnmorrisdotca/tsunagi";
import type { ReducedCandidate } from "@johnmorrisdotca/tsunagi";
const givens = TSUNAGI_4[0][0];
const answer = TSUNAGI_4[0][1];
const layout = decodeLayout(givens,4)!;
const value: ReducedCandidate = {...{layout:givens,answer,pairs:layout.ends.length,nodes:1,branches:0,turns:turnsIn(answer,layout),key:symmetryKey(givens,4)},portals:0,waypoints:0,wrap:false,blocked:0};
console.log(value);{
layout: 'A..AB..BC..CD..D',
answer: 'AAAABBBBCCCCDDDD',
pairs: 4,
nodes: 1,
branches: 0,
turns: 0,
key: 'A..AB..BC..CD..D',
portals: 0,
waypoints: 0,
wrap: false,
blocked: 0
}What it prints (run when this page was built)