Найти все отцов, имеющих больше 3 детей - Prolog

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Найти все отцов, имеющих больше 3 детей»

textual
Листинг программы
  1.     search(P) :-
  2.         family(f(P, _, L)),
  3.         dlina(L, K1),
  4.         K1 > 2.
  5. goal
  6.     search(P),
  7.     write(P), nl,
  8.     fail.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы