我有一天的约会清单。相隔15分钟有10个可用的约会(我指的是每个15分钟的约会作为一个插槽),列表可能如下所示:
1 Unavailable
2 Unavailable
3 Available
4 Available
5 Available
6 Available
7 Available
8 Available
9 Unavailable
10 Unavailable
某些类型的约会需要最少的插槽数。例如,如果约会类型是“长”,则它需要3个连续的时隙。所以在上面的例子中,可能的组合可能是
3 Available
4 Available
5 Available
或
4 Available
5 Available
6 Available
或
5 Available
6 Available
7 Available
或
6 Available
7 Available
8 Available
然后我需要更新列表以使7和8不可用:
7 Unavailable
8 Unavailable
由于约会无法在这些时间开始,因为在这些时间没有3个连续可用的时段。
我完全不知道我可以用来实现的逻辑/规则吗?我希望有一些我可以使用的摘要,只需要输入所需的插槽数。
答案 0 :(得分:0)
这是一个函数内函数的简单教科书练习。
您的第一个功能需要扫描第一个可用插槽,然后将上下文传递给第二个功能,该功能将从当前位置向前看,并确保下一个1/2/3/4 / etc插槽可用。
如果可用,第二个函数返回true,第一个函数只考虑它需要1/2/3/4/5 / etc槽,因此可以选择使用:
注意:您可以使用1个单个函数,其中包含两个imbricated循环和$ i,$ k索引。为简化和可读性,我更喜欢两个函数!