Я реализую семейную программу в прологе. У меня есть проблема для реализации некоторых правил.Пролог, у меня есть список структуры, как Извлечь данные и вернуть новый список другой структуры?
первую очередь я реализовать это правило: список
number_of_children_couple(_list):-
findall(children(_f,_m,_n),children(_f,_m,_n),_list).
возврата:
19 ?- number_of_children_couple(_list).
_list = [children(mordechai, miriam, 1), children(salax, naima, 1), children(eli, bella, 2), children(..., ..., ...)|...].
моя проблема заключается в том, как реализовать:
number_of_children_person(_list28,list_person):-
первый аргумент:
_list28 = _list //the above list ,that return from the rule
и второй аргумент:
list_person = [children(mordechai, 1), children(salax, 1),children(eli, 2),children(..., ...)|...]
и я также использовать с:
%_num is number of children for couple
children(_father,_mother,_num):-
couple(_mother,_father),
findall(_child,parents(_mother,_father,_child),_children),
length1(_children,_num).
% _num является количество детей для _person
children(_person,_num):-
gender(_person,_),
findall(_child,parent(_person,_child),_list),
length1(_list,_num).
Для начала FindAll/3, безусловно, не является хорошей идеей. См. «Искусство Пролога» как хороший вводный текст. – false