Leetcode:Sudoku Solver (python)
来源:互联网 发布:如何安装vb 编辑:程序博客网 时间:2024/06/05 22:30
Leetcode:
Sudoku Solver
Write a program to solve a Sudoku puzzle by filling the empty cells.
Empty cells are indicated by the character '.'
.
You may assume that there will be only one unique solution.
A sudoku puzzle...
...and its solution numbers marked in red.
1、先找横、竖和每9个的小矩阵中可能出现的数字。
2、找每个空的以上三个部分的交集,交集数为1的就为这个空改填的数。
3、循环查找,直到所有的数都被找到。
board = [[5,3,'.','.',7,'.','.','.','.'],[6,'.','.',1,9,5,'.','.','.'],['.',9,8,'.','.','.','.',6,'.'],[8,'.','.','.',6,'.','.','.',3],[4,'.','.',8,'.',3,'.','.',1],[7,'.','.','.',2,'.','.','.',6],['.',6,'.','.','.','.',2,8,'.'],['.','.','.',4,1,9,'.','.',5],['.','.','.','.',8,'.','.',7,9] ]base = [i for i in range(1,10)]horSum = [filter(lambda x:x != '.' and x not in i,base) for i in board]verSum = [filter(lambda x:x != '.' and x not in i,base) for i in map(list,zip(*board))]boaSum = []for i in range(1,4): for j in range(1,4): tempList = list([board[(i-1)*3:i*3][k][(j-1)*3:j*3] for k in range(3)]) tempList = tempList[0]+tempList[1]+tempList[2] boaSum.append(filter(lambda x:x!='.' and x not in tempList,base))def judge(i,j): if i < 3: l = [0,1,2] elif i > 5: l = [6,7,8] else: l = [3,4,5] if j < 3: r = [0,3,6] elif j > 5: r = [2,5,8] else: r = [1,4,7] return [i for i in l if i in r][0]success = Falsewhile not success: for i in range(9): success = True for j in range(9): if board[i][j] == '.': success = False nums = [nn for nn in horSum[i] if nn in verSum[j] and nn in boaSum[judge(i,j)]] #if i == 4: # print i,j,judge(i,j) # print horSum[i],verSum[j],boaSum[judge(i,j)] # print nums if len(nums) == 1: board[i][j] = nums[0] horSum[i].remove(nums[0]) verSum[j].remove(nums[0]) boaSum[judge(i,j)].remove(nums[0])print board
0 0
- Leetcode:Sudoku Solver (python)
- 【Leetcode】【python】Sudoku Solver
- 37. Sudoku Solver Leetcode Python
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- Leetcode 37 Sudoku Solver
- [Leetcode] Sudoku Solver
- Leetcode 37: Sudoku solver
- LeetCode Sudoku Solver
- [LeetCode]Sudoku Solver
- Leetcode Sudoku Solver
- LeetCode-Sudoku Solver
- LeetCode - Sudoku Solver
- LeetCode:Sudoku Solver
- 【leetcode】Sudoku Solver
- Leetcode: Sudoku Solver
- leetcode Sudoku Solver
- oracle form : app_item_property.SET_PROPERTY与set_item_property有什么区别?
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- DLL与COM(3)
- asm-finder-3.1.jar下载
- Unity延迟调用
- Leetcode:Sudoku Solver (python)
- coco2d-x 读取csv数据表
- repeat帮定删除按钮事件,并且生成去人删除提示
- iOS8.0+ 第三方输入法多次发送UIKeyboard相关的通知
- 遍历Map的四种方法
- Asp.net MVC4 中的视频上传和视频截图,以及删除上传文件
- 一些有用的mysql语句(不断积累更新)
- jquery easyui datagrid 获取Checked选择行(勾选行)数据
- linux下创建eclipse的桌面快捷方式