-1

私はPrologが初めてで、長さnの指定されたリストの要素にXOR演算を適用したいと考えています. リストの最初の n-1 要素に false 要素が含まれている場合、または最後の要素が True である場合、述語は True を返す必要があります。

これまでに以下のコードを書いたのですが、クエリ ?- function([true,false,false]) などで述語が True を返すはずなのに false を返すなど、うまく動作しません。

function([X|_]) :-  \ + X,!.
function([X]):-X,!.
function([_|XS]):- function(XS),!,helper(XS).

helper([X]):- X,!.
helper([_|YS]):- helper(YS),!.

助けていただければ幸いです。ありがとう!

4

3 に答える 3

-2

Prolog コンパイラは手元にありませんが、これでうまくいくはずです。

function([false|_]).

function([X]):- X.

function([_ | XS]) :- function(XS).
于 2015-06-27T12:43:14.123 に答える