Python編寫的超帥數獨可視化解題器

2021-03-02 科技之禪

數獨相信大家都玩過,它被稱為「聰明人的遊戲」,在很多人眼裡:

會玩數獨=高智商

為什麼?因為數獨能夠培養觀察力,提高反應力:數獨的練習能夠鍛鍊手眼腦的協調性、提高手腦並用的能力,鍛鍊大腦的思維靈活度,全面提高反應力。

非常適合孩子在成長過程中鍛鍊大腦,適合成年人在生活中激活思維。

不過當我們遇到不會解的數獨怎麼辦?對於我們這些學Python的人而言,答案當然是用Python算出來啦!

基於 Pygame-Sudoku-Solver 這個開源項目,可視化解決數獨問題變得極其簡單:
https://github.com/tymscar/Pygame-Sudoku-Solver

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,請訪問這篇文章:超詳細Python安裝指南 進行安裝。如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.

此外,推薦大家用VSCode編輯器,因為它可以在編輯器下方的終端運行命令安裝依賴模塊:Python 編程的最好搭檔—VSCode 詳細指南。

Windows環境下打開 Cmd (開始-運行-CMD),蘋果系統環境下請打開 Terminal (command+空格輸入Terminal),準備開始輸入命令安裝依賴。

1.在終端輸入以下命令下載該開源庫

git clone https://github.com/tymscar/Pygame-Sudoku-Solver.git


2.使用cd命令進入該文件夾,並安裝依賴:

cd Pygame-Sudoku-Solver
pip install -r requirements.txt


接下來,可以試試運行該項目了:


此時會出現一個空白3*3的九宮格

2.怎麼解題

這個開源項目的解題方法如下:

1.輸入題目數字 — 你只需要點擊空白區域,此時會回顯綠色方塊,輸入數字,如果數字合法則會填入框內,如果不合法則會閃現紅色。

2.當你將數獨題目裡的所有數字填寫完畢,單擊空格鍵即可開始運算:

而且,細心的作者還幫大家準備了夜晚模式,單擊「d」鍵可切換到夜晚模式:

3.原理

所有的解題原始碼都放在了solver.py文件中,大家可以在裡面看到整個解題過程。

作者沒有寫任何注釋,但是代碼邏輯思路是清晰的,比如核心判斷邏輯,Cell類裡的 isValid, 用於判斷某個值 (what變量) 放進某個 Cell 裡是否合法:

此處,lineV.cells 表示數組中每一列組成的cell;lineH.cells即每一行組成的cell;box.cells即每個子九宮格。他們都有一個共同的特點:其中不能出現重複的值。

因此你會看到如果某個值存在於這些cells當中,isValid直接返回False,表明其不應該出現在這個位置。

相關焦點

  • 神武3快速拿到高難度數獨成就
    神武3快速拿到高難度數獨成就  在神武3中,有很多玩家都希望自己的成就可以達到仙龍級別。
  • 使用Python編寫數獨遊戲自動出題程序
    數獨是一個很好玩的遊戲,可以鍛鍊推理能力。下面的代碼可以自動生成數獨遊戲題目。
  • Python秒解數獨
    19世紀80年代,有美國人根據這種拉丁方陣發明了數獨的雛形。20世紀70年代,出現了公認的數獨最早的見報版本。1984年一位日本學者將其介紹到了日本,起名為「數字は獨身に限る」(すうじはどくしんにかぎる),後改名為「數獨」(すうどく),其中「數」(すう)是數字的意思,「獨」(どく)是唯一的意思。
  • 推薦: 一本「高顏值」的Python語言數據可視化圖書
    《python數據可視化之美》主要介紹如何使用python中的matplotlib、seaborn、plotnine、basemap等包繪製專業圖表。本書先介紹了python語言編程基礎知識,以及使用numpy和pandas兩個包的數據操作方法;再對比了matplotlib、seaborn和plotnine三個包的圖形語法。
  • 數據統計可視化——python生成詞雲
    有的人會認為它是文本挖掘的可視化、有的人 會給一些用戶打上標籤、有的人則只是想玩玩這酷炫的詞彙……但詞雲產生的視覺效果才是讓人更著迷的地方。詞雲主要是對文本中出現頻率較高的「關鍵詞」進行視覺上的突出,讓人更直觀地看出文本的重點。本文針對上一篇文章
  • 一本很適合幼兒園孩子玩的數獨書--《金牌數獨》
    雖然對於很多的高階數獨技巧還是只能看的懂,而不能熟練運用;但是,還是可以說我已經從剛開始的數獨小白進步到現在的數獨「大白」了,也算是長了些經驗。我之前記錄過兩篇自己總結的數獨技巧的文章:媽媽這兩天的新研究--六宮格數獨,六宮格數獨水平大有長進了,那時都是每次帶著帥帥做不出來後,自己上網搜索方法再實際運用,徹底弄通後,再給帥帥講解怎麼做。
  • 【Python教程】用Python進行數據可視化
    在本文中,我將介紹如何開始使用Python和matplotlib、seaborn兩個庫對數據進行可視化。$ python --versionPython 3.6.9$ pip3 --versionpip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
  • 【python】Tkinter可視化窗口(三)
    精彩知識回顧前兩個Tkinter文章為:【python】Tkinter可視化窗口一【python】Tkinter窗口可視化二from_和to:表示從from_的值到to的值,用from_而不用from的原因是from是python的關鍵字!
  • Python 可視化神器--Plotly
    學習Python是做數分析的最基礎的一步,數據分析離不開數據可視化。Python第三方庫中我們最常用的可視化庫是 pandas,matplotlib,pyecharts,當然還有 Tableau,另外最近在學習過程中發現另一款可視化神器-Plotly,它是一款用來做數據分析和可視化的在線平臺,功能非常強大,可以在線繪製很多圖形比如條形圖、散點圖、餅圖、直方圖等等。
  • Python的可視化工具概述
    >ggplotBokehpygalPlotly在例子用,我將使用pandas操作數據,並啟動其可視化.在大多數情況下使用這些工具不需要pandas,但是我覺得pandas+可視化工具如此普遍,這是最好的起點。
  • ​數據可視化 | 6個基本可視化Python庫
    數據可視化是使用可視元素(例如圖表,圖形等)表示數據的過程,有助於從數據中獲取有意義的見解。它旨在揭示數據背後的信息,並進一步幫助查看者查看數據中的結構。數據可視化將使任何人只要對數據科學的了解最少,即可獲得科學發現,並幫助人們輕鬆地交流信息。畢竟,一張圖片勝過千言萬語。在本文中我們將介紹一些Python支持的最出色的可視化庫。
  • 如何編寫和運行Python程序
    ● 使用Pyhton自身提供的交互式解釋器編寫Python程序● 使用Python自身提供的IDLE集成開發環境編寫Python程序● 使用eclipse集成開發環境編寫Python程序進入Windows命令行窗口,輸入python命令啟動交互式解釋器,輸入python語句並執行,如下圖所示。
  • 使用biopython可視化染色體和基因元件
    基因組結構元件的可視化有多種方式,比如IGV等基因組瀏覽器中以track為單位的展示形式,亦或以circos為代表的圈圖形式,比如在細胞器基因組組裝中,基因元件常用圈圖形式展示,示例如下
  • 【0405】數獨學習的五個階段
    或者閱讀「中小學生數獨」公眾號中關於謝三題目的解析。·謝三:謝道臺(臺灣出題者)每日五題的第三題,由於技巧融合使用,使得觀察難度非常大,題目質量極高3.標準數獨小有所成    這個階段已經可以獨立解開一些稍有難度的題目,但是用時可能相對較久。
  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    01為什麼使用PyQtGraph庫我們知道,在Python中,已經有了很多可供選擇的數據可視化庫。但是這些繪圖庫也存在著不足,即在圖形繪製速度上有所欠缺,特別是對於科研算法方面的數據可視化,很多情況需要實時繪圖,要求能夠提供儘可能快的繪製刷新速度,那這些庫顯的有些力不從心了。而我們下面要介紹的繪圖庫-PyQtGraph庫,則在繪圖速度方面表現尤其突出,在不失繪圖美觀、功能強大的前提下,在繪圖速度方面作了極大的優化,特別適合於實時數據採集的動態圖形繪製場合。
  • Python編寫代碼的規範要求
    打開APP Python編寫代碼的規範要求 碼農阿勇 發表於 2020-01-16 17:44:00 在我們日常生活中,做什麼事情講究規矩
  • 決策樹可視化-python
    決策樹相較於其他機器學習模型具有較好的解釋性,也容易將其結果進行可視化展示,pyth
  • Python中map函數的解釋和可視化
    Python中zip()函數的解釋和可視化Python中enumerate函數的解釋和可視化先重溫一下迭代(Iteration)、迭代器對象(iterable)、迭代器(iterator )的概念:語法:map(func, *iterables)如果沒有map(),我們將不得不編寫複雜的代碼以在多個項目上「循環」給定的函數。以一個整潔的小實驗為例:我們有一個10個單詞的列表。
  • 1月8日積木AI課與北京數獨協會達成獨家戰略合作共同研發數獨AI課程
    積木數學思維AI課,由清華、北大、北師大等名校名師領銜,選聘兒童教育領域深耕數年的一線教師組成專業教研團隊,並特聘小學數學教材編寫專家作為研發顧問,研發出基於領先AI技術的數學思維課程。  AI數據量化學習效果  學習平臺智能分析學習情況,形成可視化成長記錄,學習效果量化可見。
  • Python可視化教程(上)-基礎篇
    經過學習之後,我總結了利用python實現可視化的三個步驟:確定問題,選擇圖形轉換數據,應用函數參數設置,一目了然python中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,