問題タブ [failure-slice]

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.

0 投票する
4 に答える
771 参照

prolog - Prolog の再帰は内部からどのように機能しますか。一例

要素のリストをセットに変換する小さなスクリプトを用意しました。たとえば、リスト [1,1,2,3] -> [1,2,3] を設定します。手順の中で何が起こっているのか、順を追って説明してもらえますか? [1,1,2,3] -> [1,2,3] の例を使用していただけますか?

0 投票する
1 に答える
302 参照

prolog - プロローグにおける再帰の計算量

私は再帰を持っています:

要素のリストをセットに変換します。たとえば、[1,1,2,3] -> [1,2,3]。クエリを入力するとlist_to_set([1,1,2,3],X).、結果はX = (1,2,3)であり、セットを見つけることの複雑さは ですO(n);これで、他に考えられる答えがないことを確認するために、alternative を入力できます。明らかに何もなく、スクリプトは を返しfalseます。私の質問は、その 2 回目のスクリプト実行の計算上の複雑さはどのくらいですか? またその理由は?

0 投票する
3 に答える
4037 参照

prolog - Prolog無限ループ

これは、誰がjohnと互換性があるかを調べる必要があるプログラムです。私はPrologを初めて使用します。Prologに知らせるために例えば。met(X、Y)= met(Y、X)たくさんのコードが書かれています。クエリを開始すると

それは無限のループに入ります...

ソースコード:

私はこれまで多くのことを研究してきましたが、何が問題で、どのようにそれを修正するのかまだわかりません。私を助けてくれるといいですね。

0 投票する
3 に答える
739 参照

prolog - Prolog再帰手続きの説明

可能であれば、誰かにこの手順を説明してもらいたいです (「learn prolog now」という本から)。2 つの数字を取り、それらを加算します。

原則として理解していますが、いくつか問題があります。クエリを発行するとしましょう

結果は次のとおりです。

ステップ 1 はルール 2 との一致です。ここで、X は s(0) になり、Y は s(0) のままです。ただし、Z (本によると) は s(_G648)、またはその中にインスタンス化されていない変数を持つ s() になります。どうしてこれなの?

最後のステップで、最初のルールが一致し、再帰が終了します。ここで、Y の内容は、どういうわけか、Z のインスタンス化されていない部分になってしまいます! 非常に紛らわしいので、わかりやすい英語の説明が必要です。

0 投票する
3 に答える
432 参照

prolog - English constraint free grammar prolog

I ran into an infinite recursion problem while trying to implement a very simple constraint free grammar in prolog.

Here are my rules: (vp -> verb phrase, np -> noun phrase, ap -> adj phrase, pp -> prep phrase)

The problem im running into is that the rule for ap can produce arbitrarily long strings of adjectives, so at some point, i get stuck trying to satisfy the query by trying all these infinite possibilities.

For example, the following query will never produce S = [put, the, red, block, on, the, green, block] because it will first expand the adjective phrase on the left "red" to infinite possibilities before ever trying on the right.

0 投票する
1 に答える
1069 参照

prolog - 優れた Prolog コードの特徴は?

優れた Prolog を作成するためにマスターしなければならない設計ヒューリスティックは何ですか? 経験豊富なプログラマーが Prolog に習熟するには、約 2 年かかると聞きました。再帰を効果的に使用することもその一部ですが、それは比較的小さなハードルのようです。プログラマーをこれほどまでに悩ませているのは、一体何なのでしょうか? その品質を判断するには、サンプル コードで何を探す必要がありますか?

0 投票する
3 に答える
147 参照

prolog - 目標に貢献していない事実を見つける方法

学生プログラムが特定の目標を達成できるかどうかを確認できるプログラムを作成しようとしています。私はその部分を行うことができます。ここで、学生プログラムに実際に不要なコードが含まれているかどうかを確認したいと思います。このケースを解決するには、学生プログラムに特定の目標に貢献しない事実が含まれているかどうかを知る必要があると思います。しかし、目標に貢献しない事実を見つける方法がわかりません。

理解しやすくするために、より単純な例を考えてみましょう。この例では、指定された目標は次のとおりです。ジョンはトミーの祖父ですか?

実際には、次の事実によってのみ目標を達成できます。

そして、私が知りたいのは、実際にはどの事実が目標に貢献していないかということです. 答えは、次のすべての事実になります。

どんな助けでも本当に感謝しています。ありがとう

0 投票する
2 に答える
606 参照

prolog - 無限のサクセス ツリーか、そうでないか。

私は次のプログラムを与えられています:

次のクエリにプルーフ ツリー アルゴリズムを適用する場合は、次のように尋ねました。

証明木は無限の成功木ですか、それとも無限の失敗木ですか?

私が見ているように、ツリーの構築中に、パスのルール 1 を何度も適用し、無限のツリーを作成し、パスのルール 2 に到達することはありません..

したがって、無限の障害ツリーが作成されます。しかし、私が持っている解決策は、それが無限の成功の木であると言います。私の質問は、私は正しいですか、それとも私の教授は正しいですか? :]