《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q02)

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~

在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6)

Q02 数列的四则运算

    在各个数字之间插入四则运算的运算符组成算式,然后计算算式的结果(某些数位之间可以没有运算符,但最少要插入 1 个运算符)
    例)  1234 → 1+2×3 - 4=3 
        9876 → 9×87+6=789

   求位于 1000~9999,满足"将原数字各个数位上的数逆序排列得到的数", 并且算式的运算按照四则运算的顺序进行(先乘除,后加减)。
    例)  100~999,符合条件的有以下几种情况。
              351 → 3×51=153
              621 → 6×21=126
              886 → 8×86=688

operator_list = ["+", "-", "*", "/", ""]
for num in range(1000, 10000):
    str_num = "{0}".format(num)
    o1_list = operator_list[:]
    o2_list = operator_list[:]
    o3_list = operator_list[:]
    if str_num[3] == '0':
        o1_list.remove('')
    if str_num[2] == '0':
        o1_list.remove('/')
        o2_list.remove('')
    if str_num[1] == '0':
        o2_list.remove('/')
        o3_list.remove('')
    if str_num[0] == '0':
        o3_list.remove('/')

    for o_1 in o1_list:
        for o_2 in o2_list:
            for o_3 in o3_list:
                if o_1 == o_2 == o_3 == "":
                    continue
                str_expression = str_num[3] + o_1 + str_num[2] + o_2 + str_num[1] + o_3 + str_num[0]
                if eval(str_expression) == num:
                    print("{0}: {1}={2}".format(str_num[::-1], str_expression, num))

运行结果:
            5931: 5*9*31=1395

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值