本文实例讲述了python实现数独算法的方法。分享给大家供大家参考。具体如下:
# -*- coding: utf-8 -*- ''' Created on 2012-10-5 @author: Administrator ''' from collections import defaultdict import itertools a = [ [ 0, 7, 0, 0, 0, 0, 0, 0, 0], #0 [ 5, 0, 3, 0, 0, 6, 0, 0, 0], #1 [ 0, 6, 2, 0, 8, 0, 7, 0, 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, 0], #1 # [0, 0, 0, 0, 0, 0, 0, 0, 0], #2 # # # [0, 0, 0, 0, 0, 0, 0, 0, 0], #3 # [0, 0, 0, 0, 0, 0, 0, 0, 0], #4 # [0, 0, 0, 0, 0, 0, 0, 0, 0], #5 # # # [0, 0, 0, 0, 0, 0, 0, 0, 0], #6 # [0, 0, 0, 0, 0, 0, 0, 0, 0], #7 # [0, 0, 0, 0, 0, 0, 0, 0, 0], #8 ## 0, 1, 2, 3,|4, 5, 6,|7, 8 # ] exists_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]] = v aa = 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(lambda 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] = x def 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,3行 进行验证 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行 进行验证 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,9行 进行验证 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))
希望本文所述对大家的Python程序设计有所帮助。
线性回归python实现 1.算法python代码 包含Normal Equations,批量梯度下降和随机梯度下降,这里的代码跟Logistic回归的代码类似 # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import numpy as np class LinearRegression(object): def _
Logistic回归python实现 1.算法python代码 # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import numpy as np class Logistic(object): def __init__(self): self._history_w = [] self.
1.python代码实现 包含算法的原始形式和对偶形式 # -*- coding: utf-8 -*- import numpy as np class Perceptron(object): def __init__(self, input_x, feature_num, input_y, learn_rate=1): self._input_x = np.arra
本文向大家介绍python实现SOM算法,包括了python实现SOM算法的使用技巧和注意事项,需要的朋友参考一下 算法简介 SOM网络是一种竞争学习型的无监督神经网络,将高维空间中相似的样本点映射到网络输出层中的邻近神经元。 训练过程简述:在接收到训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者,称为最佳匹配单元。然后最佳匹配单元及其邻近的神经
我已经用python编写了medians算法的median的实现,但是它似乎没有输出正确的结果,而且对我来说它似乎也没有线性复杂度,知道我哪里出错了吗? 这个函数是这样调用的: 乐:不好意思。GetMed是一个简单地对列表排序并返回len(list)处的元素的函数,它应该在那里被选择,我现在修复了它,但我仍然得到错误的输出。至于缩进,代码工作没有错误,我看不出有什么问题:-?? LE2:我期望50
本文向大家介绍Python实现EM算法实例代码,包括了Python实现EM算法实例代码的使用技巧和注意事项,需要的朋友参考一下 EM算法实例 通过实例可以快速了解EM算法的基本思想,具体推导请点文末链接。图a是让我们预热的,图b是EM算法的实例。 这是一个抛硬币的例子,H表示正面向上,T表示反面向上,参数θ表示正面朝上的概率。硬币有两个,A和B,硬币是有偏的。本次实验总共做了5组,每组随机选一个硬