楽しいので、私は24 gameを解決するためのプログラムを試しています。複数の解決策をチェックするときに、同等の式を表示しないようにする方法を見つけようとしています。等価式を検出するアルゴリズム
たとえば、数字6, 6, 6, 6
が与えられていると、アルゴリズムは(繰り返しまたは再帰的に)いくつかの等価な式を生成することができます。
たとえば、((6 + 6) + 6) + 6
、(6 + 6) + (6 + 6)
などです。これらはすべて「4つの6つを一緒に追加する」という意味です。
明らかに、4つの算術演算子すべてを扱うときには、もっと面白くなります。
たとえば、式A * B + C * D
とC * D + B * A
も同等です。検出するのがより難しいかもしれ
別のケースでは、私がこれまで持ってA - B - C - D
A - (C + B + D)
対
アイデアです:
- (優先順位と結合性を追跡することによって)、必要なときにのみ、括弧を使用して。
- 比較を容易にするためのオペランドの順序。
あなたのアルゴリズムは、インフィックス、ポストフィックスまたはポリッシュの表記法と同時に動作する可能性がありますか? –
いいえ、2つの算術式が等しいかどうかを調べることができますが、どの表記法でも同じように気にしません。 –