Пролог Изменение факта в цепочку персонажей - PullRequest
0 голосов
/ 07 февраля 2011

Допустим, у меня есть 2 факта:

time(3:44).
time(16:28).

Мне нужно найти разницу между ними.Так что я подумал, что если бы я мог преобразовать 3:44 в цепочку символов, я мог бы затем бросить список, получить числа и работать с ними ....

Но как я могу изменить этот факт? 3: 44, в цепочку персонажей?

1 Ответ

1 голос
/ 14 февраля 2011

Если ваши факты для time/1 написаны точно , как вы показали выше, тогда они содержат термины, составленные с ':'/2, так что, если вы выполнили следующее, вы получите:

?- time(H:M).
H = 3,
M = 44 ;
H = 16,
M = 28.

Как видите, вы можете легко извлечь часы (H) и минуты (M) для каждого time/1 факта, используя сопоставление с образцом, как показано. Используя эту технику, вы можете попытаться вставить свои значения в следующее (например, это всего лишь предложение; оно может работать не так, как вы хотите, но вы должны понять основную идею):

duration_between(H1:M1, H2:M2, H3:M3) :-
    MinsDiff is abs((M2 - M1) + ((H2 - H1) * 60)), % minutes btw H2:M2 and H1:M1
    H3 is floor(MinsDiff / 60),
    M3 is MinsDiff mod 60. 

Выполнение этого, например, дает:

?- duration_between(3:44, 16:28, H:M).
H = 12,
M = 44.

Протестировано с SWI-Prolog.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...