prolog-cut

    6

    2答えて

    私はプロローグを初めて使いましたが、1つの回答を見つけた後にクエリを停止する方法を試しています。私はこのコードを使用しています: member1(L,[L|_]). member1(L,[_|RS]) :- member1(L,RS),!. 結果は次のとおりです。「?真」 | ?- member1(3,[3,2,3]). true ? a yes 私は、私はプロローグ

    0

    1答えて

    fact(1,1):-!. fact(N,F):- N1=N-1, fact(N1,F1), F=F1*N. これは(サイトではなく)スタックオーバーフローにつながります。それはカット(!)のためにではありません。それはSWI-Prologで動作しますか?

    0

    1答えて

    私はLearn Prolog Now! 's chapter on cutsを読むのと同時に、Bratkoの人工知能のためのプロローグプログラミング、第5章:バックトラックを制御しています。最初は、他のプログラミング言語から知られているif-else節を模倣する単純な方法でした。例えば、このコードは、我々は falseを期待しても、すべての変数がインスタンス化されている場合に失敗しますラインを書き

    5

    3答えて

    でのカットの使用を回避私は次のコードでプロローグに以下の機能を実装しました: abs2(X, Y) :- X < 0, Y is -X. abs2(X, X) :- X >= 0, !. どのように私は(「!」)カットを使用せずにこの機能を実装することができますか?

    1

    1答えて

    私はmy previous questionの答えとコメントを読んできましたが、Bratkoの例については与えられた説明を適用しようとしました(Prolog Programming for Artificial Intelligence、 )、私はそれを完全に理解しているかどうかはわかりません。目標リストで は C :- P, Q, R, !, S, T, U.プロローグ一つずつ試みによって、最終

    1

    1答えて

    Prologでカットを使用しています。なぜ以下を返すために、次のクエリの効果がある: ?- !,false. no まだこのクエリは次の値を返します。 ?- !;false. yes

    4

    2答えて

    私は、キーストアを管理するリレーショナルプロローグプログラムを書いています。最初のコードは、インターネット上で見つかった講義スライドの一部から取っています(http://people.eng.unimelb.edu.au/pstuckey/book/course.html - 参照:データ構造スライドを参照)。 このコードでは、同じキーで複数の値を追加することができます。ただし、同じキーと値のペア

    1

    1答えて

    私は私の知識ベースを定義した:私は、次を使用し、上記の知識ベースを使用して、今すぐ edge(mammal,isa,animal). edge(human,isa,mammal). edge(simba,isa,human). edge(animal,swim,bybirth). edge(human,swim,mustlearn). path(X,Y) :- edge(X,isa,