3
resultList(UsersQuery):-
    question(X,H),
    write(H),
    myintersection(H,UsersQuery,Match,TotalQuestionKeywords),
    Percent is Match/TotalQuestionKeywords*100,
    write('Question: '),
    write(X),nl,write('Quality: '), write(Percent),write('%'),nl,

    /* please look at this part
    Percent>=50,
    assert(listofQuestions(Percent,Question)),
    write(Percent),write(Question),nl,
    fail.
resultList(_).

'listofQuestions'という名前のファクトデータベースにデータを入力したいと思います。すべてが正常に機能しますが、私が主張しているものはメモリに残ります。したがって、プログラムを再度実行すると、同じ一連のファクトが「listofQuestions」に追加されます。

1セットのデータのみが必要です。

ありがとうございました

4

2 に答える 2

3

たぶんretractall/1、プログラムを再実行する前に実行してください。

于 2012-05-03T20:05:18.610 に答える
3

ファクトがまだアサーションされていないかどうかをチェックするアサーション用の別の述語を作成します。

assertThisFact(Fact):-
    \+( Fact ),!,         % \+ is a NOT operator.
    assert(Fact).
assertThisFact(_).
于 2012-05-12T13:15:15.973 に答える