python实现24点游戏(地球上最短的24点游戏代码?),,牛bi要挑大的吹,否
python实现24点游戏(地球上最短的24点游戏代码?),,牛bi要挑大的吹,否
牛bi要挑大的吹,否则看帖的人没几个。
所谓24点游戏,就是4个数字和算符的排列组合:
四个里挑两个P(4,2)
计算:四个算符
四个里剩余两个+计算结果,三个里挑两个P(3,2)
计算:四个算符
经过上一轮3个里剩余1个+计算结果,两个里挑两个(排列)
计算:四个算符
所以,全部可能性:P(4,2)*4*P(3,2)*4*P(2,2)*4=9126(只可能有重复,不会有逃脱)
实现:
*首先需要N个里取几个的排列函数
*其次就是得到24点公式的函数
*初始化(4个取2个,3个取2个,2个取2个),以及算符函数
*最后是所谓的难局调用
def permutation(n,c,com=0,limit=0,per=[]): for pos in range(limit,n): t = per + [pos] if len(set(t)) == len(t): if len(t) == c: yield [pos,] else: for result in permutation(n,c,com,com*pos, per + [pos,]): yield [pos,] + resultdef get_formula(floor,p): for res0 in res[floor]: for o0 in operator: formula = ‘(%s%s%s)‘ % (p[res0[0]],o0,p[res0[1]]) if floor == 2: try: if abs(eval(formula)-24)<0.1: return formula except: pass else: p1 = [p[x] for x in range(4-floor) if not(x in res0)] p1.append(formula) f = get_formula(floor+1,p1) if not (f == None): return f return Noneres = [[r for r in permutation(4,2)],[r for r in permutation(3,2)],[r for r in permutation(2,2)]]operator = [‘+‘,‘-‘,‘*‘,‘/‘]f = get_formula(0,[‘3‘,‘3‘,‘7‘,‘7‘])print(f)f = get_formula(0,[‘5‘,‘5‘,‘5‘,‘1‘])print(f)
结果(もちろん算无遗策):
(7*(3+(3/7)))(5*(5-(1/5)))
python实现24点游戏(地球上最短的24点游戏代码?)
相关内容
- 程序媛计划——python网络编程,,class1 正则表
- Python 字典 items() 方法,,Python 字典
- python-os&sys&time模块&mysql模块,,1、s
- 【Python】猜数小程序,,有点沙雕temp=i
- Python爬虫--- 1.1请求库的安装与使用,,原文链接:http
- Python中的*args和**kwarg,,可变参数 *args
- Permutations【python】,,class Solu
- Python 3 基本操作列举,,1.字符串2,列表3
- 【Python】Java程序员学习Python(七)— 文本类详解(字
- 【python3的学习之路八】高级特性,,切片举出一个list
评论关闭