python 的算24點程式

2021-09-30 02:48:45 字數 1617 閱讀 2025

rel=original-file href="文件%201">

rel=file-list href="./文件%201.files/filelist.xml">今天在網上同學求教

1 5 6 7

用+-*/

算出21.

自己曾經寫過乙個

,但**找不到了

,偶知道

24點的程式很多的說

, 於是到網上搜了一下

.

是有不少

, 但是乙個用

c++的

(其實根本就不能叫用

c++,全是c

的語法), 試了n

多次,borlandc3.1

和gcc

都不能編譯

. 還找到了

vb,和

web版的

,看來都沒用

.在偶找東西搞得焦頭爛額的時候

,偶同學自己算出來了

.(到底怎麼算用這個程式試試吧

)

為了以後不被這種問題困擾

,花乙個小時用

python

自己寫了乙個,還是

python

好~~~~~~~

funs = [ lambda x, item: (x+item[0],

str(x)+'+('+item[1]+')'

),

lambda x, item: (x-item[0],

str(x)+'-('+item[1]+')'

),

lambda x, item: (item[0]-x,

'('+item[1]+')-'+str(x)

),

lambda x, item: (x*item[0],

str(x)+'*('+item[1]+')'

),

lambda x, item:(item[0]==0 and (0,'zzz')) or /

(x/item[0],

str(x)+'/('+item[1]+')'

),

lambda x, item:(x==0 and (0,'zzz')) or /

(item[0]/x,

'('+item[1]+')/'+str(x)

) ]

def con(num):

l = len(num)

p = list()

if l==1: return

for i in range(l):

for f in funs:

p += map(lambda item: f(num[i],item),

con(num[:i]+num[i+1:]).items()

)

return dict(p)

print con(map(float,[1,5,6,7])).get(21.0,0)

**我就不解釋了

,有問題就問吧

.

另外由於浮點計算的誤差問題

,".get(21.0,0"

這句還不太完善

,不過解決這個問題足夠了

,具體怎麼完善大家都知道拉

.

算24點程式

基本原理是窮舉4個整數所有可能的表示式,然後對表示式求值。表示式的定義 expression expression number operator expression number 因為能使用的4種運算子 都是2元運算子,所以本文中只考慮2元運算子。2元運算子接收兩個引數,輸出計算結果,輸出的結果...

算24的java程式續

public long ct string sc system.out.println ct sc sc ysf ysf ys ys sa sc.substring 0,ysf try catch numberformatexception ex switch ys system.out.print...

vijos P1134 算24點 題解

include include include include include using namespace std bool used 5 int a 5 bool mem 1000 double qiku 120 1001 int ans void work double now,int k ...