所以基本上我已经对这种语言提出了一个问题,我从昨晚开始就一直在阅读这些文档。我还不知道什么,所以我想我会试试这个网站。
基本上这里的问题是:
我已经获得了几个日历日期和计划间隔的结构:
(define-struct cal (month day))
(define-struct interval (start end))
然而,我被要求检查两个不同的间隔是否相互重叠。一个例子:
If I have dates March 12th - March 14th in my first interval,
but in my second interval I have the dates March 13th - March 2th
(overlap? int1 int2) would return true.
However if I have dates March 12th - March 14th in my first interval,
but I have March 15th - March 18th in my second interval
(overlap? int1 int2) would return false.
我不知道从哪里开始。如果有人能为我解决这个问题,那么我可以完成这个问题,我将不胜感激。非常感谢!
答案 0 :(得分:3)
编写程序时,一般的好方法是将问题分解为更易于管理的问题。因此,在解决比较两个区间的问题之前,请尝试解决比较两个日历日期的简单问题。给定两个日期a
和b
,尝试编写一个函数,如果a
在b
之前,则返回true,否则返回false。所以,
; date1 is January 5, date2 is February 6
(before? date1 date2) ; returns true
; date1 is January 5, date2 is January 2
(before? date1 date2) ; return false
接下来,考虑如何使用before?
构建overlap?
。特别要考虑这一点:如果两个区间不重叠,那么一个的结束日期在另一个的开始日期之前。
最后,考虑边缘情况 - 例如,(1月4日至3月6日)和(3月6日至12月3日),您希望程序执行什么操作?这些间隔是否重叠?
快乐的编码!
PS - 如果您需要更多帮助,请不要害怕。我故意模糊,因为我认为给你提示会比在你面前解决方案更好 - 这样你就不会学到任何东西。
答案 1 :(得分:1)
要添加Ord的优秀建议,如果您正在寻找更多基本信息:define-struct意味着什么?如何编写使用日期的函数? - 然后我建议您查看(免费,在线)教科书How To Design Programs, version 2e。您似乎对第2.5节“添加结构”感兴趣,但是如果不阅读之前的部分,可能很难理解本节。
祝你好运!