5つの数字を取り、最初の4つを使って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
私の先生は、これらは数学的に同じであると考えているため、4 つすべてが 1 つの解にすぎません。どうすればよいかわかりませんが、これらの「重複」を見つけて削除することです。どんな助けでも大歓迎です、ありがとう。