24點游戲?qū)懞昧?,但是重點不是這個
????五一出去浪了3天,回家躺平2天,閑來無事就把程序補完了,親測可用,但是重點不是這個,問題是我用chatgpt,希望用AI拿到一個大致能用的程序,經(jīng)過很長時間的嘗試。發(fā)現(xiàn)AI和豬腦袋沒有區(qū)別,后來只能去網(wǎng)頁搜索,然后自己再微調(diào)一下。
????前些時間老看到這樣的內(nèi)容,就是一個程序員說自己用chatgpt可以完成90%的工作,程序不用怎么寫,只要耐心給chatgpt描述需求,會拿到完成度非常高的程序。但是我完全沒感覺到這一點,是我還不太會用嗎???
????現(xiàn)在大公司也一窩蜂的沖上去擁抱這個,但是這個東西是不是真能做到全領(lǐng)域通殺呢?至少在我工作的領(lǐng)域,chatgpt就和白癡沒有區(qū)別。也有可能,業(yè)界只是定期需要熱點炒作,就像以前的納米,自動駕駛,AR等等。大公司搞來搞去,發(fā)現(xiàn)沒搞到錢,又當作一個泡沫消失掉了。
'''
24點游戲
問題:輸入1-10范圍內(nèi)的4個整數(shù),4個數(shù)之間進行加減乘除后的結(jié)果等于24
分析:假設(shè)四個數(shù)分別是A,B,C,D,#為加減乘除中的任意一種運算,4個數(shù)有5種計算方式
? ? ((A#B)#C#D
? ? (A#(B#C))#D
? ? A#(B#(C#D))
? ? A#((B#C)#D)
? ? (A#B)#(C#D)
得出5種計算方式后,將每一種計算方式都拆分出來,每種計算方式根據(jù)優(yōu)先級分成三個步驟實現(xiàn),后一個步驟利用前一個步驟的結(jié)果進行計算。例如計算方式1(((A#B)#C#D)可以拆分的3個步驟為:
? ? 計算A#B的結(jié)果賦給R1
? ? 計算R1#C的結(jié)果賦給2
? ? 計算R2#D,令R3=R2#D
? ? 最終返回R3的值就是計算方式1的計算結(jié)果
算法步驟:
? ? 將加減乘除放在一個列表中
? ? 定義加減乘除四種運算
? ? 定義5種計算方式
? ? 判斷5種計算方式能否得到24
'''
import itertools as it
op = ['#','+','-','*','/']
def cal(x,y,op):
? ? if op == 1:
? ? ? ? return x+y
? ? elif op == 2:
? ? ? ? return x - y
? ? elif op == 3:
? ? ? ? return x*y
? ? elif op == 4:
? ? ? ? if y!=0 : return x/y
? ? ? ? return 9999.9999
? ??
#定義5種計算方式
def cal_mod1(i,j,k,t,op1,op2,op3):
? ? r1 = cal(i,j,op1)
? ? r2 = cal (r1,k,op2)
? ? r3 = cal(r2,t,op3)
? ? return r3
def cal_mod2(i,j,k,t,op1,op2,op3):
? ? r1 = cal(j,k,op2)
? ? r2 = cal(i,r1,op1)
? ? r3 = cal(r2,t,op3)
? ? return r3
def cal_mod3(i,j,k,t,op1,op2,op3):
? ? r1 = cal(k,t,op3)
? ? r2 = cal(j,r1,op2)
? ? r3 = cal(i,r2,op1)
? ? return r3
def cal_mod4(i,j,k,t,op1,op2,op3):
? ? r1 = cal(j,k,op2)
? ? r2 = cal(r1,t,op3)
? ? r3 = cal(i,r2,op1)
? ? return r3
def cal_mod5(i,j,k,t,op1,op2,op3):
? ? r1 = cal(i,j,op1)
? ? r2 = cal(k,t,op3)
? ? r3 = cal(r1,r2,op2)
? ? return r3
#將5種計算方式匯總到一個函數(shù),遍歷5種方式是否滿足24
def get24(i,j,k,t):
? ? flag = False
? ? for op1 in range(1,5):
? ? ? ? for op2 in range(1,5):
? ? ? ? ? ? for op3 in range(1,5):
? ? ? ? ? ? ? ? if cal_mod1(i,j,k,t,op1,op2,op3)==24:
? ? ? ? ? ? ? ? ? ? print("((%d%c%d)%c%d)%c%d = 24" %(i,op[op1],j,op[op2],k,op[op3],t))
? ? ? ? ? ? ? ? ? ? flag = True
? ? ? ? ? ? ? ? if cal_mod2(i,j,k,t,op1,op2,op3)==24:
? ? ? ? ? ? ? ? ? ? print("(%d%c(%d%c%d))%c%d = 24 " %(i,op[op1],j,op[op2],k,op[op3],t))
? ? ? ? ? ? ? ? ? ? flag = True
? ? ? ? ? ? ? ? if cal_mod3(i,j,k,t,op1,op2,op3)==24:
? ? ? ? ? ? ? ? ? ? print("%d%c(%d%c(%d%c%d)) = 24" %(i,op[op1],j,op[op2],k,op[op3],t))
? ? ? ? ? ? ? ? ? ? flag = True
? ? ? ? ? ? ? ? if cal_mod4(i,j,k,t,op1,op2,op3)==24:
? ? ? ? ? ? ? ? ? ? print("%d%c((%d%c%d)%c%d) = 24" %(i,op[op1],j,op[op2],k,op[op3],t))
? ? ? ? ? ? ? ? ? ? flag = True
? ? ? ? ? ? ? ? if cal_mod5(i,j,k,t,op1,op2,op3)==24:
? ? ? ? ? ? ? ? ? ? print("(%d%c%d)%c(%d%c%d) = 24" %(i,op[op1],j,op[op2],k,op[op3],t))
? ? ? ? ? ? ? ? ? ? flag = True
? ? return flag
number=input()
for i in it.permutations(number,4):
? ? get24(int(i[0]),int(i[1]),int(i[2]),int(i[3]))

