Crossin的编程教室

标题: 一个计算练习题 [打印本页]

作者: TED    时间: 2017-12-20 16:43
标题: 一个计算练习题
本帖最后由 TED 于 2017-12-20 18:31 编辑

刚在微信群里看到的题目,贴在这里,有兴趣的欢迎解答:
1220题目.jpg
为了方便检查结果,假设各字母代表的整数不同吧~




作者: 散不开暧昧    时间: 2017-12-28 11:09
# -*- coding:utf-8 -*-
import random
import time
list=[0,1,2,3,4,5,6,7,8,9]
start_time=time.time()
while True:
    slice = random.sample(list, 8)
    s, e, n, d, m, o, r, y = slice
    if s!=0 and m!=0:
        if (s*1000+e*100+n*10+d)+(m*1000+o*100+r*10+e)==(m*10000+o*1000+n*100+e*10+y):
            print s,e,n,d,m,o,r,y
            break
end_time=time.time()
print 'time=%.2fsecs'%(end_time-start_time)

作者: 散不开暧昧    时间: 2017-12-28 11:11
谢谢老铁,顶你!
作者: TED    时间: 2017-12-28 13:29
散不开暧昧 发表于 2017-12-28 11:09
# -*- coding:utf-8 -*-
import random
import time

用随机的话,假设结果不止一种,怎么全列出来
作者: 散不开暧昧    时间: 2017-12-28 13:49
TED 发表于 2017-12-28 13:29
用随机的话,假设结果不止一种,怎么全列出来

如果m!=0,就这一种答案吧,把break去掉,不停的循环,都是一种答案。
如果m可以0-9,那把‘if s!=0 and m!=0’和break去掉,让不停的循环,得出所有答案。只不过中间会重复答案。
这个时候就得再增加保存语句,每次得出的一个答案,保存到一个文件,后续得出的答案,先判断是否已经存在,如果不存在,就增加进去,直到随机得出所有答案,跳出循环,最后把保存的文件读出来,打印就可以了。
老铁,觉得呢?
作者: TED    时间: 2017-12-28 14:46
散不开暧昧 发表于 2017-12-28 13:49
如果m!=0,就这一种答案吧,把break去掉,不停的循环,都是一种答案。
如果m可以0-9,那把‘if s!=0 and m! ...

感觉随机 计算量 会不会太大啊
作者: TED    时间: 2017-12-28 15:07
散不开暧昧 发表于 2017-12-28 13:49
如果m!=0,就这一种答案吧,把break去掉,不停的循环,都是一种答案。
如果m可以0-9,那把‘if s!=0 and m! ...

感觉随机比并不能列举出所有情况,试试能不能把random换掉,还尽量代码能这么简练?
作者: 红薯    时间: 2018-1-17 13:27
  1. from itertools import permutations

  2. def main():
  3.     for s,e,n,d,m,o,r,y in permutations(range(10),8):
  4.         send = 1000*s + 100*e + 10*n + d
  5.         more = 1000*m + 100*o + 10*r + e
  6.         money = 10000*m + 1000*o + 100*n + 10*e + y
  7.         if m!=0 and send + more == money:
  8.             print(send,more,money)
  9.             
  10. main()
复制代码

作者: TED    时间: 2018-1-19 18:02
红薯 发表于 2018-1-17 13:27

厉害了,原来permutations能实现全排列的算法,这么一来真的蛮简洁了 ~ 又学了一手,谢谢!

作者: 散不开暧昧    时间: 2018-1-25 14:50
红薯 发表于 2018-1-17 13:27

厉害,学习了!




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5