知能テストの問題では、容量の異なるいくつかのカップを与え、どのくらいの量の水を注ぐかを尋ねる同様の論理的な問題がよく出題されます。
Android には Water Logic というゲームがあります。
このゲームをインストールして数十のレベルをプレイしましたが、このゲームのレベル設計は非常に貧弱で、レベルの難易度が段階的に上昇することはなく、非常に精神的に遅れており、高難易度のレベルがありません。 。
プログラマとして、この種の問題を解決するのは 10 ステップ以内であれば問題ありませんが、10 ステップを超える問題も解決できますが、最小ステップ数に簡単に到達できない場合があります。ステップ。
強迫性障害の星が 3 つあるプレイヤー兼プログラマーが、このような小さな自動解決プログラムを作成したため、この問題は将来的には問題にならないでしょう。
ここをクリックして、カップに注ぐ問題を自動的に解決してみます
アルゴリズムの基本ロジック:
各カップには、水を入れる、空にする、他のカップに注ぐという操作があるため、合計は次のようになります: カップ数 * (カップ数 - 1 2)
カップが 3 個の場合、各ステップに 12 個のオプション操作があります。カップが 2 個の場合、各ステップに 6 個のオプション操作があります。
各操作を追跡し、操作完了後に各カップ内の水の量を記録し、水の量に基づいてキーを計算してマップを作成します。
さまざまな注湯操作を実行するプロセス中に、キーがすでに存在し、現在のステップ数が以前に記録されたステップ数より大きい場合、操作は破棄されます。
この小さなプログラムは、水を 2 つまたは 3 つのカップに注ぐ問題しか解決できません。このコードは、N カップに適用できるようには書かれていません。