Как сравнить время с временным диапазоном, указанным в Прологе? - PullRequest
2 голосов
/ 24 сентября 2011

Допустим, у меня есть время сравнения структуры (часы, минуты), когда пользователь сравнивает пример с примером timetime (10,40), структура сделает сравнение по временному диапазону, указанному в примере введено время
1) с 10:00 до 12:00 распечатает сообщение и 2) с 18:00 до 20:00 будет напечатано сообщение. если введенное время находится за пределами диапазона, оно также напечатает сообщение.

как я могу это сделать?

легко сравнивать слова, но мне действительно тяжело сравнивать время.

1 Ответ

1 голос
/ 24 сентября 2011

Легко ли сравнивать слова?Вы должны попробовать это, когда интернационализация вовлечена, чтобы оценить, насколько трудным может быть!Гораздо проще сравнить пару целых чисел, исходя из вашей проблемы (если я понимаю вопрос).

message_on_range(1, 10:00, 12:00, 'it\'s morning!').
message_on_range(2, 18:00, 20:00, 'it\'s evening!').

comparetime(Hours, Mins) :-
    message_on_range(_, Start, Stop, Message),
    less_equal_time(Start, Hours:Mins),
    less_equal_time(Hours:Mins, Stop),
    write(Message), nl.
comparetime(_Hours, _Mins) :-
    write('please check your clock!'), nl.

less_equal_time(H1:S1, H2:S2) :-
    H1 == H2 -> S1 =< S2 ; H1 < H2.

Вы должны знать о функциях Prolog: ваша проблема может потребовать обрезки после печати сообщения!Т.е.

...
        less_equal_time(Hours:Mins, Stop),
        write(Message), nl, !.
...