問題タブ [wumpus-world]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
logic - Wumpus World モデルの混乱?
Wumpus World は、エージェントが一連の相互接続された部屋で構成された洞窟を探索しなければならなかった、知識の表現、推論、および計画の一例です。洞窟の部屋の 1 つに、その部屋に入るとエージェントを殺す Wumpus がいました。一部の部屋には穴があり、エージェントがそれらの部屋のいずれかに入ると、エージェントは死亡します。エージェントはワンパスを殺すことができる矢を 1 本持っていました。目標は、洞窟のどこかに隠されている金を見つけ、殺されることなく最初に戻ることでした.
http://www.cis.temple.edu/~giorgio/cis587/readings/wumpus.shtml
Wumpus は 1 つだけです。したがってW1,1 ∨ W1,2 ∨ ... W4,3 ∨ W4,4
多くても 1 つのウンパスがあると言う 1 つの方法は、任意の 2 つの正方形について、そのうちの 1 つにウンパスがなければならないということです。n個の正方形を使用すると、¬W1,1 ∨ ¬W1,2 のようなn(n-1)/2文が得られます。4*4 の世界では、64 個の異なる記号を含む合計 155 個の文から始めます。
n(n-1)/2文を取得する方法がわかりません。また、4*4 の世界に合計 155 の文があることをどうやって知るのでしょうか? 誰かがこの概念を私に説明してくれませんか。ありがとう。
list - Prolog のプロセス リスト
Prolog でリストを使用するのに問題があります。私は Wumpus World の例を実装しており、ユーザーが移動するたびに wumpus を動かす必要があります。wumpus の動きはリストで事前定義されており、wumpus の位置を設定するためにリストの先頭をポップする方法がわかりません。Wumpus リストは次のようになります: [左、右、上、下、...、右]。ここに私がこれまでに持っているものがありますが、これは明らかに間違っています。
私のコードに正確なコードは必要ありません。リストの例と、リストから方向/値を設定する方法と、ポップされたリストの先頭を削除する方法が理想的です。
list - GNU Prolog でグリッドを設定して印刷する方法
私はこれらのプロローグ チュートリアルを読んでいて、それらが使用する概念のいくつかをきちんと把握しているように感じますが、グリッドのようなシステムを実装しようとすると問題が発生します。
リストを使用してこれを設定できることはわかっていますが、これまでのところ、実装方法について空白を描いています。プロローグでグリッドシステムを実行する方法をガイドするために私が見ているリソースまたは何らかのタイプのソースコードはありますか? ?
私が最初から作りたいグリッド システムは 4x4 で、このように出力されるはずです。
(4,1) (4,2) (4,3) (4,4)
(3,1) (3,2) (3,3) (3,4)
(2,1) (2,2) (2,3) (2,4)
(1,1) (1,2) (1,3) (1,4)
コメントについて
グリッドでこれが必要な理由は、私が作成している wumpus ワールドの構造のような迷路を構築し始めているためです。私が望むこのタイプの構造を満たすために。
これは、(3,2) などの正方形 (グリッドの一部) を、エージェントがこのグリッドを通過するようにしたい任意の正方形のピット、ウンパス、または金に割り当てることができる場所です。
これが間違ったアプローチである場合は、そうでない理由を理解していただければ幸いです。また、何に集中する必要があるかについてフィードバックをいただければ幸いです。
これが間違っている場合は、フィードバックをいただければ幸いです。
algorithm - プロローグで安全な隣接する広場に移動するには?
射手が4 x 4 グリッド上で安全な隣接する正方形に移動する Prolog アプリケーションを作成しようとしています。
例えば、射手は四角の列 1 行 4にいて、 Mとして記録されたモンスターが含まれていない場合、上または右に移動できます。したがって、列 2 行 4にモンスター (M)がある場合、射手 (A)はそこに移動できませんが、列 1 行 3が空 (E) の場合、彼はこれに移動できます。射手は、隣接する正方形が安全かどうかを確認できますが、それ以上離れていない.
これが私がこれまでに得たものです:
隣接する正方形が安全かどうかをアーチャーに確認させ、安全な場合はその正方形に移動するのに苦労しています。
これはどのように行うことができますか?
algorithm - プロローグに手動で入力する代わりに、隣接する正方形をチェックして人を動かす方法は?
射手が4 x 4システムのグリッド上で安全な隣接する正方形に移動する Prolog アプリケーションを作成しようとしています。これは射手自身が行う必要があります。たとえば、射手の上の正方形が安全な場合です。彼はそこに移動します。安全でない場合は、右側の正方形をチェックし、安全な場合はそこに移動します。
アーチャーはセル 4,1 から開始し、現在、アーチャーの右上にそよ風の広場があります。そよ風、金、きらめきが各マスにあるので、アーチャーはマス4,1にあり、 そよ風は 3,1 と 4,2 にあります。これまでのところ、ユーザーが行きたい座標を入力しています。たとえば、入力するとsafe_square(4,1,3,1).
、射手は4,1から3,1に移動します。これは、セルが安全であるためです。
しかし、射手自身が隣接するすべてのオプションをチェックしてから、どのセルに入るかを自分で選択する必要があるため、これは良い方法ではありません。私が行ったsafe_square()
ことは、アーチャーが最初に金をチェックし、次にキラキラをチェックし、次に空をチェックし、最後に安全をチェックするように注文しました. これは本来行うべきことですが、ユーザー自身が行きたい場所に入る必要があるため、コードは無関係です。
現時点で私がやっている方法は次のとおりです。
ユーザーの入力なしでこれを行うにはどうすればよいですか?
私はこれを試しましたが、うまくいきませんでした:
そして、私もこれを試しました:
prolog - ファイルから Prolog にデータを読み込む方法
SWI-Prolog を使用して Wumpus World プロジェクトを作成しています。次のような .txt ファイルから金、ピット、ウンパスの場所を読み取ることになっています。
単語がオブジェクトを識別する場合、最初の数字はオブジェクトの x 位置を識別し、2 番目の数字はオブジェクトの y 位置を識別します。ファイルを開いてそこから読み取る方法は知っていますが、GOLD 3 2 が金を (3, 2) に配置する必要があることをプログラムに伝える方法がわかりません。