用于将日期列表合并/折叠为范围的递归算法
给定一个日期列表,
12/07/2010
13/07/2010
14/07/2010
15/07/2010
12/08/2010
13/08/2010
14/08/2010
15/08/2010
19/08/2010
20/08/2010
21/08/2010
我正在寻找指向递归伪代码算法(我可以将其转换为 FileMaker 自定义函数)的指针,以生成范围列表,即
12/07/2010 to 15/07/2010, 12/08/2010 to 15/08/2010, 19/08/2010 to 20/08/2010
该列表已预先排序和去重复。我尝试从第一个值开始向前工作,从最后一个值开始向后工作,但我似乎无法让它发挥作用。度过那些令人沮丧的日子之一......如果签名是这样的那就太好了
CollapseDateList( dateList, separator, ellipsis )
:-)
Given a list of dates
12/07/2010
13/07/2010
14/07/2010
15/07/2010
12/08/2010
13/08/2010
14/08/2010
15/08/2010
19/08/2010
20/08/2010
21/08/2010
I'm looking for pointers towards a recursive pseudocode algorithm (which I can translate into a FileMaker custom function) for producing a list of ranges, i.e.
12/07/2010 to 15/07/2010, 12/08/2010 to 15/08/2010, 19/08/2010 to 20/08/2010
The list is presorted and de-duplicated. I've tried starting from both the first value and working forwards, and the last value and working backwards but I just can't seem to get it to work. Having one of those frustrating days... It would be nice if the signature was something like
CollapseDateList( dateList, separator, ellipsis )
:-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
主例程看起来像这样:
我假设您有一些函数可以告诉您两个日期是否连续。
The main routine would look something like this:
I'm assuming you have some function that tells you if two dates are consecutive or not.
下面是执行该工作的递归 FileMaker 代码。基本方法是就地进行替换,必要时从值内的最后一个日期(最右边的单词)计算日期。这样,它可以决定何时检查下一个值是否仍然是第一个范围的一部分,或者将第一个范围标记为已完成并专注于其余值。希望它对其他人有帮助。
Here's the recursive FileMaker code that does the job. The basic approach is to do the replacement in place, where necessary calculating the date from the last date (right most word) within a value. That way it can decide to when to check if the next value is still part of the first range, or mark the first range as done and focus in on the rest of the values. Hope it helps someone else.