#!/usr/bin/env python3 from itertools import product tab={(1,1):(0,-1),(2,2):(0,-1),(3,3):(0,-1),(1,2):(3,1),(2,1):(3,-1),(2,3):(1,1),(3,2):(1,-1),(3,1):(2,1),(1,3):(2,-1)} def mul(a,b): if a[0]==0: return (b[0],a[1]*b[1]) if b[0]==0: return (a[0],a[1]*b[1]) k,s=tab[(a[0],b[0])] return (k,a[1]*b[1]*s) letters=[((1,1),2,1),((1,-1),-2,-1),((2,1),-1,2),((2,-1),1,-2)] inv=[1,0,3,2] for d in (4,6): cnt=sm=0 for u in product(range(4),repeat=d): if any(u[(i+1)%d]==inv[u[i]] for i in range(d)): continue q=(0,1);x=y=0 for e in u: qq,a,b=letters[e] q=mul(q,qq);x+=a;y+=b ok=(y%5==0) if d==4: ok=ok and q==(0,-1) if d==6: ok=ok and q[0]==3 if ok: ee=(abs(x)+abs(y)+abs(-x-y))//2 cnt+=1;sm+=ee*(12//d) print(d,cnt,sm)