問題タブ [prolog]

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 投票する
3 に答える
1646 参照

prolog - Prolog でこの循環述語を修正するにはどうすればよいですか?

Prologで「既婚」を定義するのにこれがうまくいかないのはなぜですか?

この種の循環述語は許可されていませんか? どうすれば修正できますか?

ありがとう

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

prolog - プログラムを実行するには、これらの Prolog ルールをどのように並べ替える必要がありますか?

昔の歌に基づいた宿題に取り組もうとしています、私は自分のおじいちゃんです。

そこで、息子、娘、父、父_in_law などのルールを定義することから始めました。

ただし、ルール/ファクトをロードするたびに次のエラーが発生するため、ルール/ファクトの順序に何か問題があるに違いありません。

GNU Prolog 1.3.1
Daniel Diaz 著作権 (C) 1999-2009
Daniel Diaz | ?- [おじいちゃん]。/home/nfs/student/USER/cs4700/grandpa.pl
をバイトコード用にコンパイルしています...
/home/nfs/student/USER/cs4700/grandpa.pl:119: 警告: 不連続な述語 child/2 - 句は無視されました
/home /nfs/student/USER/cs4700/grandpa.pl:120: 警告: 不連続な述語の子/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:121: 警告: 不連続な述語の子/2 -句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:122: 警告: 不連続な述語 child/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:123: 警告: 不連続な述語child/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:124: 警告: 不連続な述語 child/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:125: 警告: 不連続な述語 son/ 2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:126: 警告: 不連続な述語 son/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:127: 警告:不連続な述語 son/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:128: 警告: 不連続な述語 son/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl: 129: 警告: 不連続な述語 son/2 - 句は無視され
ます /home/nfs/student/USER/cs4700/grandpa.pl:130: 警告: 不連続な述語 daughter/2 - 句は無視されます
/home/nfs/student/USER/cs4700/grandpa.pl:131: 警告: 不連続な述語結婚/2 - 句は無視され
ます /home/nfs/student/USER/cs4700/grandpa.pl:132: 警告: 不連続な述語結婚/ 2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:133: 警告: 不連続な述語結婚/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:134: 警告:不連続な述語married/2 - 句は無視され
ます /home/nfs/student/USER/cs4700/grandpa.pl:135: 警告: 不連続な述語 son_in_law/2 - 句は無視され
ます /home/nfs/student/USER/cs4700/grandpa.pl: 136: 警告: 不連続な述語の父の法律/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:137: 警告: 不連続な述語の父/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:138: 警告: 不連続な述語の父/ 2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:139: 警告: 不連続な述語の父/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:140: 警告:不連続な述語母/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:141: 警告: 不連続な述語母/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl: 142: 警告: 不連続な述語の母/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:143: 警告: 不連続な述語 step_mother/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:144: 警告: 不連続な述語 brother_in_law/ 2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:145: 警告: 不連続な述語 Brother_in_law/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:146: 警告:不連続な述語 uncle/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:147: 警告: 不連続な述語 step_daughter/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl がコンパイルされました、読み取り 149 行 - 書き込み 8389 バイト、44 ミリ秒

これまでの私のコードは次のとおりです。

私はプロローグに非常に慣れていないので、おそらく根本的な間違いを犯しています。これらのエラーに関して、誰かが私を正しい方向に向けるのを手伝ってもらえますか?

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

prolog - Prologで「私は私のおじいちゃんです」を実装するにはどうすればよいですか?

次の話は、N. Wirth の (1976) Algorithms + Datastructures = Programs からのものです。

私は成人した娘(彼女を D と呼ぶ)を持つ未亡人(彼女を W としましょう)と結婚しました。よく訪ねてくれた父(F)は、継娘に恋をして結婚しました。したがって、父が義理の息子になり、義理の娘が母になりました。数か月後、妻は息子(S1)を出産し、父の義理の兄弟であり、叔父でもありました。この父の妻、つまり義理の娘にも息子がいました(S2)。

プロローグでこれらの関係をモデル化しようとしているので、最終的には次のように入力できるようになります。

そして、私が自分のおじいちゃんかどうかについて「はい」または「いいえ」が与えられます。

これまでに書いたコード (grandpa.pl) は次のとおりです。

現在、循環定義で多くの問題を抱えているため、クエリを実行すると無限ループに陥ります:祖父(i、i)。

たとえば、私は持っています:

(1 ミリ秒) はい {トレース} | ?- 祖父(i,i)。1 1 コール: おじいさん(i,i) ?
2 2 呼び出し: 祖父母(i,i) ?
3 3 呼び出し: 親(i,_103) ?
4 4 コール: child(_127,i) ?
5 5 呼び出し: 親(i,_151) ?
6 6 コール: child(_175,i) ?
7 7 呼び出し: 親(i,_199) ?
8 8 コール: child(_223,i) ?
9 9 呼び出し: 親(i,_247) ?
10 10 コール: child(_271,i) ?
11 11 呼び出し: 親(i,_295) ?
12 12 コール: child(_319,i) ?
13 13 呼び出し: 親(i,_343) ?
14 14 コール: child(_367,i) ?
15 15 呼び出し: 親(i,_391) ?
...

これは、子が親を持っていると定義し、親が子を持っていると定義しているためです (私が投稿した上記の述語でわかるように)。

私が自分のおじいちゃんかどうかを判断できるように、これらの関係の述語を再定義するのを手伝ってくれる人はいますか?

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

java - Javaを使用して、文字列の最初の「要素」のインデックスを見つけるにはどうすればよいですか?

私はJavaで簡単なPrologインタープリターを書くことに取り組んでいます。

「リスト構文」で文字列のhead要素またはtail要素の最初の要素の最後の文字インデックスを見つけるにはどうすればよいですか?

リストの構文は次のようになります。

(X)
(pab)
(func(func2 a)(func3 XY))
(equal eve(mother cain))

これらの各文字列のヘッドは、次のとおりです。
ヘッド: "X"、インデックス:1
ヘッド: "p"、インデックス:1
ヘッド: "func"、インデックス:4
ヘッド: "等しい"、インデックス:5

基本的に、最初の「(」の直後にあり、スペースまたは終了「)」のいずれか早い方で終わる文字列を一致させる必要があります。head要素の最後の文字の文字インデックスが必要です。

Javaでこのインデックスを照合して取得するにはどうすればよいですか?


ブラブスターのソリューションは本当に近いです。ただし、次の場合を考えてみましょう:
((b X)Y)

ヘッド要素は(bx)です。スキャナーの区切り文字から「(」を削除して修正しようとしましたが、「b」と「x」の間にスペースがあるため、問題が発生します。

同様に:((((b W)X)Y)Z)

頭は(((bw)x)Y)です。

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

prolog - Prologで相対ルールを定義する方法は?

Prologで相対ルールを定義する方法は?

これは私がこれまでに得たものです:

前もって感謝します!

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

prolog - クエリをプロローグのリストに展開します

クエリをリストに展開する方法は?

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

math - プロローグの累乗関数

べき乗関数の何が問題になっていますか?

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

prolog - Prolog で目標に対するすべての解を見つけるにはどうすればよいですか?

次のように値を次々に返す述語 P1 があります。

P2 という別の述語もあります。

RETURNのすべての値を見つけてに割り当てるにはどうすればよいLISTですか?

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

character-encoding - プロローグにアルファベットチェックはありますか?

ご挨拶、

特定の文字がアルファベットであることを確認するためにプロローグで使用できるテストまたは述語はありますか? 今、私がやっていることは次のとおりです。

許可されていない文字のリスト: \n -> 10, スペース -> 32, !->33, .->46, ,->44, :->58, ;->59% % 63->? 、45 -> -、34 ->"、39 -> %

これらは、確認する必要がある文字のほんの一部です。文字(Ch)などのテストを持っている。時間を大幅に節約でき、何よりも防御的なアプローチになります。

ありがとうございました

0 投票する
7 に答える
15968 参照

prolog - 他の言語よりも Prolog を使用する利点は何ですか?

一般に、使用されているすべての言語は、その利点のために使用されています。

Prologの利点は何ですか?

Prolog を他のどの言語よりも効率的に使用できる一般的な状況/問題のカテゴリは何ですか?