数独游戏程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%数独游戏程序,可以破解绝大部分数独题。
%用法:将所有文件复制到MATLAB工作目录下,或是将MATLAB工作目录修改为本文件夹所在路径。
%A是一个初始的99的方阵,空白处用0代替,调用TT=shudu(A),则生成结果。
function TT=fill1(A)
T=A;
i=1;
n1=0;n2=0;
flag1=judge1(T);
while i<10
n1=0;n2=0;
for j=1:9
if T(i,j)==0&i~=flag1(:,1)&j~=flag1(:,2)&iden(i,j,1,T)==0
n1=n1+1;
end
end
if n1==1
for j=1:9
if T(i,j)==0&i~=flag1(:,1)&j~=flag1(:,2)&iden(i,j,1,T)==0
T(i,j)=1;
flag1=judge1(T);
end
end
end
for j=1:9
if T(j,i)==0&j~=flag1(:,1)&i~=flag1(:,2)&iden(j,i,1,T)==0
n2=n2+1;
end
end
if n2==1
for j=1:9
if T(j,i)==0&j~=flag1(:,1)&i~=flag1(:,2)&iden(j,i,1,T)==0
T(j,i)=1;
flag1=judge1(T);
end
end
end
if n1==1|n2==1
i=0;
end
i=i+1;
end
TT=T;
function TT=fill2(A)
T=A;
i=1;
n1=0;n2=0;
flag2=judge2(T);
while i<10
n1=0;n2=0;
for j=1:9
if T(i,j)==0&i~=flag2(:,1)&j~=flag2(:,2)&iden(i,j,2,T)==0
n1=n1+1;
end
end
if n1==1
for j=1:9
if T(i,j)==0&i~=flag2(:,1)&j~=flag2(:,2)&iden(i,j,2,T)==0
T(i,j)=2;
flag2=judge2(T);
end
end
end
for j=1:9
if T(j,i)==0&j~=flag2(:,1)&i~=flag2(:,2)&iden(j,i,2,T)==0
n2=n2+1;
end
end
if n2==1
for j=1:9
if T(j,i)==0&j~=flag2(:,1)&i~=flag2(:,2)&iden(j,i,2,T)==0
T(j,i)=2;
flag2=judge2(T);
end
end
end
if n1==1|n2==1
i=0;
end
i=i+1;
end
TT=T;
function TT=fill3(A)
T=A;
i=1;
n1=0;n2=0;
flag3=judge3(T);
while i<10
n1=0;n2=0;
for j=1:9
if T(i,j)==0&i~=flag3(:,1)&j~=flag3(:,2)&iden(i,j,3,T)==0
n1=n1+1;
end
end
if n1==1
for j=1:9
if T(i,j)==0&i~=flag3(:,1)&j~=flag3(:,2)&iden(i,j,3,T)==0
T(i,j)=3;
flag3=judge3(T);
end
end
end
for j=1:9
if T(j,i)==0&j~=flag3(:,1)&i~=flag3(:,2)&iden(j,i,3,T)==0
n2=n2+1;
end
end
if n2==1
for j=1:9
if T(j,i)==0&j~=flag3(:,1)&i~=flag3(:,2)&iden(j,i,3,T)==0
T(j,i)=3;
flag3=judge3(T);
end
end
end
if n1==1|n2==1
i=0;
end
i=i+1;
end
TT=T;
function TT=fill4(A)
T=A;
i=1;
n1=0;n2=0;
flag4=judge4(T);
while i<10
n1=0;n2=0;
for j=1:9
if T(i,j)==0&i~=flag4(:,1)&j~=flag4(:,2)&iden(i,j,4,T)==0
n1=n1+1;
end
end
if n1==1
for j=1:9
if T(i,j)==0&i~=flag4(:,1)&j~=flag4(:,2)&iden(i,j,4,T)==0
T(i,j)=4;
flag4=judge4(T);
end
end
end
for j=1:9
if T(j,i)==0&j~=flag4(:,1)&i~=flag4(:,2)&iden(j,i,4,T)==0
n2=n2+1;
end
end
if n2==1
for j=1:9
if T(j,i)==0&j~=flag4(:,1)&i~=flag4(:,2)&iden(j,i,4,T)==0
T(j,i)=4;
flag4=judge4(T);
end
end
end
if n1==1|n2==1
i=0;
end
i=i+1;
end
TT=T;
function TT=fill5(A)
T=A;
i=1;
n1=0;n2=0;
flag5=judge5(T);
while i<10
n1=0;n2=0;
for j=1:9
if T(i,j)==0&i~=flag5(:,1)&j~=flag5(:,2)&iden(i,j,5,T)==0
n1=n1+1;
end
end