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
| Name | Type | Description |
|---|---|---|
legalPlacementChoices | number | |
setupPlacementChoices | number | |
winningPlacementChoices | number | |
availableFloorChoices | number | |
witnessPlacements | number | |
witnessFloorDecisions | number | |
difficultyScore | number | |
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)