Reference · Rules, solvers and generation
countSolutionsSatfunction
Counts a layout's answers by SAT, up to limit. budget is a number of
conflicts; guide is the lines the layout was made from (cells in order,
portal cells too); colours says how a cell's pair is written as variables,
and the default is the way every level up to 15×15 was proved: another way
writes another search, with other counts.
Import it
import { countSolutionsSat } from "@johnmorrisdotca/tsunagi";
Definition
function countSolutionsSat(layout: LinkLayout, limit?: number, budget?: number, guide?: readonly (readonly number[])[] | null, colours?: SatColours): SolveCount
Parameters
| Name | Type | Description |
|---|---|---|
layout | LinkLayout | The decoded native board and its rule settings. |
limit (optional) | number | Stop after finding this many solutions. |
budget (optional) | number | The maximum search-work budget; exhaustion must be treated as inconclusive. |
guide (optional) | readonly (readonly number[])[] | null | Optional known answer lines guiding the SAT search; null without a guide. |
colours (optional) | SatColours | The palette or SAT colour encoding specified by the signature. |
Returns
SolveCount
Counts a layout's answers by SAT, up to limit. budget is a number of conflicts; guide is the lines the layout was made from (cells in order, portal cells too); colours says how a cell's pair is written as variables, and the default is the way every level up to 15×15 was proved: another way writes another search, with other counts.
Examples
import { TSUNAGI_4 } from "@johnmorrisdotca/tsunagi/levels-4";
import { countSolutionsSat, decodeLayout } from "@johnmorrisdotca/tsunagi";
const givens = TSUNAGI_4[0][0];
const layout = decodeLayout(givens,4)!;
console.log(countSolutionsSat(layout,2,20000).count);1What it prints (run when this page was built)