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

LinkCandidatetype

One candidate: its layout and answer codes, and what the solver said about it.

Import it

import type { LinkCandidate } from "@johnmorrisdotca/tsunagi";

Definition

type LinkCandidate = {
    layout: string;
    answer: string;
    pairs: number;
    nodes: number;
    branches: number;
    turns: number;
    key: string;
};

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.

Examples

import { TSUNAGI_4 } from "@johnmorrisdotca/tsunagi/levels-4";
import { decodeLayout, symmetryKey, turnsIn } from "@johnmorrisdotca/tsunagi";
import type { LinkCandidate } from "@johnmorrisdotca/tsunagi";

const givens = TSUNAGI_4[0][0];
const answer = TSUNAGI_4[0][1];
const layout = decodeLayout(givens,4)!;
const value: LinkCandidate = {layout:givens,answer,pairs:layout.ends.length,nodes:1,branches:0,turns:turnsIn(answer,layout),key:symmetryKey(givens,4)};
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'
}

What it prints (run when this page was built)

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