數(shù)獨(dú)源程序py

數(shù)獨(dú)源程序py

ID:43000178

大?。?3.01 KB

頁數(shù):7頁

時(shí)間:2019-09-23

數(shù)獨(dú)源程序py_第1頁
數(shù)獨(dú)源程序py_第2頁
數(shù)獨(dú)源程序py_第3頁
數(shù)獨(dú)源程序py_第4頁
數(shù)獨(dú)源程序py_第5頁
資源描述:

《數(shù)獨(dú)源程序py》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、#!/usr/bin/python#coding=utf-8#sudoku#importrandomclasssudoku(object):???def__init__(self):???????self.col=0???????self.row=0???????self.num=[iforiinrange(9)]???????#初始化數(shù)獨(dú)數(shù)據(jù)???????self.sd=[[0forcolumninrange(9)]forrowinrange(9)]???defClear(self):???????"""???????清空當(dāng)前格的數(shù)值???????"""????

2、???self.sd[self.row][self.col]=0???defGenSudoku(self):???????pass???defisOK(self,bit):???????"""???????是否滿足行、列和3X3區(qū)域不重復(fù)的要求???????"""???????return(self.checkRow(bit)andself.checkCol(bit)andself.checkNine(bit))???defcheckRow(self,bit):???????"""???????檢查行是否符合要求,行沒有重復(fù)???????"""???????ifb

3、itinself.sd[self.row]:???????????returnFalse???????returnTrue???defcheckCol(self,bit):???????"""???????檢查列是否符合要求,列沒有重復(fù)???????"""???????foriinrange(9):???????????ifbit==self.sd[i][self.col]:???????????????returnFalse???????returnTrue???defcheckNine(self,bit):???????"""???????檢查3X3區(qū)域是否符

4、合要求,區(qū)域中沒有重復(fù)的記錄???????"""???????#獲得左上角的坐標(biāo)???????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???????#清除當(dāng)前的數(shù)字,方便重新填充???????self.Clear()???defisEnd(self):???????"""???????填充完成???????"""???????return(self.row==9)???defgenNum(self):???????"""???????生成隨機(jī)數(shù)字[1-9]???????"""???????#初始化數(shù)字序列

7、???????num=[nforninrange(1,10)]???????foriinrange(9):???????????#生成隨機(jī)數(shù)字???????????ranNum=random.choice(num)???????????#檢查隨機(jī)數(shù)字合法???????????if(self.isOK(ranNum)):???????????????#返回?cái)?shù)字???????????????returnranNum???????#如沒有滿足的數(shù)字,返回0???????return0???defranFix(self):???????#按照填充格,逐個(gè)填充???????

8、while

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。