|
发表于 2021-11-3 11:13:40
|
显示全部楼层
本楼为最佳答案
- from itertools import combinations
- from string import digits
- def g6174(com, sn):
- if sn > 0: # sn是记录第几次操作的参数
- print(f"第{sn}次操作:{com}")
- if com == "6174": # 递归函数的出口,得到6174后不再递归
- return com
- com = list(com) # 将传入的字符串转换为列表方便排序
- com.sort() # 以升序方式排序,比如 [0,1,2,3]
- minn = int("".join(com)) # ,组合字符串并转换为整数得到最小值
- com.sort(reverse=True) # 以降序方式排序,比如[3, 2, 1, 0]
- maxn = int("".join(com)) # 组合字符串并转换为整数得到最大值
- # 最大值减最小值,并将结果转换为字符串,传入g6174函数递归调用,sn+1为记录操作次数的sn变为sn+1
- g6174(str(maxn - minn), sn + 1)
- # combinations(digits, 4)意思就是从digits中取4字进行排列组合,返回所有可能的组合
- for com in combinations(digits, 4):
- print(f"\n组合:{com}") # f""是f-string字符串格式化方法,具体用法自行查看
- g6174("".join(com), 0) # 将字符串元组com的值连接成字符串,例如"".join(("1", "3", "2", "4"))
复制代码 |
|