Ответ в теме: Влюбленные юноши и девушки (Turbo и SWI Prolog)

      Комментарии к записи Ответ в теме: Влюбленные юноши и девушки (Turbo и SWI Prolog) отключены
#2423

Остается лишь добавить логических условий о том, кто кого любит чтобы в задаче остался лишь один вариант решения:

  % Коля любит девушку, влюбленную в юношу, который любит Лену.
  member(love(BoyLoveLena, lena), Solution), 
  member(love(GirlLoveBoyLoveLena, BoyLoveLena), Solution), 
  member(love(kolya, GirlLoveBoyLoveLena), Solution), 
  
  % Дима любит девушку, влюбленную в юношу, который любит Вику.
  member(love(BoyLoveVika, vika), Solution), 
  member(love(GirlLoveBoyLoveVika, BoyLoveVika), Solution),
  member(love(dima, GirlLoveBoyLoveVika), Solution),
  
  \+ member(love(lena, yura), Solution).

Чтобы на языке Prolog написать, что «Коля любит девушку, влюбленную в юношу, который любит Лену», мы должны сначала найти в варианте решения юношу, который любит Лену, затем аналогичным образом найти девушку, которая любит его, и наконец, при помощи все того же предиката member задать ограничение — потребовать чтобы в решении Коля любил именно эту девушку:

Вложения: