Python-based Sudoku Algorithm Instances and python Algorithm Instances
This example describes how to implement the sudoku Algorithm in python. Share it with you for your reference. The details are as follows:
#-*-Coding: UTF-8-*-''' Created on 2012-10-5 @ author: Administrator ''' from collections import defadicdictimport itertoolsa = [[0, 7, 0, 0, 0, 0, 0, 0], #0 [5, 0, 3, 0, 0, 6, 0, 0], #1 [0, 6, 2, 0, 8, 0, 7, 0], #2 # [0, 0, 0, 3, 0, 2, 0, 5, 0], #3 [0, 0, 4, 0, 1, 0, 3, 0, 0], #4 [0, 2, 0, 9, 0, 5, 0, 0, 0], #5 # [0, 0, 1, 0, 3, 0, 5, 9, 0], #6 [0, 0, 0, 4, 0, 0, 6, 0, 3], #7 [0, 0, 0, 0, 0, 0, 0, 2, 0], #8 #0, 1, 2, 3, | 4, 5, 6, | 7, 8] # a = [# [0, 0, 0, 0, 0, 0, 0, 0], #0 # [0, 0, 0, 0, 0, 0, 0, 0, 0], #1 # [0, 0, 0, 0, 0, 0, 0, 0, 0], #2 ### [0, 0, 0, 0, 0, 0, 0, 0], #3 # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], #4 # [0, 0, 0, 0, 0, 0, 0], #5 ### [0, 0, 0, 0, 0, 0, 0, 0], #6 # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], #7 # [0, 0, 0, 0, 0, 0, 0, 0], #8 #0, 1, 2, 3, | 4, 5, 6, | 7, 8 #] exis Ts_d = dict (h_idx, y_idx), v) for h_idx, y in enumerate (a) for y_idx, v in enumerate (y) if v )) h_exist = defaultdict (dict) v_exist = defaultdict (dict) for k, v in exists_d.items (): h_exist [k [0] [k [1] = v v_exist [k [1] [k [0] = vaa = list (itertools. permutations (range (1, 10), 9) h_d ={} for hk, hv in h_exist.items (): x = filter (lambda x: all (x [k] = v for k, v in hv. items (), aa) x = filter (la Mbda x: all (x [vk]! = V for vk, vv in v_exist.items () for k, v in vv. items () if k! = Hk), x) # print x h_d [hk] = xdef test (x, y ): return all ([y [I] not in [x _ [I] for x _ in x] for I in range (len (y)]) def test2 (x ): return len (set (x ))! = 9 s = set (range (9) sudokus = [] for l0 in h_d [0]: for l1 in h_d [1]: if not test (l0 ,), l1): continue for l2 in h_d [2]: if not test (l0, l1), l2): continue #1, 2, verify if test2 ([l0 [0], l0 [1], l0 [2], l1 [0], l1 [1], l1 [2], l2 [0], l2 [1], l2 [2]): continue if test2 ([l0 [3], l0 [4], l0 [5], l1 [3], l1 [4], l1 [5], l2 [3], l2 [4], l2 [5]): continue if test2 ([l0 [6], l0 [7], l0 [8], l1 [6], l1 [7], l1 [8], l2 [6], l2 [7], l2 [8]): continue for l3 in h_d [3]: if not test (l0, l1, l2), l3 ): continue for l4 in h_d [4]: if not test (l0, l1, l2, l3), l4): continue for l5 in h_d [5]: if not test (l0, l1, l2, l3, l4), l5): continue #4, 5, 6 rows for verification if test2 ([l3 [0], l3 [1], l3 [2], l4 [0], l4 [1], l4 [2], l5 [0], l5 [1], l5 [2]): continue if test2 ([l3 [3], l3 [4], l3 [5], l4 [3], l4 [4], l4 [5], l5 [3], l5 [4], l5 [5]): continue if test2 ([l3 [6], l3 [7], l3 [8], l4 [6], l4 [7], l4 [8], l5 [6], l5 [7], l5 [8]): continue for l6 in h_d [6]: if not test (l0, l1, l2, l3, l4, l5,), l6): continue for l7 in h_d [7]: if not test (l0, l1, l2, l3, l4, l5, l6), l7): continue for l8 in h_d [8]: if not test (l0, l1, l2, l3, l4, l5, l6, l7), l8): continue #, 7, 8, and 9 rows for verification if test2 ([l6 [0], l6 [1], l6 [2], l7 [0], l7 [1], l7 [2], l8 [0], l8 [1], l8 [2]): continue if test2 ([l6 [3], l6 [4], l6 [5], l7 [3], l7 [4], l7 [5], l8 [3], l8 [4], l8 [5]): continue if test2 ([l6 [6], l6 [7], l6 [8], l7 [6], l7 [7], l7 [8], l8 [6], l8 [7], l8 [8]): continue print l0 print l1 print l2 print l3 print l4 print l5 print l6 print l7 print l8 sudokus. append (l0, l1, l2, l3, l4, l5, l6, l7, l8 ))
I hope this article will help you with Python programming.