2

我是序言的初学者,想知道是否有一种简单的方法可以将数字转换为时间,以进行比较。

例如:下面两个列表显示了巴士名称、容量、到达城市的时间、离开城市的时间。bus_info(bus1,150, 12:30, 14:30)。bus_info(bus2, 200, 16:00, 18:00)。

乘客信息(麦克,21,17:30)。- 显示姓名、年龄和可用时间

我想看看迈克能赶上哪辆公共汽车。答案是总线 2,但我如何在 prolog 中计算呢?

4

1 回答 1

2

您只是在比较给定日期的时间,因此您不需要将数字转换为任何类型的系统时间编码。您只需要说“午夜过后的几分钟”或类似的话。例如,12:30将是(12*60)+30午夜过后的几分钟。您可以将其用作每日日程的比较单位。

如果您要在 Prolog 中“询问”,请记录您的小时数和分钟数来执行此计算:

bus_info(Bus, Num, StartHH:StartMM, EndHH:EndMM).

你会得到两个结果:

Bus = bus1
Num = 150
StartHH = 12
StartMM = 30
EndHH = 14
EndHH = 30

Bus = bus2
Num = 200
StartHH = 16
StartMM = 0
EndHH = 18
EndMM = 0

要在 Prolog 中为表达式分配数值,您需要is谓词。例如:

StartTime is (StartHH * 60) + StartMM.

如果您了解了 Prolog 谓词的基本工作原理,那么这些基本信息应该可以帮助您入门。

于 2013-10-25T01:21:09.270 回答