問題タブ [prolog-cut]
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.
prolog - プロローグ、失敗し、後戻りしない
SWI-Prologには、常に失敗し、マシンがバックトラックするのを防ぐ組み込みの述語がありますか?プログラムの実行をすぐに停止します(これは何をfail/0
しませんか)?カットは使えますが、好きではありません。
そのようなこと!, fail
をすることは私にとって問題ではありませんが、私が望むことを達成するために、私はより多くの場所でカットを使用する必要があり、これは私が好きではないことです。
python - 最初の回答でジェネレーターを停止しています。代わりに return を使用してください
私は自分の好みのパターンを使いすぎています(検索のすべての可能なソリューションブランチの後)。これは、指定された正方形でボグル ワードを検索するコードです。文字のペアが隣接する単語のみを含むように単語が事前に選択されていない場合、バグがありました。これは、comparsion not pos を pos is None に変更することで修正されました。
答えが見つかった後に停止するジェネレーターを作成するためのより良い代替手段はありますか?
return を使用しない理由に基づく解決策
最後にそれは私を手に入れ、返されたシーケンスは、返された値ではなくイテレータです。そのため、word_path コードを return を使用するように変更し、一般的に式をクリーンアップしました。None または False を指定する代わりに、関数は (False,) を返します。それから、None not accept for forステートメントに問題はありません。
prolog - Prologの絶対値述語でのカットの使用の回避
私は次のコードでプロローグに次の関数を実装しました:
カット( "!")を使用せずにこの関数を実装するにはどうすればよいですか?
recursion - プロローグカットで必要なアドバイス?
このタスクでは、例えばedge(1,0)edge(2,0)edge(1,3)で満たされたPrologデータベースがあります
エッジは、2つのポイントが結合されていることを意味します。
リーチ(i、j、k)という関数を作成するように求められます。ここで、iは開始点、jは終了点、kは使用できるステップ数です。Kは、再帰ループを停止するために必要です。
私が持っている唯一のエッジが1から3になり、6に到達しようとしていると仮定します。そうすると、1から6に一度に取得できなくなります。だから私はどこかに行くことができる場所を探して、そこから6に行くことができるかどうかを確認します。一度に行くことができる最初の場所は3なので、そこから6に行くようにします。
私はそうしました:
これは機能しますが、kを使用せずに「カット」を使用してこれを行うように求められる2番目の部分で立ち往生しています。
誰かがこれを行う方法を知っていますか、または私にいくつかのポインタを与えることができますか?
prolog - プロローグ - 特別な場合に重複した回答を排除するより良い方法は?
次の 2 行で問題が発生しました。
問題は、最初の 2 つの引数の両方が空のリストである場合、最初の 2 つのステートメントが両方とも使用され、同じ答えが返されることでした。ただし、1つにカットを入れると、バックトラックが台無しになります。私は最終的にそれらの上にこの行を入れました:
そして、それは機能します。しかし、もっとエレガントな解決策があるかどうか疑問に思っていました。
prolog - Prologの奇妙な演算子(!)
上記のステートメントでは、「!」は何をしますか ステートメントの最後に署名しますか?
parsing - カットせずにPrologで解析しますか?
Prolog で Lisp を解析するためのこの素敵なスニペットを見つけました (ここから):
ただし表現はカットを使用。これは効率化のためだと思います。このコードをカットせずに効率的に動作するように書くことは可能ですか?
マーキュリーのソフトカット/献身的な選択を含む興味深い回答にもなります.
recursion - プロローグ再帰オーバーフロー
(サイトではなく)スタックオーバーフローにつながります!カット(!)のせいではないはずです。SWI-Prolog で動作しますか?
prolog - プロローグ カット クエリ
プロローグではカットを使用。次のクエリを実行すると、次の結果が返されるのはなぜですか。
それでも、このクエリは次を返します。