erlang wx图形界面学习-4

来源:互联网 发布:陈翔6点半之网络大电影 编辑:程序博客网 时间:2024/06/16 21:40

本来打算断了不写了的,看了不知道多久,还到处找sudoku的生成算法什么的,希望有一点思路,然-效果甚微.
瞅了瞅我的wx图形界面学习都-3 了,虽然是瞎搞的,估计也没啥人看,但是,这样就断了,我很难受啊.既然如此,只好拿出我的杀手锏了,抄代码!!!PS:这是刚工作的时候干的事情,看不懂代码,没法子,只好抄代码了.还别说,抄一抄的,好像有点思路了,2333.
要想看明白sudoku_game这个模块,首先就是empty_table/1这个方法,它究竟搞了啥子事情.它的#s里面的值究竟是个什么意思.
empty_table/1:
lists:seq(1,9): 这个大家都知道嘛,生成1-9的列表.
gb_sets:from_ordset(Nine):把列表搞成gb二叉平衡树的形式.
Mat = list_to_tuple([D || _ <- Nine]),生成一个元组,一共有9个值,每一个都是一个包含1-9数字的gb_set.
如图所示:

Poss = list_to_tuple([D || _ <- lists:seq(1,9*9)]) ,生成一个元组,元组共81个值,每个值都包含1-9的数字.元组下标1-81,表示的是具体格子的位置,每一个小格子可以存在的值gb_set来表示,在刚生成的时候,可以为的值都是1-9.
如图所示:
这里写图片描述
Vals = list_to_tuple([0 || _ <-lists:seq(1,9*9)]):生成一个元组,一共有81个值,这个表示格子具体的值了
Must = list_to_tuple([gb_sets:empty() || _ <-lists:seq(1,9*3)]):
生成一个元组tuple,共27个值,每个值都是一个gb_sets
现在说下-record(s,{gfx,gen,games=[],p,m,mr,mc,v}).
gfx,gen,games[]就不说了,说下empty_table/1中赋予的值p,m,mr,mc,v,分别是什么意思.
S#s{p=Poss,m=Mat,mr=Must,mc=Must,v=Vals}.
p = Poss:上面讲过了,这个记录的是81个格子的位置,以及格子可能的值,在初始化empty_table的时候,所有的格子没有填入任何一个值,所以1-9的值都是可能的,存入的也是一个包含1-9的gb_sets
m = Mat 上面讲过了.
mr = Must: r的意思时row,根据后面代码的测试,mr是这样的(PS:搞了好久才明白,都想死了)
如图所示:
这里写图片描述
mr 生成了一个值为27的tuple,每一个值都包含着3个小格子,最开始的时候为27个坐标的值都是空.
mc=must:c为col,这里意思是根mr类似的.
如图所示:
这里写图片描述
ok,现在#s这些值代表着什么弄清楚了,接下来就可以顺着这个思路搞下去.

原创粉丝点击