日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python deepcopy函数_用Python解数独[6]:递归获得最终答案

發布時間:2024/9/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python deepcopy函数_用Python解数独[6]:递归获得最终答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 用Python解數獨[0]
  • 用Python解數獨[1]:求每個單元格的行值域
  • 用Python解數獨[2]:求列值域和九宮格值域
  • 用Python解數獨[3]:求總值域
  • 用Python解數獨[4]:縮減值域
  • 用Python解數獨[5]:檢測唯一值縮減值域
  • 用Python解數獨[6]:遞歸獲得最終答案
  • 用Python解數獨[7]:遞歸(完結篇)

  • [2][1] 解決數獨問題基本思路

    7、遞歸獲得最終答案

    上一回我們對于值域列表縮減函數進行了改造,增加了檢測唯一值的方法,但最終我們依然沒有得到答案,還有很多單元格的答案沒有確定,應該怎么辦呢?

    在當前這種情況下,我們已經無法從數獨中直接確定某個單元格的答案了,但是我們可以用試驗的辦法,去驗證某個單元格的答案是值域里的哪一個值。我們以第7行第7列單元格為例,我們假設它的值是1,則這個變化會引起一系列的變化,最終我們得到這個:

    在第二個九宮格出現了2個7,因此我們可以判斷第7行第7列的值不是1,而應該是6。我們通過這種測試驗證的方法獲得了某個單元格的答案。我們現在需要用代碼來實現:

    # 主函數,輸入值域列表,如遇到多個取值的單元格,依次嘗試值域里的每個值,通過遞歸的方法檢測值是否正確

    這段代碼其實還是挺復雜的,容我細細解讀:

    # 主函數,輸入值域列表,如遇到多個取值的單元格,依次嘗試值域里的每個值,通過遞歸的方法檢測值是否正確
    • 我們設置i和j兩個循環,是為了遍歷total_value_range里的每一個元素
    • 當len(total_value_range[i][j]) = 1時,也就是說這個單元格是已知單元格,取值已經確定了;如果len(total_value_range[i][j]) > 1,這個單元格是未知單元格,值域列表有多個取值;
    • 對于未知單元格,我們遍歷它的值域,同時拷貝一份total_value_range,并把值域里的值賦給test_value[i][j],開始進行“試驗”,看test_value[i][j]里的哪一個值是正確的;
    # 檢查行值域列表是否合法
    • 賦值之后,我們立即使用之前的generator_soduku()和reduce_totalValueRange()方法,基于已有條件生成一個最新的值域列表;
    • 然后我們需要做的是,用soduku_checkRepeat()方法檢驗當前的值域列表是否合法,soduku_checkRepeat()方法的原理也很簡單:
      • 首先我們寫出一個檢查行值域列表是否合法的函數:將一行已知單元格都選出放到一個列表里,檢查列表是否有重復值;
      • 有了行值域檢查函數,只需將數獨進行行列轉換和九宮格轉換然后分別進行檢測,如果三項檢測均為True,則最后返回True,有一項False,最后返回False
    • 如果soduku_checkRepeat()顯示當前值域列表合法,則使用sodukuRate()方法檢測當前值域列表每個單元格是否都是已知單元格(各單元格值域長度均為1)
      • 若每個單元格值域長度均為1,則說明已經得到最終正確答案,則返回test_value,即最終正確答案;
      • 若sodukuRate(test_value)不為1,則說明經過一番操作后還未得到正確答案,或者得到錯誤答案,因此我們將當前的值域列表test_value作為參數,用if判斷trial(test_value),這個就用上了遞歸的概念,我們稍后詳細解釋;
    • 如果soduku_checkRepeat()顯示當前值域列表不合法,則說明total_value_range[i][j]當前的取值k不正確,我們continue,繼續循環;
    • 如果for k in total_value_range[i][j],這個循環結束了,說明所有的取值k都是導向錯誤的結果(在第一層trial()是不會出現的,會出現在第二層trial()時),則返回False;

    最終運行代碼,得到了結果

    PS

    把全部源碼展示出來:

    import

    下一期我們將詳細解釋這個利用了遞歸的函數,具體是如何運行的,我們這個用Python解數獨欄目也將迎來尾聲。


    下一篇鏈接:用Python解數獨[7]:遞歸(完結篇)

    總結

    以上是生活随笔為你收集整理的python deepcopy函数_用Python解数独[6]:递归获得最终答案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 97福利网 | 夜夜操导航 | 日本一区二区免费在线 | 69视频免费看| 成人av影院在线观看 | 老熟女毛茸茸浓毛 | 一本到在线 | 在线观看日本一区二区 | 韩日精品视频 | 国产一二三视频 | 俺也去网站 | 香蕉视频网页 | 国产黄色在线免费观看 | 挪威xxxx性hd极品 | 又黄又爽无遮挡 | 日韩精品一区二区在线视频 | 少妇av一区 | 电影《两个尼姑》免费播放 | 爽爽窝窝午夜精品一区二区 | 欧美入口 | 亚洲麻豆一区二区三区 | 国产精品无码久久久久 | 国产v亚洲| 欧美天堂一区 | 久久精品这里只有精品 | 香蕉视频18 | 91国产免费看 | 亚洲人成亚洲人成在线观看 | 亚洲综合99| 亚洲精品一二三区 | 九热视频在线观看 | 精品美女在线 | 视频二区在线观看 | 色婷婷yy | 深夜成人在线观看 | 日本一区二区三区在线观看视频 | 青青青视频在线 | 中文字幕国产专区 | 欧美一区亚洲二区 | 中文字幕永久免费 | 国产精品理论片在线观看 | 91精品国产综合久久久久 | 国产在线观看免费网站 | 在线观看成年人网站 | 人人草在线观看 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 精品99久久久久成人网站免费 | 九色在线 | 午夜视| 五月开心网 | 亚欧在线免费观看 | 中文字幕乱伦视频 | 久久中文字幕人妻 | 蜜桃av色偷偷av老熟女 | 极品少妇视频 | 在线中文字幕第一页 | 色涩涩| 韩国av中文字幕 | 欧美九九九 | 人妻少妇精品无码专区久久 | 国产亚洲精品美女 | 婷婷射丁香 | 毛片在线免费观看网址 | 日本肉体xxxx裸体xxx免费 | 加勒比日韩 | 成年人免费网站在线观看 | 四虎国产成人精品免费一女五男 | 东北少妇高潮抽搐 | 97av在线播放 | 色女综合 | 成人免费一区二区三区在线观看 | 熟女俱乐部一区二区 | 亚洲另类视频 | 一本加勒比北条麻妃 | 欧美成人国产精品一区二区 | 久久美女精品 | 私密按摩massagexxx| 欧美在线免费看 | 黄av网 | 91嫩草精品 | 青青青青青青草 | 亚洲欧美激情另类 | 一区二区三区四区中文字幕 | 夜间福利视频 | 第一区免费在线观看 | 国产免费一区二区三区最新不卡 | 又黄又色 | 欧美性生活免费视频 | 欧美xxxx视频 | 一区二区在线免费看 | 男人免费网站 | 国产乱子伦精品无码码专区 | 欧美11p | 宅男的天堂 | 亚洲妇女体内精汇编 | 干综合网 | 国产丝袜一区二区 | 亚洲成人网在线 | 色婷五月|