0

こんにちはみんな私はプロローグに不慣れで、私の最初のプロジェクトを完了しようとしています。私は3つの引数(人(お父さん)、人(お母さん)、。すべての子供たちのリスト)を持つ家系図(家族/ 3)を持っています現在、私の知識ベースには3つの家族がいます。私が達成しようとしているのは、3人以上の子供を持つ母親の名前を表示することです。これはこれまでのコードです。

family(person(tom,right,date(17,May,1950),works(mathematician)),person(ann,right,date(29,May,1951),unemployed),
[person(pat,right,date(5,May,1983),unemployed),person(max,right,date(15,May,1973),unemployed),[]]).

family(person(nick,wellbard,date(15,September,1954),works(electrician)),person(cathrine,wellbard,date(11,March,1957),unemployed),
[person(john,wellbard,date(15,May,1985),works(musician)),person(mike,wellbard,date(25,May,1989),unemployed),
person(chloe,wellbard,date(13,October,1991),unemployed),[]]).

family(person(john,brock,date(17,January,1951),works(programmer)),person(mary,brock,date(19,March,1952),works(teacher)),
[person(tony,brock,date(20,May,1975),unemployed),person(sasha,brock,date(1,April,1979),unemployed),
person(josh,brock,date(29,April,1982),unemployed),[]]).

family(_,X,_):-[X,Y,Z|]3人以上の子供がいるお母さんの名前を見せられるように考えています。私がProLogの初心者である間違いについてすみません、どんな助けやガイダンスも素晴らしいでしょう、ありがとう:)

4

2 に答える 2

0

あなたは多かれ少なかれ軌道に乗っています...試してみてください

mother_with_at_least_3_sons(M) :-
   family(_,M,[_,_,_|_]).

子リストを変更できない場合は編集し、最後に不要な [] を削除すると、ルールは実際に読み取る必要があります

mother_with_at_least_3_sons(M) :-
   family(_,M,[_,_,_,_|_]).
于 2012-11-28T22:20:40.567 に答える
0

これがあなたの質問に対する私の答えです。

% お父さん、お母さん、子供がいる家族を見つけたらプロローグするように「言います」

% ここで、 Kids は 3 つ以上の要素を持つリストです ( length で取得)

% では、お母さんの姓と名を教えてください

more_than_three_children(MotherName,MotherSurname) :- family(Dad,Mom,Kids),
                                                      length(Kids,NumberOfKids),
                                                      NumberOfKids > 3,
                                                      Mom=person(MotherName,MotherSurname,_,_).

% すべての母親を見つけるために、findall 述語を使用できます

% 最初の引数は OBJECT で、GOAL を使用してオブジェクトのインスタンスを作成します

% 2 番目の引数は GOAL です。プロローグがその GOAL を満たす何らかの構造を「見つけた」場合

% リストに配置します (これは 3 番目の引数です)

mother_list(List) :- findall((MotherName,MotherSurname),more_than_three_children(MotherName,MotherSurname),List).
于 2012-11-28T22:36:39.253 に答える