fork download
  1. qtest = ...
  2. @(A)all(sum([A A' (d=@spdiags)(A) d(flip(A))],1)==1)
  3.  
  4. S = [0 0 0 1 0 0 0 0;
  5. 0 0 0 0 0 0 1 0;
  6. 0 0 1 0 0 0 0 0;
  7. 0 0 0 0 0 0 0 1;
  8. 0 1 0 0 0 0 0 0;
  9. 0 0 0 0 1 0 0 0;
  10. 1 0 0 0 0 0 0 0;
  11. 0 0 0 0 0 1 0 0]
  12. qtest(S)
  13.  
  14. S = [0 0 0 1 0;
  15. 1 0 0 0 0;
  16. 0 1 0 0 0;
  17. 0 0 0 0 1;
  18. 0 0 1 0 0]
  19. qtest(S)
  20.  
  21. S = [1 0;
  22. 1 0]
  23. qtest(S)
  24.  
  25. S = [0 0 1;
  26. 0 0 0;
  27. 0 1 0]
  28. qtest(S)
  29.  
  30. S = [0 0 1 0;
  31. 1 0 0 0;
  32. 0 0 0 1;
  33. 0 1 0 0]
  34. qtest(S)
  35.  
  36. S = [1]
  37. qtest(S)
  38.  
  39.  
Success #stdin #stdout 0.22s 404544KB
stdin
Standard input is empty
stdout
qtest =

@(A) all (sum ([A, A', (d = @spdiags)(A), d(flip (A))], 1) == 1)

S =

   0   0   0   1   0   0   0   0
   0   0   0   0   0   0   1   0
   0   0   1   0   0   0   0   0
   0   0   0   0   0   0   0   1
   0   1   0   0   0   0   0   0
   0   0   0   0   1   0   0   0
   1   0   0   0   0   0   0   0
   0   0   0   0   0   1   0   0

ans =  1
S =

   0   0   0   1   0
   1   0   0   0   0
   0   1   0   0   0
   0   0   0   0   1
   0   0   1   0   0

ans = 0
S =

   1   0
   1   0

ans = 0
S =

   0   0   1
   0   0   0
   0   1   0

ans = 0
S =

   0   0   1   0
   1   0   0   0
   0   0   0   1
   0   1   0   0

ans =  1
S =  1
ans =  1