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)] h=1 om,xi,eta=M[h] P=[[0]*8 for a in range(11)] N=[[0]*8 for a in range(11)] LP=[[-1000]*8 for a in range(11)] LM=[[-1000]*8 for a in range(11)] Z=[0]*72 for i in range(72): u=x[i]+((T-t[i])*(om*(y[i]-11)+xi))//128 v=y[i]+((T-t[i])*(-om*(x[i]-15)+eta))//128 if u<0 or u>30 or v<0 or v>22: zz=0 else: a=u//3 b=v//3 last=(LP if p[i]==1 else LM)[a][b] if t[i]-last<=7: zz=1 if p[i]==1 else 2 else: zz=3 if p[i]==1 else 4 if p[i]==1: P[a][b]+=1 LP[a][b]=t[i] else: N[a][b]+=1 LM[a][b]=t[i] Z[i]=zz dx=1 if M[h][1]>0 else -1 dy=1 if M[h][2]>0 else -1 EE=[[-1000]*8 for a in range(11)] EF=[[-1000]*8 for a in range(11)] SS=0 def g(E,aa,bb): if aa<0 or aa>10 or bb<0 or bb>7: return -1000 return E[aa][bb] for i in range(72): if Z[i] not in (3,4): continue u=x[i]+((T-t[i])*(om*(y[i]-11)+xi))//128 v=y[i]+((T-t[i])*(-om*(x[i]-15)+eta))//128 a=u//3 b=v//3 ap=a-dx bp=b-dy ep=EE if p[i]==1 else EF eo=EF if p[i]==1 else EE 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) inc=1 if qs>=1 and qo==0 else 0 SS+=inc print(i,'z',Z[i],'t',t[i],'p',p[i],'uv',u,v,'ab',a,b,'apbp',ap,bp,'qs',qs,'qo',qo,'inc',inc,'S',SS) ep[a][b]=t[i] print('S',SS) PY