将数字/字符串转换为时间-PROLOG
我是prolog的初学者,想知道是否有一种简单的方法可以将数字转换为时间,以便进行比较 例如: 以下两个列表显示了公交车名称、载客量、到达城市的时间和离开城市的时间。 巴士信息(巴士1150,12:30,14:30)。 公交车信息(公交车220016:00,18:00) 乘客信息(迈克,21,17:30)-显示姓名、年龄和可用时间将数字/字符串转换为时间-PROLOG,prolog,scheduling,Prolog,Scheduling,我是prolog的初学者,想知道是否有一种简单的方法可以将数字转换为时间,以便进行比较 例如: 以下两个列表显示了公交车名称、载客量、到达城市的时间和离开城市的时间。 巴士信息(巴士1150,12:30,14:30)。 公交车信息(公交车220016:00,18:00) 乘客信息(迈克,21,17:30)-显示姓名、年龄和可用时间 我想看看迈克能赶上哪辆公共汽车。答案是bus 2,但是我如何在prolog中计算它呢?您只是比较给定一天的时间,因此不需要将数字转换为任何类型的系统时间编码。你只需要
我想看看迈克能赶上哪辆公共汽车。答案是bus 2,但是我如何在prolog中计算它呢?您只是比较给定一天的时间,因此不需要将数字转换为任何类型的系统时间编码。你只需要说“午夜过后几分钟”之类的话。例如,
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
及
要在Prolog中指定表达式的数值,需要使用is
谓词。例如:
StartTime is (StartHH * 60) + StartMM.
如果您已经了解了Prolog谓词的基本工作原理,那么这些基本信息应该会让您开始学习。我可能会担心,因为一些Prolog(特别是SWI)使用此运算符作为模块名称空间解析运算符。但这在SWI和GNU中似乎是开箱即用的,所以也许我无缘无故地担心…
StartTime is (StartHH * 60) + StartMM.