python3 - <<'PY' T=112 M=[(-2,5,-1),(-1,-4,3),(0,4,-3),(1,2,2),(2,-5,1),(-2,1,-4),(1,-4,-2),(2,3,-3)] def md(a,m): return a-(a//m)*m r=17 s=41 q=73 R=[] S=[] Q=[] for i in range(72): r=md(5*r+3*s+7*i+11,97) s=md(2*r+7*s+q+5*i+13,89) q=md(3*r+s+5*q+11*i+17,83) R.append(r) S.append(s) Q.append(q) t=[20+i+i//4 for i in range(72)] x=[4+md(7*R[i]+3*S[i]+5*Q[i]+2*i,23) for i in range(72)] y=[3+md(5*R[i]+2*S[i]+7*Q[i]+3*i,17) for i in range(72)] p=[1 if md(R[i]+2*S[i]+Q[i]+i,6) in (0,1,4) else -1 for i in range(72)] print('first',r,s,q,t[0],x[0],y[0],p[0]) print('events') for i in range(72): print(i,R[i],S[i],Q[i],t[i],x[i],y[i],p[i]) P=[[0]*88 for h in range(8)] N=[[0]*88 for h in range(8)] LP=[[-1000]*88 for h in range(8)] LM=[[-1000]*88 for h in range(8)] A=[0]*8 O=[0]*8 J=[0]*8 C=[0]*8 D=[0]*8 Z=[[0]*72 for h in range(8)] H=0 for i in range(72): for h in range(8): w,xi,eta=M[h] u=x[i]+((T-t[i])*(w*(y[i]-11)+xi))//128 v=y[i]+((T-t[i])*(-w*(x[i]-15)+eta))//128 if u<0 or u>30 or v<0 or v>22: zi=0 else: a=u//3 b=v//3 k=a*8+b if p[i]==1: last=LP[h][k] else: last=LM[h][k] if t[i]-last<=7: zi=1 if p[i]==1 else 2 else: P0=P[h][k] N0=N[h][k] d=P0-N0 m=P0+N0 zi=3 if p[i]==1 else 4 if p[i]==1: P[h][k]=P0+1 LP[h][k]=t[i] else: N[h][k]=N0+1 LM[h][k]=t[i] A[h]+=1 if m==0: O[h]+=1 J[h]+=p[i] C[h]+=2*p[i]*d+1 if (p[i]==1 and N0>0) or (p[i]==-1 and P0>0): D[h]+=1 Z[h][i]=zi H=md(37*H+19*(i+1)+23*(h+1)+11*(u+32)+13*(v+32)+17*(zi+1)+C[h]+7*A[h]+5*O[h]+3*D[h]+J[h]+72,9973) print('stats') best=0 bk=None for h in range(8): V=88*C[h]-J[h]*J[h] K=A[h]-2*D[h] key=(V,K,-O[h],-h) print(h,'C',C[h],'J',J[h],'A',A[h],'D',D[h],'O',O[h],'V',V,'K',K,'key',key) if bk is None or key>bk: bk=key best=h print('best',best,bk) hs=best dx=1 if M[hs][1]>0 else -1 dy=1 if M[hs][2]>0 else -1 print('d',dx,dy) E=[[-1000]*88 for _ in range(2)] Ssum=0 def g(E0,a0,b0): if a0<0 or a0>10 or b0<0 or b0>7: return -1000 return E0[a0*8+b0] for i in range(72): if Z[hs][i] not in (3,4): continue w,xi,eta=M[hs] u=x[i]+((T-t[i])*(w*(y[i]-11)+xi))//128 v=y[i]+((T-t[i])*(-w*(x[i]-15)+eta))//128 a=u//3 b=v//3 ap=a-dx bp=b-dy pi=p[i] if pi==1: ep=E[0] eo=E[1] else: ep=E[1] eo=E[0] qs=(1 if 4<=t[i]-g(ep,a,b)<=12 else 0)+(1 if 4<=t[i]-g(ep,ap,bp)<=12 else 0) qo=(1 if 1<=t[i]-g(eo,a,b)<=6 else 0)+(1 if 1<=t[i]-g(eo,ap,bp)<=6 else 0) if qs>=1 and qo==0: Ssum+=1 ep[a*8+b]=t[i] print('S',Ssum,'H',H) print('result',hs,Ssum,H) PY