【发布时间】:2017-06-01 12:34:33
【问题描述】:
我会诚实说这是家庭作业,但我非常需要帮助。
我是 Prolog 的新手,来自 C++ 和 Javascript,无论我多么努力,我就是不明白。
我应该做的是能够找到两个日期之间的差异(假设非闰年)。
基本上我有一个知识库,其中包含如下信息:
object(A, B).
object(A, B).
...
其中 A 代表月份,B 代表该月的总天数。 (例如对象(1, 31)。)
我应该用于输入的表达式是这样的: 差异(对象(A,B),对象(A,B),N)。 (N = 对象之间的差异)。
我尝试了一些不同的方法(而且我知道这不是正确的做法),但当时无法更进一步:
difference(object(A,B), object(A,B),N):-
days(M,D), days(M,D),
Y = 365-D,
N is Y.
我不明白如何让这两个对象注册为我可以操纵的单独事物,因此继续解决问题。
有人可以请指点我正确的方向吗?
谢谢
家庭作业问题(按要求)。 假设存在描述多少天的天数关系 非闰年的每个日历月。
days(1,31).
days(2,28).
(等等)。
结构 dateObject(M, D) 描述了一个日期。例如 dateObject(6,5) 表示 6 月 5 日。 写出关系差(From, To, N),其中N是开始之间的天数 日期从和结束日期到。从日期不包括在计数中。为了 示例:
?- difference(dateobject(2,1),dateobject(2,2),N).
N = 1.
如果日期中的日期或月份值无效(例如 dateobject(4,31)、dateobject(13,1),则 返回的 N 值应为 -1。如果 From 日期晚于 To,则 N 也应返回 -1 错误值。
【问题讨论】:
-
“对象之间的差异”是什么意思?
-
我不明白您所说的“让两个对象注册为我可以操作的单独事物”是什么意思?
-
@Enigmativity 基本上,这些对象代表一个月中的几天:days(1, 31)。差异(日期对象(4,30),日期对象(5,15),N)。
-
是的,我明白这一点。 “对象之间的差异”是什么意思?
-
@Enigmativity 区别在于两个日期对象之间的天数。
标签: prolog