亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python實現解數獨程序代碼

2020-02-23 04:32:55
字體:
來源:轉載
供稿:網友

偶然發現linux系統附帶的一個數獨游戲,打開玩了幾把。無奈是個數獨菜鳥,以前沒玩過,根本就走不出幾步就一團漿糊了。

于是就打算借助計算機的強大運算力來暴力解數獨,還是很有樂趣的。

下面就記錄一下我寫解數獨程序的一些思路和心得。

一.數獨游戲的基本解決方法

編程籠統的來說,就是個方法論。不論什么程序,都必須將問題的解決過程分解成計算機可以實現的若干個簡單方法。俗話說,大道至簡。對于只能明白0和1的計算機來說,就更需要細分步驟,一步一步的解決問題了。

首先來思考一下解數獨的基本概念。

數獨橫九豎九共八十一個格子,同時又分為9個九宮格。規則很簡單——需要每一個格中的數字,都保證與其所在橫排和豎排以及九宮格內無相同數字。

所以我們的大概思路就是,從第一個空格開始試著填數,從 1 開始填,如果 1 不滿足橫排豎排九宮格無重復的話,就再填入 2 ,以此類推,直到填入一個暫時滿足規則的數,中斷此格,移動到下一個空格重復這個過程。

如果到達某個空格發現已經無數可選了,說明前面某一格填錯了,那就返回上一格,從上一格的中斷處繼續往 9 嘗試,直到這樣回朔到填錯的那一格。

這樣的話,我們就可以整理出重要的步驟了:

•尋找到下一個空格
•輪流填入格中數字 1 到 9
•遞歸判斷填入數是否符合規則

二.程序

首先測試數獨使用的是芬蘭數學家因卡拉花費3個月時間設計出的世界上迄今難度最大的數獨。如下

將空格用 0 表示,同時將數獨表示成嵌套的列表,這樣每格的行數和列數就正好是列表中每個對應數的索引。

程序如下:

 #coding=utf-8 import datetime class solution(object):   def __init__(self,board):     self.b = board     self.t = 0    def check(self,x,y,value):#檢查每行每列及每宮是否有相同項     for row_item in self.b[x]:       if row_item == value:         return False     for row_all in self.b:       if row_all[y] == value:         return False     row,col=x/3*3,y/3*3     row3col3=self.b[row][col:col+3]+self.b[row+1][col:col+3]+self.b[row+2][col:col+3]     for row3col3_item in row3col3:       if row3col3_item == value:         return False     return True    def get_next(self,x,y):#得到下一個未填項     for next_soulu in range(y+1,9):       if self.b[x][next_soulu] == 0:         return x,next_soulu     for row_n in range(x+1,9):       for col_n in range(0,9):         if self.b[row_n][col_n] == 0:           return row_n,col_n     return -1,-1 #若無下一個未填項,返回-1    def try_it(self,x,y):#主循環     if self.b[x][y] == 0:       for i in range(1,10):#從1到9嘗試         self.t+=1         if self.check(x,y,i):#符合 行列宮均無條件 的           self.b[x][y]=i #將符合條件的填入0格           next_x,next_y=self.get_next(x,y)#得到下一個0格           if next_x == -1: #如果無下一個0格             return True #返回True           else:    #如果有下一個0格,遞歸判斷下一個0格直到填滿數獨             end=self.try_it(next_x,next_y)             if not end:  #在遞歸過程中存在不符合條件的,即 使try_it函數返回None的項               self.b[x][y] = 0  #回朔到上一層繼續             else:               return True    def start(self):     begin = datetime.datetime.now()     if self.b[0][0] == 0:       self.try_it(0,0)     else:       x,y=self.get_next(0,0)       self.try_it(x,y)     for i in self.b:       print i     end = datetime.datetime.now()     print '/ncost time:', end - begin     print 'times:',self.t     return   s=solution([[8,0,0,0,0,0,0,0,0],     [0,0,3,6,0,0,0,0,0],     [0,7,0,0,9,0,2,0,0],     [0,5,0,0,0,7,0,0,0],     [0,0,0,8,4,5,7,0,0],     [0,0,0,1,0,0,0,3,0],     [0,0,1,0,0,0,0,6,8],     [0,0,8,5,0,0,0,1,0],     [0,9,0,0,0,0,4,0,0]]) 73 s.start()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产97在线亚洲| 国产精品9999| 亚洲欧洲日本专区| 精品视频在线导航| 亚洲精品久久久久| 性欧美视频videos6一9| 国产精品久久久久久五月尺| 欧美夜福利tv在线| 午夜精品一区二区三区视频免费看| 国产一区二区久久精品| 97香蕉久久超级碰碰高清版| 91久久综合亚洲鲁鲁五月天| 亚洲二区在线播放视频| 亚洲娇小xxxx欧美娇小| 精品一区二区三区三区| 亚洲一区二区三区在线免费观看| www.日本久久久久com.| 免费91麻豆精品国产自产在线观看| 亚洲国产精久久久久久久| 欧美日韩亚洲精品内裤| 日韩在线观看免费高清| 亚洲成人a级网| 亚洲美女福利视频网站| 97视频免费在线看| 亚洲男人av电影| 深夜成人在线观看| 亚洲色在线视频| 成人在线视频福利| 亚洲欧美日韩中文在线| 亚洲精品久久视频| 欧美日韩国产中文精品字幕自在自线| 久久电影一区二区| 久久青草精品视频免费观看| 日本在线精品视频| 久久国产精品影片| 久久久久久久网站| 亚洲国产小视频| 日韩欧美亚洲范冰冰与中字| 久久久www成人免费精品张筱雨| 最新国产精品亚洲| 国产精品成人一区二区| 亚洲精品aⅴ中文字幕乱码| 国产精品九九九| 国产大片精品免费永久看nba| 黄色一区二区三区| 国产精品va在线播放| 91亚洲精品久久久久久久久久久久| 色午夜这里只有精品| 欧美精品九九久久| 欧美午夜片欧美片在线观看| 在线亚洲午夜片av大片| 亚洲国产又黄又爽女人高潮的| 国产精品精品久久久久久| 欧美激情乱人伦一区| 精品久久久久久久大神国产| 亚洲九九九在线观看| 一本一本久久a久久精品牛牛影视| 国产精品久久77777| 亚洲精品999| 欧美孕妇孕交黑巨大网站| 91久久久久久久久久久久久| 欧美另类xxx| 久久久噜噜噜久久中文字免| 不用播放器成人网| 国产中文字幕日韩| 亚洲精品日产aⅴ| 最近2019年日本中文免费字幕| 国产精品女人久久久久久| 一区三区二区视频| 国产欧美韩国高清| 中文字幕欧美精品在线| 国产精品av电影| 不卡av在线播放| 色综久久综合桃花网| 91视频九色网站| 国产99久久精品一区二区永久免费| 色午夜这里只有精品| 国产精品视频导航| 欧美精品日韩www.p站| 成人免费自拍视频| 91成人天堂久久成人| 欧美成人精品三级在线观看| 91久久综合亚洲鲁鲁五月天| 日韩欧美国产成人| 久久久久久久成人| 国产aⅴ夜夜欢一区二区三区| 91嫩草在线视频| 欧美人交a欧美精品| 国产精品美乳在线观看| 久久影视电视剧免费网站清宫辞电视| 日本欧美精品在线| 欧美日韩中国免费专区在线看| 亚洲夜晚福利在线观看| 久久久久久久久久久成人| 久久久成人的性感天堂| 久久免费观看视频| 国产精品第2页| 97在线免费视频| 欧美激情欧美狂野欧美精品| 欧美成人在线网站| 国产热re99久久6国产精品| 欧美国产亚洲精品久久久8v| 国产精品久久久久久久久借妻| 亚洲国产精品小视频| 岛国av一区二区| 国产成人精品av| 国产精品入口免费视| 精品国产精品三级精品av网址| 亚洲摸下面视频| 日本人成精品视频在线| 色小说视频一区| 久久av红桃一区二区小说| 欧美黑人视频一区| 久久久亚洲天堂| 欧美香蕉大胸在线视频观看| 国产精品入口免费视频一| 精品国产一区二区三区久久久| 国产在线不卡精品| 欧美老女人在线视频| 成人精品网站在线观看| 8x海外华人永久免费日韩内陆视频| 亚洲美女福利视频网站| 91精品国产综合久久男男| 久久在线精品视频| 久久久久久综合网天天| 国产精品免费一区豆花| 亚洲国产精品久久久久秋霞不卡| 日韩av大片免费看| 68精品国产免费久久久久久婷婷| 日韩电影中文字幕一区| 精品国产区一区二区三区在线观看| 日韩在线观看视频免费| 亚洲一区中文字幕在线观看| 亚洲成人激情在线观看| 亚洲黄色免费三级| 日韩视频免费观看| www欧美日韩| 亚洲综合在线播放| 欧美在线中文字幕| 欧美激情视频给我| 亚洲精品xxx| 91免费在线视频网站| 亚洲一区二区国产| 欧美资源在线观看| 欧美中文字幕在线观看| 国产精自产拍久久久久久蜜| 日韩美女av在线| 茄子视频成人在线| 91手机视频在线观看| 欧美二区乱c黑人| 伊人久久免费视频| 久久免费视频网站| 国产精品电影一区| 狠狠躁天天躁日日躁欧美| 国产精品白嫩初高中害羞小美女| 欧美日韩综合视频网址| 91精品久久久久久久久| 亚洲欧美国产精品专区久久| 中文字幕日韩在线播放| 欧美激情一级精品国产| 亚洲人午夜精品| 亚洲精品视频网上网址在线观看| 日韩免费电影在线观看| 亚洲精品国产精品自产a区红杏吧|