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 · Colour Chains

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

NameTypeDescription
placementProbesnumber
legalPlacementsnumber
goalPreservingPlacementsnumber
forcedPlacementSharenumber
seededPlayoutSamplesnumber
seededPlayoutQueueDepthnumber
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
seededPlayoutSuccessesnumber
seededPlayoutSuccessRatenumber
setupPairsBeforePayoffnumber
requiredSetupPairsnumber
verifiedSetupDependenciesnumber
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
requiredChainDepthnumber
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.

requiredRotationsnumber
requiredWallKicksnumber
splitLandingDependenciesnumber
planningLengthnumber

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)

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