Ключи и вопросы для нашего примера даны в оставшейся части программы:
test_puzle(Name,puzle(Qeys,Questions,Solve)):-
structure(Name,Structure),
qeys(Name,Structure,Qeys),
questions(Name,Structure,Questions,Solve).
structure(test,[friend(N1,C1,S1),friend(N2,C2,S2),friend(N3,C3,S3)]).
qeys(test,Friends,
[('играет лучше'(X1,Y1,Friends), 'имя'(X1,'майкл'), 'спорт'(X1,'баскетбол'),
'национальность'(Y1,'американец')),
('играет лучше'(X2,Y2,Friends), 'имя'(X2,'саймон'),
'национальность'(X2,'израильтянин'), 'спорт'(Y2,'теннис')),
('первый'(Friend,X), 'спорт'(X,'крикет'))
]).
questions(test, Friends,
[member(Q1,Friends), 'имя'(Q1,Name),
'национальность'(Q1,'австралиец'), member(Q2,Friends),
'имя'(Q2,'ричард'), 'спорт'(Q2,Sport)],
[['Имя австралийца -',Name],['Ричард играет в ',Sport]]).
'играет лучше'(A,B,[A,B,C]).
'играет лучше'(A,C,[A,B,C]).
'играет лучше'(B,C,[A,B,C]).
'имя'(friend(A,B,C),A).
'национальность'(friend(A,B,C),B).
'спорт'(friend(A,B,C),C).
'первый'([X|Xs],X).
find(Y):-
test_puzle(test,X),
solve_puzle(X,Y).
Первый месяц бухгалтерского обслуживанеия в подарок, если вы обратитесь в эту компанию: http://www.arita-audit.ru/.
Каждый человек имеет три атрибута и может быть представлен структурой fiend(Name,Country,Sport). Есть три друга распределение мест, которых в итоге соревнования имеет существенное значение. Поэтому в качестве структуры данных для решения задачи упорядоченную последовательность из трех элементов, т. е. список:
[friend(N1,C1,S1),friend(N2,C2,S2),friend(N3,C3,S3)].
Запуск предиката
?- find(X).
выдает решение
X = [['Имя австралийца -', майкл], ['Ричард играет в ', теннис]].
|