|
楼主 |
发表于 2017-10-9 18:18:20
|
显示全部楼层
本帖最后由 randomzoom 于 2017-10-9 18:19 编辑
排斥范围:对每个空格用排斥法得到一个10二进制。
使用二进制,是为了方便用矩阵记录可选/排斥数字,or,and很方便,无需用笨拙的if判断
可选、排斥的转换也方便。
Define exzoom(mat,i,j)=
Func
:Local k,p,q,u,v,zoom
:©i=1,2,3,4,...,..9
:©p=0,0,0,3,...,..6
:©q=0,0,0,3,...,..6
:p:=3*iPart(((i-1)/(3)))
:q:=3*iPart(((j-1)/(3)))
:0→zoom
:For k,1,9
:©k=1,2,3,4,...,..9
:©u=1,1,1,2,...,..3
:©v=1,2,3,1,...,..3
:u:=iPart(((k-1)/(3)))+1
:v:=mod(k-1,3)+1
:zoom or 2^(mat[i,k]) or 2^(mat[k,j])→zoom©行,列
:zoom or 2^(mat[p+u,q+v])→zoom ©3*3小方格
:EndFor
:Return zoom
:EndFunc
|
|