from collections import defaultdict from fractions import Fraction def run(load,read,check): r=load('C286_DATA.json')['target_register'];ix=defaultdict(list) for i,z in enumerate(r):ix[z['center']].append(i) X=sorted(ix);P=load('C450_DATA.json')['pivots'];pairs=[(x,x+1150) for x in X if x+1150 in ix];trials=[];hits=[] for x,y in pairs: for h in P: out=[Fraction(25*z-2*h,23) for z in [x,y]];integer=all(z.denominator==1 for z in out);sourced=integer and all(int(z) in ix for z in out) check(f'span_{x}_{h}',out[1]-out[0]==1250) row={'input_pair':[x,y],'pivot':h,'outputs':list(map(str,out)),'integer_outputs':integer,'both_outputs_sourced':sourced} trials.append(row) if sourced: predecessors=[] for p in P: pre=[Fraction(23*z+2*p,25) for z in [x,y]];valid=all(z.denominator==1 and int(z) in ix for z in pre) check(f'pre_span_{x}_{h}_{p}',pre[1]-pre[0]==1058) predecessors.append({'first_pivot':p,'predecessor_pair':list(map(str,pre)),'complete':valid}) hits.append({'input_pair':[x,y],'output_pair':list(map(int,out)),'second_pivot':h,'input_indices':[ix[z] for z in [x,y]],'output_indices':[ix[int(z)] for z in out],'pivot_indices':ix[h],'predecessor_trials':predecessors,'complete_predecessors':[p for p in predecessors if p['complete']]}) return {'step':'C470','all_1150_pairs':[{'coordinates':list(p),'source_indices':[ix[z] for z in p]} for p in pairs],'all_trials':trials,'admitted_expansions':hits,'counts':{'source_pairs_1150':len(pairs),'label_pairs_1150':sum(len(ix[x])*len(ix[y]) for x,y in pairs),'E_trials':len(trials),'integer_output_pairs':sum(t['integer_outputs'] for t in trials),'complete_expansions':len(hits),'complete_with_2K_predecessor':sum(bool(h['complete_predecessors']) for h in hits)}}