Skip to main content

Grader parameters

Every number the grader uses, by the name grader_model gives it (names(), with_overrides(), use(); see src/pencilmark/grader_model.py). The difficulty prices share every value with the engine parameters except two weight vectors, so only those are listed under them. This page is generated by tools/gen_parameters_md.py; changing a shipped value is a deliberate commit with a golden rewrite.

Engine parameters (route)​

NameValueSource
route.price.FullHouse1Base price of a technique (B), used only where the structural model does not price the move.
route.price.NakedSingle(direct)1.697″
route.price.HiddenSingle(direct)0.9849″
route.price.NakedSingle+Pointing(direct)2.362″
route.price.HiddenSingle+Pointing(direct)1.514″
route.price.TakeNotes4.008″
route.price.NakedSingle(notes)0.6942″
route.price.HiddenSingle(notes)0.7778″
route.price.LockedCandidates1.315″
route.price.NakedPair4.999″
route.price.HiddenPair5.638″
route.price.NakedTriple6.451″
route.price.HiddenTriple6.988″
route.price.NakedQuad6.086″
route.price.HiddenQuad6.987″
route.price.X-Wing8.707″
route.price.Swordfish5.6″
route.price.XY-Wing4.192″
route.price.XYZ-Wing5.713″
route.price.Coloring6.151″
route.price.PairwiseConstraint1.858″
route.price.Trial5.176″
route.price.Guess6.219″
route.price.Innie/Outie(direct)1.939″
route.price.CageCombination1.975″
route.price.Innie/Outie(notes)2.867″
route.price.SumCombination1.8″
route.price.ArrowCombination2″
route.price.SetCombination2″
route.price.EqualSumCombination2.6″
route.price.TableCombination2.6″
route.price.ComboLock2.8″
route.price.ConstraintSingle(direct)2″
route.price.Innie/Outie(sum)3.2″
route.price.FinnedFish5.4″
route.price.Jellyfish6.4″
route.price.X-Chain5.2″
route.price.XY-Chain5.6″
route.price.AIC6.4″
route.price.NiceLoop(discontinuous)6.8″
route.price.SandwichCombination2.6″
route.price.XSumCombination2.6″
route.price.SkyscraperCombination2.6″
route.price.LawOfLeftovers3″
route.price.ImpliedHouses3″
route.price.UniqueRectangle4.6″
route.price.BUG+15.6″
route.price.ALS-XZ6.6″
route.price.ALS-XY-Wing7″
route.price.DeathBlossom7.4″
route.price.ALS-AIC7.6″
route.price.CanonicalEnumeration1″
route.price.CountCombination2″
route.price.LineSingle(direct)1.6″
route.price.LineRange2″
route.price.MentalSingle(direct)2.4″
route.price.ShortTrial6.2″
route.price.MentalChain(direct)4″
route.price.EitherWay5.8″
route.price.LineClass1.6″
route.price.DigitCount4.6″
route.price.EqualDigits5″
route.price.LineScan1.8″
route.price.ForcingChains6″
route.price.DynamicForcingChains6.4″
route.price.NestedForcingChains6.6″
route.price.3DMedusa6.3″
route.price.SumBound1.5″
route.price.ClassCount2.4″
route.price.Domino2.2″
route.price.ColourAlgebra5.4″
route.price.WXYZ-Wing6.2″
route.price.SueDeCoq6.6″
route.price.AlignedPairExclusion6.8″
route.price.ChuteRemotePairs5.6″
route.price.PatternOverlay7.2″
route.price.GurthSymmetry5″
route.price.NishioForcingNet5.6″
route.price.WhatIf5.2″
route.price.MentalNotesSingle3″
route.price.MultiColouring5.9″
route.price.RemotePairs4.8″
route.price.EmptyRectangle4.6″
route.price.RuleIntersection5″
route.price.SumAlgebra6″
route.price.SnyderMarks1.5″
route.price.SnyderSingle2.3″
route.price.BandLogic6.6″
route.price.Fireworks6.988″
route.price.CaseAnalysis6.6″
route.price.ComboPositions6.988″
route.price.CliqueHouse6.988″
route.price.LineSets6.988″
route.price.LineClues6.988″
route.price.WeightedSums6.988″
route.price.ClassColouring5″
route.Klist of 9Engine parameters (data/params.json): the step-price model and the scan / note costs, fitted on human solve times; they also price the time effort and the band route's tie-breaks.
route.gamma-0.6291″
route.alpha1″
route.beta0.5081″
route.c0.1152″
route.t_place2.89″
route.t_mark0.1677″
route.t_erase0.2061″
route.t05.42″
route.tau0.15″
route.ref_steps55″
route.meta_thetalist of 10″
route.meta_exclude″
route.meta_theta_arith_cells0″
route.meta_theta_fulllist of 18Structural step-price weights (18 features), fitted on human solve times.
route.meta_theta_interact0.02882, 0.2858, 0.1108Depth interaction weights of the step price (D6).
route.dc_lines1Engine parameters (data/params.json): the step-price model and the scan / note costs, fitted on human solve times; they also price the time effort and the band route's tie-breaks.
route.locality0.4″
route.case_rounds3″
route.case_light1″

Difficulty prices (price)​

NameValueSource
price.meta_theta_fulllist of 18Card-fit structural weights: refitted so difficulty ranks puzzles like human times across sources (data/card_score.json price_weights).
price.meta_theta_interact0.3114, 0.2262, -0.1723Card-fit depth interactions (fitted with the weights above).

Card score (score)​

NameValueSource
score.version3Version of the configuration format.
score.beta4.583Exponent of a step's price in its value (card fit).
score.enum_w0.1Weight of the cage-enumeration term (validated on two sources).
score.statper_cellHow step values combine: the average per empty cell.
score.beta_time3.807The same exponent for the time effort (time fit).
score.refute_w2Weight of the technique-free search effort.
score.map.formA * w * softplus((r - r0) / w)The smooth difficulty map: softplus slope A, knee r0 and width w; below 2 a gentler square-root rule.
score.map.A0.8258″
score.map.r02.117″
score.map.w0.3″

Time model (time)​

NameValueSource
time.const-5.68Time model (data/time_model.json), fitted on era-adjusted per-player solve times.
time.k_effort0.2929″
time.k_empty0.7441″
time.k_geometry.blob_cells0.385Scanning cost of irregular regions (jigsaw pieces, extra regions per cell).
time.k_geometry.extra_area_pc1.108″
time.t00.0408Time model (data/time_model.json), fitted on era-adjusted per-player solve times.
time.compress.k0.15Long predictions grow more slowly (monotone compression).
time.compress.c0.4″
time.minutes_per_unit11.8The median time of a classic 9x9, in minutes (one time unit).
time.spread_notesolve times of one puzzle across today's players: log-nor...Time model (data/time_model.json), fitted on era-adjusted per-player solve times.
time.size_curve.q0.2148Very large boards are slower per cell (hinge above about 92 empty cells, measured on three sources).
time.size_curve.c4.52″
time.size_curve_notelog t += q * max(0, ln(empty) - c)^2 after everything els...″
time.spread_sigma_classic0.79Spread of players around the median (log-normal sigma), for time_pNN.
time.spread_sigma_variant0.62″
time.model_sigma_classic0.33The model's own error (log-normal sigma).
time.model_sigma_variant0.48″