python3 - <<'PY' from itertools import product A=5 B=6 C=9 N=A+B+C-2 mons=[] for d in range(N+1): arr=[] for a in range(A): for b in range(B): for c in range(C): if a+b+c==d: arr.append((a,b,c)) mons.append(arr) idx=[] for M in mons: idx.append({m:i for i,m in enumerate(M)}) images=[] for d in range(N): im=[] for a,b,c in mons[d]: mask=0 if a+117 or i>j: return 0 return rho[i][j] m=[[0]*18 for _ in range(18)] for i in range(18): for j in range(i,18): m[i][j]=R(i,j)-R(i-1,j)-R(i,j+1)+R(i-1,j+1) n=[] W=[] for r in range(1,19): nr=0 wr=0 for i in range(0,19-r): val=m[i][i+r-1] nr += val wr += (i+1)**4 * val n.append(nr) W.append(wr) terms=[] for r in range(1,19): if n[r-1]>0: coeff=100000+7919*r+W[r-1] terms.append((r,coeff)) print('n=',n) print('W=',W) print('terms=',terms) print('poly=','+'.join(str(c)+'V^'+str(r) for r,c in sorted(terms, reverse=True))) PY