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

countSolutionsOfLevelfunction

How a level is proved and measured: countSolutions for a board the search of this file has always counted (4×4 to 15×15, no portals), and for a bigger one, or one with portals, the SAT search started from the level's own answer (countSolutionsSat, binary pairs). The answer is found at once and every other answer is looked for from there, so what the count costs is what proving there is none costs, which is how a big level was made to be cheap (reduce.ts) and what its difficulty measures. Still a proof: the count is of every answer, and a level whose stored answer is not the one found fails.

Import it

import { countSolutionsOfLevel } from "@johnmorrisdotca/tsunagi";

Definition

function countSolutionsOfLevel(layout: LinkLayout, answer: string, limit?: number, budget?: number): SolveCount

Parameters

NameTypeDescription
layoutLinkLayout

The decoded native board and its rule settings.

answerstring

The native complete answer string or solved lines specified by the signature.

limit (optional)number

Stop after finding this many solutions.

budget (optional)number

The maximum search-work budget; exhaustion must be treated as inconclusive.

Returns

SolveCount

How a level is proved and measured: countSolutions for a board the search of this file has always counted (4×4 to 15×15, no portals), and for a bigger one, or one with portals, the SAT search started from the level's own answer (countSolutionsSat, binary pairs). The answer is found at once and every other answer is looked for from there, so what the count costs is what proving there is none costs, which is how a big level was made to be cheap (reduce.ts) and what its difficulty measures. Still a proof: the count is of every answer, and a level whose stored answer is not the one found fails.

Examples

import { TSUNAGI_4 } from "@johnmorrisdotca/tsunagi/levels-4";
import { countSolutionsOfLevel, decodeLayout } from "@johnmorrisdotca/tsunagi";

const givens = TSUNAGI_4[0][0];
const answer = TSUNAGI_4[0][1];
const layout = decodeLayout(givens,4)!;
console.log(countSolutionsOfLevel(layout,answer,2,20000).count);
1

What it prints (run when this page was built)

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