0

X がリストのリストである述語 p(X) を定義したいと思います。X に要素 Y が 1 つしかなく、その X と Y に共通の要素がない場合、p(X) は真です。

これは宿題ではありません。これは私の試験の問題例です。ありがとうございました。

4

1 に答える 1

1

書き留めてください:

p(X):-    %//  "define a predicate p(X), where X is list of lists, such that 
          %//   p(X) is true if in X there is only one element Y, 

  % findall( Y, (member(Y,X), ........ ), [_])

          %//   such that X and Y have no common elements".

    findall( Y, (member(Y,X), \+ have_common_element(X,Y) ), [_]).

have_common_element(A,B):- member(X,A), memberchk(X,B).

今、

8 ?- p([[1,[2]],[2],[3]]). %// both [2] and [3] have no common elts w/ X
false.

9 ?- p([[1,[2]],[2]]).     %// [1,[2]] has one common elt w/ X, viz. [2]
true.

プロローグ リストは異種です。要素はリストの場合もあります。そしてその要素も。

于 2012-09-21T08:05:48.317 に答える