Skip to main content
1 of 2
Wrzlprmft
  • 2.9k
  • 21
  • 36

Python – 234

j=1j
r=[1,1+j,j,j-1,-1,-j-1,-j,1-j][n]
m=max(map(len,l))*len(l)*9
M=range(-m,m)
D=[]
for y in M:
 d=[]
 for x in M:
    for i,u in enumerate(l):
     for k,v in enumerate(u):
      if r*(k-(len(u)-1)/2+1j*i)==x+y*1j:d+=[v]
 if d:D+=[d]
print D

Preliminary answer, as I have to do other stuff now. I will likely further golf this down later today. The value of m is a blatant overestimation.

Wrzlprmft
  • 2.9k
  • 21
  • 36