from collections import defaultdict from fractions import Fraction def run(load,read,check): r=load('C286_DATA.json')['target_register'];pivots=set(load('C450_DATA.json')['pivots']);keys=['tradition','role','rail'];templates=[] for i,a in enumerate(r): if (a['Cainan'],a['Terah60'],a['full430'])!=(0,0,1) or a['gear'] not in [1,2]:continue k=tuple(a.get(z) for z in keys);g=a['gear'] def locate(G,C,T,F):return [(j,b) for j,b in enumerate(r) if tuple(b.get(z) for z in keys)==k and (b['gear'],b['Cainan'],b['Terah60'],b['full430'])==(G,C,T,F)] bb=locate(g+1,1,1,0);cc=locate(g,1,1,0);dd=locate(g+1,0,0,1) check('unique_'+str(i),len(bb)==len(cc)==len(dd)==1) (j,b),(l,c),(m,d)=bb[0],cc[0],dd[0] check('residual_'+str(i),a['center']-b['center']==215-130-60-2==23) for sign,h,x,y,ids in [('negative',a['center'],b['center'],c['center'],[i,j,l]),('positive',b['center'],a['center'],d['center'],[j,i,m])]: check(sign+'_'+str(i),Fraction(25*x-2*h,23)==y) templates.append({'direction':sign,'tradition':a['tradition'],'role':a['role'],'rail':a.get('rail'),'base_gear':g,'pivot':h,'input':x,'output':y,'record_indices':ids,'fixed_pivot':h in pivots}) actual=[a for a in load('C450_DATA.json')['arrows'] if abs(a['change'])==2];covered={(t['pivot'],t['input'],t['output']) for t in templates if t['fixed_pivot']} residual=[a for a in actual if (a['pivot'],a['input'],a['output']) not in covered] return {'step':'C453','identity':'215-130-60-2=23','templates':templates,'admitted_fixed_templates':[t for t in templates if t['fixed_pivot']],'remaining_fixed_unit_arrows':residual,'counts':{'source_label_templates':len(templates),'unique_coordinate_arrows':len({(t['pivot'],t['input'],t['output']) for t in templates}),'fixed_source_label_templates':sum(t['fixed_pivot'] for t in templates),'fixed_unique_arrows':len(covered),'all_fixed_unit_arrows':len(actual),'outside_template_fixed_unit_arrows':len(residual)}}