点击上方“Python3X”,选择“置顶或者星标”
第一时间收到精彩推送!
Python Every Day, 第 10 天
题目:
有1~9个数字,将他们填入九宫格中(即3*3的表格)。要求他们每行、每列以及对角线的和相等。数字不可以重复。
如图所示
思路:
每行的和相等,而1 + 2 + 3 + .. + 9 = 45。说明每行的和为45/3 = 15。
所以我们只需要找出所有三位数之和为15的组合。再从里面找出符合要求的。即:9位数不能有重复,且横、纵、斜之和相等的。
解:
step1、求出所有三位数相加为15的组合。
arr = []for i in range(1, 10): for j in range(1, 10): for m in range(1, 10): # 三个数相加等于15,并且三个数不重复,将他们放入列表中 if i + j + m == 15 and len({i, j, m}) == 3: arr.append([i, j, m])for i in range(1, 10):
for j in range(1, 10):
for m in range(1, 10):
# 三个数相加等于15,并且三个数不重复,将他们放入列表中
if i + j + m == 15 and len({i, j, m}) == 3:
arr.append([i, j, m])
最后得出的组合有以下几种:
[ [1, 5, 9],[1, 6, 8],[1, 8, 6],[1, 9, 5], [2, 4, 9],[2, 5, 8],[2, 6, 7],[2, 7, 6], [2, 8, 5],[2, 9, 4],[3, 4, 8],[3, 5, 7], [3, 7, 5],[3, 8, 4],[4, 2, 9],[4, 3, 8], [4, 5, 6],[4, 6, 5],[4, 8, 3],[4, 9, 2], [5, 1, 9],[5, 2, 8],[5, 3, 7],[5, 4, 6], [5, 6, 4],[5, 7, 3],[5, 8, 2],[5, 9, 1], [6, 1, 8],[6, 2, 7],[6, 4, 5],[6, 5, 4], [6, 7, 2],[6, 8, 1],[7, 2, 6],[7, 3, 5], [7, 5, 3],[7, 6, 2],[8, 1, 6],[8, 2, 5], [8, 3, 4],[8, 4, 3],[8, 5, 2],[8, 6, 1], [9, 1, 5],[9, 2, 4],[9, 4, 2],[9, 5, 1]]1, 5, 9],[1, 6, 8],[1,