把1~9这9个数填入圆圈中 三角,把1-9这九个数字填入三角形
在下面的圆圈里填入数字1到9。每个数字只使用一次,这样三角形的三边之和就相等了。找到所有解决方案。
O O O O OO O O O o o这个问题怎么解决?后来才知道老师是靠考的,给了答案。既然靠考,这种苦差事就不像写个小程序那么累,还能提高孩子学习编程的兴趣。
想法是这样的。如下定义圆:
A0A8A2A7A3A4A5A6为了避免重复,顺序为:
a0a3a6
a1a2
a4a5
a7a8
开始编程,语言Python
#检查def unique (a)是否重复:返回a [0] a [3]和a [3] a [6] 和a [1] a [2]和a [4] a [5] 和[7] a [8] #验证三边和是否相等def verify (a): s=sum (a [6:]) a [0]返回sum (a [0: 4])==s和sum (a [3: 7])==s #输出解def解(a print( %d %d %) A[8])print( % d % d %(A[2],a[7])) print(%d %d %d %d % (a[3],a[4],a[5],A[6]))print()#空行#从ITER工具导入置换搜索所有具有全置换的解N=0 #置换中A的解的数目(范围(1,10)):如果验证(A)和唯一(a): n=1print (%d # sum=% d% (n,sum (a [0
1 # sum=17 1 5 7 9 62 4 8 32 # sum=19 1 5 8 9 34 2 6 73 # sum=17 1 6 9 8 42 5 7 34 # sum=19 1 6 9 8 24 3 5 75 # sum=20 1 6 7 8 35 2 4 96 # sum=20 2 4 7 9 35 1 6 87 # sum=19 2 5 6 9 43 1 8 78 # sum=20 2 6 9 9 7 15 3 4 89 # sum=19 2 6 9 8 13 4 5 710 # sum=21 3 2 6 9 47 1 5 811 # sum=20 3 4 9 8 15 2 6 712 # sum=21 3 4 7 8 26 1 5 913 # sum=21 3 5 9 6 17 2 4 814 # sum=21 3 5 8 7 16 2 4 915 # sum=20 4 2 7 9 35 1 8 616 # sum=20 4 3 9 8 15 2 7 615