Мне нужен метод, который вычисляет доступные недели на основе текущей даты и уже используемых дат.рассчитать свободные недели в рубине
Я придумал разные решения, но все они кажутся «уродливыми» для 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
Ваш пример вывода не соответствует вашему примеру кода. Кажется, вы указываете числа cweek в выводе, но ваш код принимает исключения в исключении, но в его результате генерирует даты, а не числа недели. Что вы хотите получить, когда текущие плюс количество недель завершается в следующем году? – dbenhur