# 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、アルゴリズム) についてのアドバイスが必要です。例は非常に高く評価されます。
[編集: 実際の問題に焦点を当てるために、2 番目の例を削除しました。]