fork download
  1. M=(0,1,0),(0,-1,0),(0,0,1),(0,0,-1),(1,0,0),(-1,0,0)
  2. E=enumerate
  3. N=len
  4. def f(b):
  5. C=0
  6. for z,B in E(b):
  7. for x,r in E(B):
  8. for y,v in E(r):
  9. if v:
  10. q,s=[(*(V:=(z+Z,x+X,y+Y)),[V],i)for i,(Z,X,Y)in E(M)],[]
  11. for J,K,L,p,d in q:
  12. if~-(d in s):
  13. if N(b)>J>-1<K<N(b[0])>-1<L<N(b[0][0]):
  14. for Z,X,Y in M:q+=(((V:=(J+Z,K+X,L+Y))in p)<(N(p)<=N(b))>b[J][K][L])*[(*V,p+[V],d)]
  15. else:s+=d,;C+=1
  16. return C
  17.  
  18. print(f([[[1,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,0,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1]]]))
  19. print(f([[[1,0],[0,0]],[[1,1],[0,1]]]))
  20. print(f([[[1]],[[0]],[[1]]]))
  21. print(f([[[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]],[[1,1,1,1,1,1],[1,0,0,0,0,1],[1,0,0,0,0,1],[1,1,1,1,1,1]],[[1,1,1,1,1,1],[1,0,0,0,0,1],[1,0,0,0,0,1],[1,1,1,1,1,1]],[[1,1,1,1,1,1],[1,0,1,1,0,1],[1,0,1,1,0,1],[1,1,1,1,1,1]],[[1,1,1,1,1,1],[1,0,1,1,0,1],[1,0,0,1,0,1],[1,1,1,1,1,1]],[[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]]]))
  22. print(f([[[0,0,0],[0,1,0],[0,0,0]],[[0,1,0],[1,0,1],[0,1,0]],[[0,0,0],[0,1,0],[0,0,0]]]))
  23. print(f([[[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]],[[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1]],[[1,1,1,1,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,1,1,1,1]],[[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1]],[[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]] ))
  24. print(f([[[1,1,0,1,1],[1,1,0,1,1],[1,1,0,1,1]],[[1,1,0,1,1],[1,1,0,1,1],[1,1,0,1,1]],[[1,1,0,1,1],[1,1,0,1,1],[1,1,0,1,1]],[[1,1,0,1,1],[1,1,0,1,1],[1,1,0,1,1]]]))
  25. print(f([[[0,1,1],[1,1,1],[1,1,1]],[[1,1,1],[1,0,1],[1,1,1]],[[1,1,1],[1,1,1],[1,1,1]]]))
Success #stdin #stdout 0.51s 14160KB
stdin
Standard input is empty
stdout
54
18
12
168
30
150
104
54