数独源程序py

数独源程序py

ID:43000178

大小:43.01 KB

页数:7页

时间:2019-09-23

数独源程序py_第1页
数独源程序py_第2页
数独源程序py_第3页
数独源程序py_第4页
数独源程序py_第5页
资源描述:

《数独源程序py》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#!/usr/bin/python#coding=utf-8#sudoku#importrandomclasssudoku(object):   def__init__(self):       self.col=0       self.row=0       self.num=[iforiinrange(9)]       #初始化数独数据       self.sd=[[0forcolumninrange(9)]forrowinrange(9)]   defClear(self):       """       清空当前格的数值       """    

2、   self.sd[self.row][self.col]=0   defGenSudoku(self):       pass   defisOK(self,bit):       """       是否满足行、列和3X3区域不重复的要求       """       return(self.checkRow(bit)andself.checkCol(bit)andself.checkNine(bit))   defcheckRow(self,bit):       """       检查行是否符合要求,行没有重复       """       ifb

3、itinself.sd[self.row]:           returnFalse       returnTrue   defcheckCol(self,bit):       """       检查列是否符合要求,列没有重复       """       foriinrange(9):           ifbit==self.sd[i][self.col]:               returnFalse       returnTrue   defcheckNine(self,bit):       """       检查3X3区域是否符

4、合要求,区域中没有重复的记录       """       #获得左上角的坐标       i=self.row/3*3       j=self.col/3*3       #横向检查       ifbitinself.sd[i][j:j+3]or           bitinself.sd[i+1][j:j+3]or           bitinself.sd[i+2][j:j+3]:           returnFalse       returnTrue   defNext(self):       """       下一填充格     

5、  """       ifself.col==8:           #Debug           #print"rownow...",self.row           self.row=self.row+1           self.col=0       else:           #print"colnow...",self.row,self.col           self.col=self.col+1   defPrev(self):       """       上一填充格       """       ifself.col

6、==0:           self.row=self.row-1           self.col=8       else:           self.col=self.col-1       #清除当前的数字,方便重新填充       self.Clear()   defisEnd(self):       """       填充完成       """       return(self.row==9)   defgenNum(self):       """       生成随机数字[1-9]       """       #初始化数字序列

7、       num=[nforninrange(1,10)]       foriinrange(9):           #生成随机数字           ranNum=random.choice(num)           #检查随机数字合法           if(self.isOK(ranNum)):               #返回数字               returnranNum       #如没有满足的数字,返回0       return0   defranFix(self):       #按照填充格,逐个填充       

8、while

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。