将数字1到9填入下面圆圈里,每个数字只使用一次,使得三角形三条边之和相等

博客介绍了如何利用编程(Python)解决一个数学问题:将1到9的数字不重复地填入圆圈中,使三角形的三条边之和相等。通过设定条件并编写小程序,可以避免手动尝试,找到18种不同的解决方案,以此激发孩子对编程的兴趣。
摘要由CSDN通过智能技术生成

将数字1到9填入下面圆圈里,每个数字只使用一次,使得三角形三条边之和相等。求出所有解。

   O
  O O
 O   O
O O O O

这题目怎么解?后来才知道老师靠试的,给出了一个答案。既然靠试,这种苦差事还不如写段小程序来穷举,还能提高孩子学编程的兴趣。

思路是这样的。将所圆圈定义如下:

      a0
    a1  a8
  a2      a7
a3  a4  a5  a6

为了避免重复,令:
a0<a3<a6
a1<a2
a4<a5
a7<a8

开始编程,语言Python

#检查是否重复
def unique(a):
    return a[0] < a[3] and a[3] < a[6]\
        and a[1] < a[2] and a[4] < a[5]\
        and a[7] < a[8]

#验证三边和是否相等
def verify(a):
    s = sum(a[6:]) + a[0]
    return sum(a[0:4]) == s and sum(a[3:7]) == s

#输出解
def solution(a):
    print('   %d' % a[0])
    print('  %d %d' % (a[1], a[8]))
    print(' %d   %d' % (a[2], a[7]))
    print('%d %d %d %d' % (a[3], a[4], a[5], a[6]))
    print('') # 空一行

#用全排列搜索所有解
from itertools import per
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值