我做了一個程序,將採取5個數字,並將使用前四個獲得第五個數字作爲解決方案。解決方案只能包含正整數,唯一可接受的操作符是「+ - * /」。有11種不同的方式可以將數字和運算符用圓括號排列。 Ex「(n @ n)@ n @ n」其中n表示數字,@表示運算符。刪除「重複」公式
我沒有問題找到所有的解決方案,我的問題是刪除「重複」。我已經能夠刪除大多數重複使用
%Seen =();
@solutions = grep { ! $Seen{ $_ }++ } @solutions;
但我無法想出一種方法來刪除「重複」的公式。
使用21 14 2 7獲取34給我們4個解決方案後,第一個重複已被刪除。在這裏,他們是
21/7=3; 14+3=17; 2*17=34
21/7=3; 3+14=17; 2*17=34
21/7=3; 3+14=17; 17*2=34
21/7=3; 14+3=17; 17*2=34
我的老師認爲這些數學一樣,因此他們四個都只是1解決方案。我無法弄清楚如何做的是找到這些「重複」並刪除它們。任何幫助表示讚賞,謝謝。
我相信你想比較是'$ 1 <$ 3',而不是'$ 1 <$ 2'。 – jwodder 2013-02-08 20:33:50
@jwodder,固定。 – ikegami 2013-02-08 20:40:10
我真的很喜歡這個解決方案,但我似乎無法編輯它的格式。現在它會返回類似「3 + 10 = 13 1 + 4 = 5; 13-5 = 8」的值,但是我希望它返回「10 + 3 = 13; 4 + 1 = 5; 1-5 = 8 「 我試圖通過改變三元檢查和值自己編輯它,但我似乎無法找出解決方案(我覺得很愚蠢......) – 2013-02-08 21:20:36