qtest = ...
@(A)all(sum([A A' (d=@spdiags)(A) 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]
qtest(S)
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]
qtest(S)
S = [1 0;
1 0]
qtest(S)
S = [0 0 1;
0 0 0;
0 1 0]
qtest(S)
S = [0 0 1 0;
1 0 0 0;
0 0 0 1;
0 1 0 0]
qtest(S)
S = [1]
qtest(S)
cXRlc3QgPSAuLi4KQChBKWFsbChzdW0oW0EgQScgKGQ9QHNwZGlhZ3MpKEEpIGQocm90OTAoQSkpXSk9PTEpCgpTID0gWzAgMCAwIDEgMCAwIDAgMDsKICAgICAwIDAgMCAwIDAgMCAxIDA7CiAgICAgMCAwIDEgMCAwIDAgMCAwOwogICAgIDAgMCAwIDAgMCAwIDAgMTsKICAgICAwIDEgMCAwIDAgMCAwIDA7CiAgICAgMCAwIDAgMCAxIDAgMCAwOwogICAgIDEgMCAwIDAgMCAwIDAgMDsKICAgICAwIDAgMCAwIDAgMSAwIDBdCnF0ZXN0KFMpCgpTID0gWzAgMCAwIDEgMDsKICAgICAxIDAgMCAwIDA7CiAgICAgMCAxIDAgMCAwOwogICAgIDAgMCAwIDAgMTsKICAgICAwIDAgMSAwIDBdCnF0ZXN0KFMpCgpTID0gWzEgMDsKICAgICAxIDBdCnF0ZXN0KFMpCgpTID0gWzAgMCAxOwogICAgIDAgMCAwOwogICAgIDAgMSAwXQpxdGVzdChTKQoKUyA9IFswIDAgMSAwOwogICAgIDEgMCAwIDA7CiAgICAgMCAwIDAgMTsKICAgICAwIDEgMCAwXQpxdGVzdChTKQoKUyA9IFsxXQpxdGVzdChTKQoK