python解数独,Python数独
题目
有1到9个数字。将它们填入3*3的9方形网格中,使每行、每列、每条对角线之和相等,每个网格中的数字不重复。使用python列出所有可能的组合。例如:思路
1.如果行、列和对角线的总和相等,那么总和一定是15。
找出2、3和15的所有组合。
3.在此基础上,找出所有等于每行、每列和每条对角线的组合。
代码
#三个数之和为15的组合FromitertoolsImportProductlst=range(1,10) arr=[] #这里使用itertools模块的product方法,避免多次调用for循环,从而提高代码的可读性和效率。对于n1,n2,n3 in产品(第一个,n3 in产品)
[ 1,5,9 ],[ 1,6,8 ],[ 1,8,6 ],[ 1,9,5,9 ],[ 2,5,8 ],[ 2,6,7,6 ],[ 2,7,6 ] 4 )、[4、2、9]、[4、3、8]、[4、5、6]、[4、8、]、[4、9、]、[、9]、[5、2] [ 5,9,1 ]、[ 6,1, 8], [6,2,7], [6,4,5], [6,5,4], [6,7,8,1], [7,2,6] 4), [8,4,3], [8,5,2], [8]
for n1 in list:for N2 in list:for n3 in list:以下相同。
#根据上一步,所有符合条件的ITER工具导入产品组合(A,B,cinproduct(arr,arr,Arr):iflen(set(ABC))==9:sum 1=A[0]B[0]C[0]# sum 2=A[1]B[1]C[1]C[1]中的加法# sum3=对角线加法ifsum1==Sum2==Sum3
[ 2,7,6 ] [ 9,5,1 ] [ 4,3,8 ] - [ 2,9,4 ] [ 7,5,3 ] [ 6,1,8 ] - 4,3,3,8 ]
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。