С помощью этой программы я делаю так, чтобы женщины могли встречаться только с мужчинами того же роста или выше, с таким же образованием или, по крайней мере, выше и не моложе самих себя, НО не на 10 лет старше сам себе.
Как бы я попытался разделить атомы внутри людей на отдельные переменные? Например, с Лизой:
person(lisa, female, 180, 30, phd).
Должен ли я создать другое правило, которое находит атрибуты? IE:
person1(A,B,C,D,E)
А потом сравнить потом?
Кроме того, синтаксически, как мне правильно найти, если мужчина старше, чем женщина плюс 10. У меня есть комментарий, отмеченный ниже, показывающий, о чем я говорю.
person (name, gender, height, age, education (hs,college,masters,phd)).
%people
person(lisa, female, 180, 30, phd).
person(jenny, female, 167, 25, hs).
person(bob, male, 180, 40, phd).
person(charles, male, 190, 30, masters).
person(arnold, male, 177, 29, hs).
%heirarchyOfEducation
lowerthan(hs,college).
lowerthan(college,masters).
lowerthan(masters,phd).
%IfEducationlower
edu_le(A,B):- lowerthan(A,B).
edu_le(A,B):- lowerthan(A,X), edu_le(X,B) ; A = B.
%DatingParameters
asTall(M,F):- M >= F.
edu_E
%Right here aswell
notYounger_notTenPlus(M,F):- M >= F, M < (F+10).