我无法解决我正试图解决的问题。我想制作一个数组来收集本月初的所有日期(数字)(称为starting_days_of_month
100年。为此,我有两个数组如下,正常年份和闰年:< / p>
beginnings= [0,31,59,90,120,151,181,212,243,273,304,334] # jan = 31, feb =jan + 28, mar = jan + feb + 31, etc.
leap_beginnings = beginnings.collect { |i| i > 32 ? i += 1 : i }
这里,开头是月份的开头,leap_beginnings是闰年月份的开始(即,leap_beginnings
之后,beginnings
在第二个月的1天被添加到{{1}的每个月})。
现在我有从1900年开始到2000年底的年份。我想要做的是将起始区域的值从头到尾添加到starting_days_of_month
数组,但是当年份是可以被4整除(闰年),我想将leap_beginnings
的值添加到数组中。
如何将两个数组相互添加,其中数组的第一个值被添加到第二个数组的第一个值,而一个新数组是输出(starting_days_of_month
),我可以将其用作第一个值又来了? (重复100年,因此输出是一个数字数组,包含100年内该月的所有起始日期。)
答案 0 :(得分:1)
beginnings = [0,31,59,90,120,151,181,212,243,273,304,334] # jan = 31, feb =jan + 28, mar = jan + feb + 31, etc.
leap_beginnings = beginnings.map.with_index {|n,i| (i > 1) ? n+1 : n }
def leap_year?(n)
n % 4 == 0 && (n % 400 == 0 || n % 100 != 0)
end
def offset(array)
if array.size == 0
0
else
array.max + 31 # because december
end
end
starting_days_of_month = []
(1900..2000).each_with_index do |year, index|
days = leap_year?(year) ? leap_beginnings : beginnings
starting_days_of_month += days.map { |day| day + offset(starting_days_of_month) }
end
puts starting_days_of_month