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
| Name | Type | Description |
|---|---|---|
layout | LinkLayout | The decoded native board and its rule settings. |
answer | string | 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);1What it prints (run when this page was built)