【发布时间】:2010-01-27 20:21:17
【问题描述】:
# Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
rentable_items = [
%w(x x x - - - x x x - - -), # item1
%w(- - - - - - - - - - - -), # item2
%w(x x x x x x x - - - - -), # item3
%w(x x x - - - - x x x x x) ]# item4
好的,鉴于数据结构(表示项目月份的租金槽),其中“x”代表不可出租,“-”代表可出租,我有以下问题。
当我收到从 4 月到 6 月期间的请求时,我希望按以下优先顺序获得结果:
items = rentable_items.ideal_utilization_for("2010/03/01", "2010/06/30")
items # [item1, item2, item4] #where item4 is the worst
这背后的想法是首先填补一个项目的空白,并尝试产生尽可能少的新空白。
我不需要完整的解决方案,但需要哪些工具(库、gem、算法)可用于解决此类问题的建议。示例将不胜感激。
[编辑:删除了第二个例子,专注于真正的问题。]
【问题讨论】:
-
如果您已经愿意在请求期间换出物品,那么您给他们提供的物品真的很重要吗?
-
为什么在那个时期item1比item4“更好”?为什么将租金分成两件而不是一件?
-
不,这并不重要,只要给定的项目不会产生新的差距。嗯,考虑到这一点,我知道,我必须编辑示例:)
-
@BlueRaja:item1 比 item4 好,因为 item4 在期末会产生 1 个月的差距。
-
@Sebastian:但是 item2 会产生 6 个月的间隔......另外,如果您不担心在租赁中途更换物品,那么间隔并不重要,因为在一个月内X 您将始终有 Y 人想要物品和 Z 物品可用。在这种情况下,最好的算法就是抓住第一个可用的算法。在现实生活中您可能需要考虑的其他事项:物品的使用频率、所处的状况、保修期何时结束等。
标签: ruby algorithm utilization