Краткое изложение, по сути, идея программы пролога (GNU Prolog) состоит в том, чтобы искать в базе данных, содержащей людей с доступными временными интервалами, по набору времени (время начала, время окончания) и возвращать первого человека, который может встретиться в это время. Вход имеет синтаксис
meeting(Person,slot(time(10,0),time(12,30)))
У меня есть предикат, который соответствует приведенному выше как таковой:
meeting(Person, slot(time(A,B),time(C,D))) :- %insert code
и записи в базе данных выглядят так:
free(george,slot(time(9,30),time(11,0)))
Я застрял в том, что я не уверен, как я могу сравнить время в базе данных со временем, введенным при вызове моего предиката собрания. Не ищу бесплатного ответа, просто хочу толкнуть в правильном направлении и хороший пример :) Всем спасибо!
gprolog
, загрузите свои данные (free(...)
элементов) и введите это:free( Person, slot(time(FromH, FromM), time(ToH, ToM))).
. После каждого представленного решения нажмите;
. - person lurker   schedule 19.10.2013;
, и для каждой записи вы получитеPerson
, час времени начала (FromH
), минуты времени (FromM
) и т. Д. Для каждого совпадения. Если вы этого не поняли, значит, что-то не так. И суть упражнения в том, что если вы хотите сопоставить время, вы должны выполнять такой запрос, чтобы проверять каждый раз, когда оно находится в базе данных. - person lurker   schedule 19.10.2013gprolog
, а затем введу запрос, который я вам дал (free( Person, slot(time(FromH, FromM), time(ToH, ToM))).
), тогда я получу следующие строки вывода:FromH = 9
,FromM = 30
,Person = george
,ToH = 11
иToM = 0
, чего я и ожидал. Если у вас есть несколько элементов базы данных, будет представлено несколько решений. - person lurker   schedule 19.10.2013