Найти все отцов, имеющих больше 3 детей - Prolog
Формулировка задачи:
Ребят помоги с программой.
Требуется сформировать исходный список структур. Предусмотреть предикат, дополняющий этот список информацией, вводимой с клавиатуры. Сформировать из исходного списка новый список структур и вывести его на экран. Определены структуры «Ф.И.О», «дети» (в виде списка [имя_1, имя_2,…, имя_N]), «семья» (Ф.И.О., Ф.И.О., дети). Найти все отцов, имеющих больше 3 детей.
Не могу справиться. Можете что подсказать?
Листинг программы
- domains
- rod=r(string,string,string)
- deti=string*
- fam=f(rod,rod,deti)
- predicates
- family(fam)
- search(fam,integer)
- dlina(deti,integer)
- clauses
- family(f(r("Ivanov","Petr","Ilich"), r("Ivanova","Maria","Ivanovna"), ["Vanya","Olya","Anya"])).
- family(f(r("Ivanov1","Petr","Ilich"), r("Ivanova1","Maria","Ivanovna"), ["Vanya","Anya"])).
- family(f(r("Ivanov2","Petr","Ilich"), r("Ivanova2","Maria","Ivanovna"), ["Vanya","Olya"])).
- family(f(r("Ivanov3","Petr","Ilich"), r("Ivanova3","Maria","Ivanovna"), [])).
- family(f(r("Ivanov4","Petr","Ilich"), r("Ivanova4","Maria","Ivanovna"), ["Vanya","Masha","Anya"])).
- dlina([],0).
- dlina([_|T],N):- dlina(T,NT), N=NT+1.
- search(P,K):-family(f(P,_,L),K), dlina(L,K1), K1>2.
Решение задачи: «Найти все отцов, имеющих больше 3 детей»
textual
Листинг программы
- search(P) :-
- family(f(P, _, L)),
- dlina(L, K1),
- K1 > 2.
- goal
- search(P),
- write(P), nl,
- fail.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д