改進版的python求解數獨
#py4.py def force(k): global isok if isok: return if sd[k]==0: for m in range(1,10): mm = 1 if m in ex1[k]: mm = 0 else: for n in range(0,9): if ((m == sd[k//27*27+(k%9//3)*3+n+n//3*6]) or (m == sd[9*n+k%9]) or (m == sd[k//9*9+n])): mm = 0 break if mm: sd[k] = m if (k == 80): isok = 1 print(sd) #show new sd return force(k + 1) sd[k] = 0 else: if (k == 80): isok = 1 print(sd) #show new sd return force(k + 1) def same_row(i,j): return (i//9 == j//9) def same_col(i,j): return (i-j) % 9 == 0 def same_block(i,j): return (i//27 == j//27 and i%9//3 == j%9//3) isok=0 s="800000000003600000070090200050007000000045700000100030001000068008500010090000400" sd=list(range(81)) for i in range(81): sd[i]=int(s[i]) ex1=dict() #neiber of each cell for i in range(81): ex1[i]=set() if sd[i]==0: for j in range(81): if j!=i and (same_row(i,j) or same_col(i,j) or same_block(i,j)) and sd[j]<>0: ex1[i].add(sd[j]) print (ex1[1]) force(0)
快了1倍
D:\Python27>\a\timer python py3.py Timer 3.01 Copyright (c) 2002-2003 Igor Pavlov 2003-07-10 [8, 1, 2, 7, 5, 3, 6, 4, 9, 9, 4, 3, 6, 8, 2, 1, 7, 5, 6, 7, 5, 4, 9, 1, 2, 8, 3, 1, 5, 4, 2, 3, 7, 8, 9, 6, 3, 6, 9, 8, 4, 5, 7, 2, 1, 2, 8, 7, 1, 6, 9, 5, 3, 4, 5, 2, 1, 9, 7, 4, 3, 6, 8, 4, 3, 8, 5, 2, 6, 9, 1, 7, 7, 9, 6, 3, 1, 8, 4, 5, 2] Kernel Time = 0.015 = 00:00:00.015 = 1% User Time = 0.936 = 00:00:00.936 = 93% Process Time = 0.951 = 00:00:00.951 = 95% Global Time = 0.999 = 00:00:00.999 = 100% D:\Python27>\a\timer py4.py Timer 3.01 Copyright (c) 2002-2003 Igor Pavlov 2003-07-10 set([8, 9, 3, 5, 7]) [8, 1, 2, 7, 5, 3, 6, 4, 9, 9, 4, 3, 6, 8, 2, 1, 7, 5, 6, 7, 5, 4, 9, 1, 2, 8, 3, 1, 5, 4, 2, 3, 7, 8, 9, 6, 3, 6, 9, 8, 4, 5, 7, 2, 1, 2, 8, 7, 1, 6, 9, 5, 3, 4, 5, 2, 1, 9, 7, 4, 3, 6, 8, 4, 3, 8, 5, 2, 6, 9, 1, 7, 7, 9, 6, 3, 1, 8, 4, 5, 2] Kernel Time = 0.015 = 00:00:00.015 = 2% User Time = 0.514 = 00:00:00.514 = 86% Process Time = 0.530 = 00:00:00.530 = 89% Global Time = 0.593 = 00:00:00.593 = 100%
相關文章
- 僅50行Python程式碼!數獨求解!4秒!Python
- 我目前找到的最快的數獨求解程式
- 另一個數獨求解c++程式C++
- 又一個數獨求解c++程式C++
- [LeetCode] Sudoku Solver 求解數獨LeetCode
- 同樣演算法的Python和C求解數獨程式速度比較演算法Python
- 改進《純數學教程(紀念版)》中的根式
- PL/SQL解數獨在簡單優化基礎上的改進SQL優化
- Python 3.4.0 釋出,數百項改進Python
- Cplex混合整數規劃求解(Python API)PythonAPI
- 最難數獨的快速解法 - pythonPython
- 遺傳演算法求解TSP問題(python版)演算法Python
- 改進版glide golang版本控制IDEGolang
- python解數獨的簡單優化Python優化
- shell的引數和指令碼流程改進指令碼
- 微軟工程師希望獨立impl程式改進Chromium的滾動效果微軟軟工工程師
- uniapp js 數獨小遊戲 寫死的簡單數獨 數獨 3.0APPJS遊戲
- Vue 前端許可權控制的優化改進版Vue前端優化
- 伸縮自如的時光軸實現——改進版
- 關於《Python基礎教程第二版》中4-1程式碼的改進Python
- 【ybtoj 高效進階 1.4】【深搜】數獨遊戲遊戲
- 使用Xamarin開發移動應用示例——數獨遊戲(四)產生新遊戲演算法改進遊戲演算法
- 梯度下降法中導數的求解梯度
- Android退出應用最優雅的方式(改進版)Android
- 改變數學的命運——《計算進化史》變數
- Python 3.8 新功能-來自社群翻譯貼-個人改進程式碼優化版Python優化
- 改進uwsgi啟動指令碼,使其支援多個獨立配置檔案指令碼
- 【演算法詳解】求解數值的整數次方演算法
- Python 3.11以來效能改進的背後原理Python
- LeetCode刷題進階之有多少小於當前數字的數字(1365)(暴力求解)LeetCode
- python 入門實戰改進B站小甲魚飛機大戰增強版4.0Python
- 一個利用DLX演算法的Python解數獨程式演算法Python
- vue 數獨Vue
- 數獨遊戲遊戲
- 四則運算改進版+心得體會+總結
- 求區間不同數的個數【樹狀陣列求解】陣列
- OnionArch 2.0 - 基於DDD的洋蔥架構改進版開源架構
- 來自 Fedora 24 工作站版的四大改進