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]
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)
cXRlc3QgPSAuLi4KQChBKWFsbChbKHM9QHN1bSkoQSkgcyhBLDIpJyBzKChkPUBzcGRpYWdzKShBKSkgcyhkKHJvdDkwKEEpKSldPT0xKQoKUyA9IFswIDAgMCAxIDAgMCAwIDA7CiAgICAgMCAwIDAgMCAwIDAgMSAwOwogICAgIDAgMCAxIDAgMCAwIDAgMDsKICAgICAwIDAgMCAwIDAgMCAwIDE7CiAgICAgMCAxIDAgMCAwIDAgMCAwOwogICAgIDAgMCAwIDAgMSAwIDAgMDsKICAgICAxIDAgMCAwIDAgMCAwIDA7CiAgICAgMCAwIDAgMCAwIDEgMCAwXQpxdGVzdChTKQoKUyA9IFswIDAgMCAxIDA7CiAgICAgMSAwIDAgMCAwOwogICAgIDAgMSAwIDAgMDsKICAgICAwIDAgMCAwIDE7CiAgICAgMCAwIDEgMCAwXQpxdGVzdChTKQoKUyA9IFsxIDA7CiAgICAgMSAwXQpxdGVzdChTKQoKUyA9IFswIDAgMTsKICAgICAwIDAgMDsKICAgICAwIDEgMF0KcXRlc3QoUykKClMgPSBbMCAwIDEgMDsKICAgICAxIDAgMCAwOwogICAgIDAgMCAwIDE7CiAgICAgMCAxIDAgMF0KcXRlc3QoUykKClMgPSBbMV0KcXRlc3QoUykKCg==