rulesok.m

来自「matlab 数独游戏源码 但是没有注释」· M 代码 · 共 34 行

M
34
字号
function [rok,ind]=rulesok(s,i,j)
ix=sub2ind(size(s),i,j);
ix1=sub2ind(size(s),i*ones(1,9),1:9);
ix1=ix1(find(ix1~=ix));
ix2=sub2ind(size(s),1:9,j*ones(1,9));
ix2=ix2(find(ix2~=ix));
if i<=3,
    xv=1:3;
elseif i<=6,
    xv=4:6;
else
    xv=7:9;
end
if j<=3,
    yv=1:3;
elseif j<=6,
    yv=4:6;
else
    yv=7:9;
end
[x,y]=meshgrid(xv,yv);
ix3=sub2ind(size(s),x(:)',y(:)');
ix3=ix3(find(ix3~=ix));
rok = ~(any(s(ix)==s(ix1)) | any(s(ix)==s(ix2)) | any(s(ix)==s(ix3)));
if nargout==2,
    ind=[];
    i=find(ismember(s(ix1),s(ix)));
    ind=[ind ix1(i)];
    i=find(ismember(s(ix2),s(ix)));
    ind=[ind ix2(i)];
    i=find(ismember(s(ix3),s(ix)));
    ind=[ind ix3(i)];
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?