#!/usr/bin/env python3 B={1:{2,5,8,9},2:{5,7,8},4:{1,2,5,7},5:{7,11},6:{1,2,4,5,8},7:{1,6,8},8:{4,5,9},9:{2,4,5,6,7},11:{1,2,4,6,7,8,9}} def w(a,u): return a if a==u else (10 if u==10 else u) if a==10 else (a if u==10 else (a if u in B.get(a,()) else u)) sp={11,1,2,4,5,6,7,8,9} def O(c,l): if not l: return c if c in sp else 10 return w(O(c,l[1:]),O(l[0],l[1:])) C=[[w(a,u) for a in range(1,12)] for u in range(1,12)] I=[1,2,10,4,5,6,7,8,9,10,11] def V(p): v=I for x in reversed(p): v=C[v[x-1]-1] return v for p in ([1,2,3,4,5,6,7,8,9],[1,2,4,6,8,9,5,3,7],[9,8,6,4,2,1,5,3,7]): v=V(p) print(p,"vec",v[9],v[10],w(v[9],v[10]),"rec",O(10,p),O(11,p),w(O(10,p),O(11,p)))