Ruby 如何使用bits在工作计划中查找可用时间?

Ruby 如何使用bits在工作计划中查找可用时间?,ruby,time,range,bits,Ruby,Time,Range,Bits,关于对另一个问题的回答: 我正在使用这个答案,但是我对计算可接受的_时间数组的意义感到困惑。我想知道在一天中的哪些时间(时间表)可用于特定的时段长度,但上述答案中的功能似乎不能满足这一点,除非我遗漏了什么。grioja,您链接的答案确实提供了您所需时段长度的可用时间。忙/可用时间由位表示,例如: 1100001110 (这将是30分钟的可用时间,然后是60分钟的忙时间,然后是45分钟的可用时间,然后是15分钟的忙时间。)然后您会得到一个二进制数,表示您要查找的可用时间段的长度,例如: 111

关于对另一个问题的回答:


我正在使用这个答案,但是我对计算可接受的_时间数组的意义感到困惑。我想知道在一天中的哪些时间(时间表)可用于特定的时段长度,但上述答案中的功能似乎不能满足这一点,除非我遗漏了什么。

grioja,您链接的答案确实提供了您所需时段长度的可用时间。忙/可用时间由位表示,例如:

1100001110

(这将是30分钟的可用时间,然后是60分钟的忙时间,然后是45分钟的可用时间,然后是15分钟的忙时间。)然后您会得到一个二进制数,表示您要查找的可用时间段的长度,例如:

111

(这意味着您需要找到一个45分钟的可用时间段。)然后尝试将两个数字相对移动:

1100001110
0000000111

1100001110
000000 1110

1100001110
0000011100

…等等,对于每个可能的相对移位长度。他在回答中显示的AND操作确定了“所需插槽长度”编号中的1是否与“可用时间”编号中的所有1匹配。如果是,您已经找到了一个可接受的时间

顺便说一句,你可以用其他方式做同样的事情。例如,可以用字符串中的字符表示忙/可用时间,并使用正则表达式查找所需长度的可用插槽


请注意,如果可用/忙时隙列表很长,这种通用方法(基本上只是“线性搜索”)将无法扩展。在这种情况下,还有其他更快的方法。

谢谢,这样更有意义。我知道循环现在做了什么,只是它返回的内容不是很有意义,我已经纠正了。如果您有任何其他来源的日程安排,或替代这种方法,你会认为更容易,请让我知道。