ChainDifficultyMetricstype
The bounded engine measurements used to grade this campaign; they do not claim human difficulty.
Import it
import type { ChainDifficultyMetrics } from "@johnmorrisdotca/houseki/colour-chains";
Definition
interface ChainDifficultyMetrics {
readonly placementProbes: number;
readonly legalPlacements: number;
readonly goalPreservingPlacements: number;
readonly forcedPlacementShare: number;
readonly seededPlayoutSamples: number;
readonly seededPlayoutQueueDepth: number;
readonly seededPlayoutVariablePrefixLength?: number;
readonly seededPlayoutFixedSuffixLength?: number;
readonly seededPlayoutPlacements?: number;
readonly fullPlanSuccessRate?: number;
readonly witnessedPlanPlacements?: number;
readonly singleStepDeviationProbes?: number;
readonly singleStepDeviationWins?: number;
readonly singleStepDeviationDeadEnds?: number;
readonly branchingDecisionPoints?: number;
readonly forcedSafeSteps?: number;
readonly forcedSafeShare?: number;
readonly branchingShare?: number;
readonly consequentialDecisionShare?: number;
readonly setupDeviationProbes?: number;
readonly setupDeviationLosses?: number;
readonly setupDeviationLossShare?: number;
readonly verifiedSetupDependencyShare?: number;
readonly seededPlayoutSuccesses: number;
readonly seededPlayoutSuccessRate: number;
readonly setupPairsBeforePayoff: number;
readonly requiredSetupPairs: number;
readonly verifiedSetupDependencies: number;
readonly setupDependencyProbeSteps?: number;
readonly verifiedWrongFirstRecovery?: number;
readonly goalTargets?: number;
readonly goalDependencyCount?: number;
readonly occupiedCells?: number;
readonly usableCells?: number;
readonly boardCoverage?: number;
readonly goalCoordinationShare?: number;
readonly cascadeShare?: number;
readonly weatherEventCount?: number;
readonly weatherDependency?: number;
readonly mechanicOffCounterfactualWon?: boolean;
readonly mechanicOffCounterfactualKind?: 'nature' | 'magnetism' | 'weather';
readonly mechanicOffCounterfactualPhase?: string;
readonly rawDifficultyScore?: number;
readonly requiredChainDepth: number;
readonly witnessedChainDepth?: number;
readonly observedPotentialChainDepth?: number;
readonly requiredRotations: number;
readonly requiredWallKicks: number;
readonly splitLandingDependencies: number;
readonly planningLength: number;
}
Members
| Name | Type | Description |
|---|---|---|
placementProbes | number | |
legalPlacements | number | |
goalPreservingPlacements | number | |
forcedPlacementShare | number | |
seededPlayoutSamples | number | |
seededPlayoutQueueDepth | number | |
seededPlayoutVariablePrefixLength (optional) | number | undefined | Number of pair placements randomized in each seeded playout. |
seededPlayoutFixedSuffixLength (optional) | number | undefined | Number of later witnessed placements held fixed in each seeded playout. |
seededPlayoutPlacements (optional) | number | undefined | |
fullPlanSuccessRate (optional) | number | undefined | |
witnessedPlanPlacements (optional) | number | undefined | |
singleStepDeviationProbes (optional) | number | undefined | |
singleStepDeviationWins (optional) | number | undefined | |
singleStepDeviationDeadEnds (optional) | number | undefined | |
branchingDecisionPoints (optional) | number | undefined | |
forcedSafeSteps (optional) | number | undefined | |
forcedSafeShare (optional) | number | undefined | |
branchingShare (optional) | number | undefined | |
consequentialDecisionShare (optional) | number | undefined | |
setupDeviationProbes (optional) | number | undefined | |
setupDeviationLosses (optional) | number | undefined | |
setupDeviationLossShare (optional) | number | undefined | |
verifiedSetupDependencyShare (optional) | number | undefined | |
seededPlayoutSuccesses | number | |
seededPlayoutSuccessRate | number | |
setupPairsBeforePayoff | number | |
requiredSetupPairs | number | |
verifiedSetupDependencies | number | |
setupDependencyProbeSteps (optional) | number | undefined | Number of pre-payoff steps checked by exhaustive single-step deviations. |
verifiedWrongFirstRecovery (optional) | number | undefined | A verified alternate far-side first placement followed by the witnessed recovery pair. |
goalTargets (optional) | number | undefined | |
goalDependencyCount (optional) | number | undefined | Number of distinct target-color components or explicitly required chain waves. |
occupiedCells (optional) | number | undefined | |
usableCells (optional) | number | undefined | |
boardCoverage (optional) | number | undefined | |
goalCoordinationShare (optional) | number | undefined | |
cascadeShare (optional) | number | undefined | |
weatherEventCount (optional) | number | undefined | |
weatherDependency (optional) | number | undefined | |
mechanicOffCounterfactualWon (optional) | boolean | undefined | |
mechanicOffCounterfactualKind (optional) | "nature" | "magnetism" | "weather" | undefined | |
mechanicOffCounterfactualPhase (optional) | string | undefined | |
rawDifficultyScore (optional) | number | undefined | |
requiredChainDepth | number | |
witnessedChainDepth (optional) | number | undefined | Highest chain observed in the exact authored witness. |
observedPotentialChainDepth (optional) | number | undefined | Highest chain seen in the bounded random-play sample; not a requirement claim. |
requiredRotations | number | |
requiredWallKicks | number | |
splitLandingDependencies | number | |
planningLength | number | Number of committed pair placements in the supplied winning plan. |
Examples
import { levelManifest } from "@johnmorrisdotca/houseki/colour-chains";
import type { ChainDifficultyMetrics } from "@johnmorrisdotca/houseki/colour-chains";
const level=levelManifest[0];
const value: ChainDifficultyMetrics = level.rawMetrics;
console.log(value == null ? value : typeof value === "object" ? Object.keys(value).slice(0,6) : value);[
'placementProbes',
'legalPlacements',
'goalPreservingPlacements',
'forcedPlacementShare',
'seededPlayoutSamples',
'seededPlayoutQueueDepth'
]What it prints (run when this page was built)