Skip to the content

Tsunagi繋ぎ

Join each pair with a separate line and fill the board, through fixed levels or seeded puzzles.

Tsunagi means joining in Japanese. About the name

Contents

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

NameTypeDescription
layoutstring
answerstring
pairsnumber
nodesnumber

Positions the solver looked at to prove the answer is the only one.

branchesnumber

Positions where it had to try more than one way: how much guessing the level asks for.

turnsnumber

Turns in the answer's lines, over all of them: how much the lines wind.

keystring

The layout in its one spelling over all eight turns and mirrors, so two levels are never the same board.

portalsnumber
waypointsnumber
wrapboolean
blockednumber

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)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/tsunagi 1.7.0.