用Python解決一道小學數學題

上小學的兒子問了我這麽一道數學題:

1) 使用+,-,×,/,(,和)六個操作符;

2) 使用操作數5,5,5,5,5;

3) 要求每個操作數/操作符隻使用一次。

列出所有可能的表達式,並計算每個表達式的值。

 

【注意】要排除諸如 +-,()或55這種操作數/操作符連一起的情況;也要排除5(,)(,)5,(5)等情況。

 

【腳本】版本使用python2.7x。演示腳本如下:

【運行結果】 共找到 210 表達式:
(5+5-5*5)/5 = -3
(5+5-5/5)*5 = 45
(5+5-5)*5/5 = 5
(5+5-5)/5*5 = 5
(5+5*5-5)/5 = 5
(5+5*5/5)-5 = 5
(5+5*5)-5/5 = 29
(5+5*5)/5-5 = 1
(5+5/5-5)*5 = 5
(5+5/5*5)-5 = 5
(5+5/5)-5*5 = -19
(5+5/5)*5-5 = 25
(5+5)-5*5/5 = 5
(5+5)-5/5*5 = 5
(5+5)*5-5/5 = 49

... (省略) ...

 

看來,腳本還是可以幫著幹不少活的^_^。

在城裏 2016.01.05

 

 

 

 




更多我的博客文章>>>

所有跟帖: 

很不錯!可以上傳你的源代碼麽?我的咋運行結果不對呢? -cse378- 給 cse378 發送悄悄話 cse378 的博客首頁 (133 bytes) () 01/06/2016 postreply 01:26:50

另外,你這是使用了什麽編輯器?可以清楚地顯示語句塊?比如if塊或者for塊?謝謝! -cse378- 給 cse378 發送悄悄話 cse378 的博客首頁 (29 bytes) () 01/06/2016 postreply 01:29:04

我用的是Komodo IDE,也有不少人在用Pycharm。不知道源碼能否顯示得好 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (2412 bytes) () 01/06/2016 postreply 05:54:05

強大!是不是也可以算出 用操作符連接 0 1 2 3 4 5 6 7 8 9=100這樣的問題? -hot_powerz- 給 hot_powerz 發送悄悄話 hot_powerz 的博客首頁 (0 bytes) () 01/06/2016 postreply 12:42:27

有趣的問題!不過操作符的要求呢,隨便什麽都行(包括括弧)? -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (264 bytes) () 01/06/2016 postreply 18:46:15

先簡單點,沒有(),沒有除號,沒有減號 (四個操作符與二個有很大分別嗎?)題目來自 -hot_powerz- 給 hot_powerz 發送悄悄話 hot_powerz 的博客首頁 (335 bytes) () 01/06/2016 postreply 22:23:18

沒有很大分別,無非就是多花些時間(窮舉出來)而已。不用窮舉,雖然容易,但是什麽時候完成就不知道了。。。 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (1435 bytes) () 01/07/2016 postreply 07:46:37

你這個搞複雜了。題目是要你往空白裏麵填入運算操作符。我事先沒講清楚。隻用+與x。後麵這個數可能會變。如: -hot_powerz- 給 hot_powerz 發送悄悄話 hot_powerz 的博客首頁 (238 bytes) () 01/07/2016 postreply 10:51:57

這個問題答案。。。 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (434 bytes) () 01/07/2016 postreply 19:15:26

還是不對啊,你把人家數字的順序打亂了?這不叫往裏麵填運算符:=) -hot_powerz- 給 hot_powerz 發送悄悄話 hot_powerz 的博客首頁 (0 bytes) () 01/07/2016 postreply 19:24:22

剛才疏忽了。 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (0 bytes) () 01/07/2016 postreply 19:25:12

好厲害,沒有考倒你啊!求代碼! -hot_powerz- 給 hot_powerz 發送悄悄話 hot_powerz 的博客首頁 (169 bytes) () 01/07/2016 postreply 19:27:13

代碼在這裏: -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (1387 bytes) () 01/07/2016 postreply 19:45:35

好精煉的代碼,多少年的功力?再讚!以後代碼問題就找你了! -hot_powerz- 給 hot_powerz 發送悄悄話 hot_powerz 的博客首頁 (0 bytes) () 01/07/2016 postreply 21:37:03

沒問題!我們一起共同進步。。。 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (0 bytes) () 01/08/2016 postreply 05:39:43

這個算嗎? (1*2+3-4/5/6+7)*9-8 = 100? 把0去掉了,+-×/各兩個 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (0 bytes) () 01/07/2016 postreply 05:46:34

電腦還是對這種開放型的問題不行,答案不對! -hot_powerz- 給 hot_powerz 發送悄悄話 hot_powerz 的博客首頁 (0 bytes) () 01/07/2016 postreply 10:57:05

超強!略微簡練一些的代碼 -chirolike- 給 chirolike 發送悄悄話 chirolike 的博客首頁 (1296 bytes) () 01/06/2016 postreply 13:42:29

的確簡潔多了,讚! -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (0 bytes) () 01/06/2016 postreply 18:42:05

為嘛不能(5)? -slow_quick- 給 slow_quick 發送悄悄話 slow_quick 的博客首頁 (0 bytes) () 01/06/2016 postreply 21:50:45

(5) 理論上可以,也不影響計算,但是一般不寫這樣的算式,因為沒有意義,(5) = 5。當然了,規則是自己定義的。 -在城裏- 給 在城裏 發送悄悄話 在城裏 的博客首頁 (0 bytes) () 01/07/2016 postreply 05:32:10

記得從前讀過C/C++什麽書,有簡單計算器的程序。把那些符號序列窮盡一下,讓程序去分析那些有syntax error,那些能算就 -slow_quick- 給 slow_quick 發送悄悄話 slow_quick 的博客首頁 (0 bytes) () 01/11/2016 postreply 15:25:18

請您先登陸,再發跟帖!