Skip to the content

Houseki宝石

Run five native gem and stone engines, play measured challenges and lessons, and save deterministic games.

Houseki (宝石) is Japanese for a gem or precious stone. About the name

Contents

Reference · Magnetic Blocks

MagneticDifficultyMetricstype

The bounded engine measurements used to grade this campaign; they do not claim human difficulty.

Import it

import type { MagneticDifficultyMetrics } from "@johnmorrisdotca/houseki/magnetic-blocks";

Definition

interface MagneticDifficultyMetrics {
    readonly legalPlacementChoices: number;
    readonly setupPlacementChoices: number;
    readonly winningPlacementChoices: number;
    readonly availableFloorChoices: number;
    readonly witnessPlacements: number;
    readonly witnessFloorDecisions: number;
    readonly difficultyScore: number;
    readonly occupiedCells?: number;
    readonly usableCells?: number;
    readonly boardCoverage?: number;
    readonly fullPlanTrials?: number;
    readonly fullPlanWins?: number;
    readonly fullPlanSuccessRate?: number;
    readonly setupDecisionPressure?: number;
    readonly interactingDependencyDepth?: number;
    readonly necessaryFloorDecisionShare?: number;
    readonly setupDecisionEvidence?: readonly {
        readonly step: number;
        readonly legalChoices: number;
        readonly preservingChoices: number;
        readonly pressure: number;
    }[];
    readonly targetIdsClearedByPlacement?: readonly number[];
    readonly targetIdsRemainingAfterPlacement?: readonly number[];
    readonly targetIdsMovedByPlacement?: readonly number[];
    readonly minimumPlanSearch?: {
        readonly status: 'exact' | 'unknown';
        readonly nodeBudget: number;
        readonly nodesVisited: number;
        readonly lowerBound: number;
        readonly upperBound?: number;
    };
}

Members

NameTypeDescription
legalPlacementChoicesnumber
setupPlacementChoicesnumber
winningPlacementChoicesnumber
availableFloorChoicesnumber
witnessPlacementsnumber
witnessFloorDecisionsnumber
difficultyScorenumber
occupiedCells (optional)number | undefined

Board context, recorded separately from strategic difficulty weights.

usableCells (optional)number | undefined
boardCoverage (optional)number | undefined
fullPlanTrials (optional)number | undefined
fullPlanWins (optional)number | undefined
fullPlanSuccessRate (optional)number | undefined
setupDecisionPressure (optional)number | undefined
interactingDependencyDepth (optional)number | undefined
necessaryFloorDecisionShare (optional)number | undefined
setupDecisionEvidence (optional)readonly { readonly step: number; readonly legalChoices: number; readonly preservingChoices: number; readonly pressure: number; }[] | undefined
targetIdsClearedByPlacement (optional)readonly number[] | undefined
targetIdsRemainingAfterPlacement (optional)readonly number[] | undefined
targetIdsMovedByPlacement (optional)readonly number[] | undefined
minimumPlanSearch (optional){ readonly status: "exact" | "unknown"; readonly nodeBudget: number; readonly nodesVisited: number; readonly lowerBound: number; readonly upperBound?: number; } | undefined

Examples

import { levelManifest } from "@johnmorrisdotca/houseki/magnetic-blocks";
import type { MagneticDifficultyMetrics } from "@johnmorrisdotca/houseki/magnetic-blocks";

const level=levelManifest[0];
const value: MagneticDifficultyMetrics = level.metrics;
console.log(value == null ? value : typeof value === "object" ? Object.keys(value).slice(0,6) : value);
[
  'occupiedCells',
  'usableCells',
  'boardCoverage',
  'legalPlacementChoices',
  'setupPlacementChoices',
  'winningPlacementChoices'
]

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/houseki 0.4.2.