# Independent from-scratch verifier. Song 011111: lighthouse d(t)=0 if t%6==0 else 1. # Echo trace: e(6n)=u_n (free), e(6n+1..6n+4)=0, e(6n+5)=1. # Inverse rule: a[k+1][t] = a[k][t+1] XOR (a[k][t] OR a[k-1][t]). def trace(u): e=[] for n,un in enumerate(u): e += [un,0,0,0,0,1] return e def columns(u, depth): e=trace(u); T=len(e) a=[[0 if t%6==0 else 1 for t in range(T)], e] # a[0]=lighthouse, a[1]=e for k in range(1,depth): prev,cur=a[k-1],a[k] a.append([cur[t+1]^(cur[t]|prev[t]) for t in range(len(cur)-1)]) return a def b(u,k): return columns(u,k)[k][0] # starting lantern k def force(prefix, total): u=list(prefix) while len(u)