fork(1) download
  1. qtest = ...
  2. @(A)all([(s=@sum)(A) s(A,2)' s((d=@spdiags)(A)) s(d(rot90(A)))]==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.21s 403648KB
stdin
Standard input is empty
stdout
qtest =

@(A) all ([(s = @sum)(A), s(A, 2)', s((d = @spdiags) (A)), s(d (rot90 (A)))] == 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