ruby-on-rails - 计算 ruby​​ 中的可用周数

标签 ruby-on-rails ruby

我需要一种根据当前日期和已使用日期计算可用周数的方法。

我想出了不同的解决方案,但所有这些对于 Ruby 来说似乎都“丑陋”。我知道有更好的方法。

要求:

方法需要 3 个参数

start  - Date, to start calculation from

amount - Integer, How many weeks do we want?

used_weeks - Array of already used weeknumbers (optional) Default: nil

假设我们传递这个方法:

calculate_available_weeks (Date.current, 5, [1,3,7])

(为简单起见,假设 Date.current 返回 Sun, 01 Jan 2012)

然后该方法应返回接下来几周的日期:2,4,5,6,8

这是我到目前为止所得到的:

def calculate_week_dates(start, amount, excluded_weeks = nil)
  weeks = []

  last_checked = start
  until weeks.length == amount do
    unless excluded_weeks && excluded_weeks.include?(last_checked.cweek)
      weeks << last_checked
    end
    last_checked = last_checked.next_week
  end

  weeks
end

最佳答案

这就是我喜欢 ruby 的原因。

def calculate(starting_week, amount, excluded_weeks = [])
  ((starting_week..52).to_a - excluded_weeks).first(amount)
end

puts calculate( 1, 5, [1,3,7]).inspect # => [2, 4, 5, 6, 8]
puts calculate( 5, 5, [1,3,7]).inspect # => [5, 6, 8, 9, 10]
puts calculate(10, 5, [1,3,7]).inspect # => [10, 11, 12, 13, 14]

关于ruby-on-rails - 计算 ruby​​ 中的可用周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490154/

相关文章:

java - ActiveResource 的基本假设端点是什么?

ruby-on-rails - Sidekiq 在生产环境中监控无 CSS 和 Bootstrap

javascript - 带有原型(prototype)的简单水平 Javascript 导航

python - Python 和 Ruby 中的快速模计算

mysql - 无法抓取 db :migrate because of mysql missing . frm 文件

ruby-on-rails - Ruby Rails 集合选择显示空白 "prompt"值?

ruby - Capybara + Cucumber + Selenium Driver 的 Authlogic 不工作

ruby - 'json' 原生 gem 需要安装构建工具

Golang 中的 Ruby 1.9.3 Digest::SHA1.hexdigest 等价物

ruby - 编写模拟器并需要能够引用 Ruby 中的方法/函数