16 lines
610 B
Ruby
16 lines
610 B
Ruby
require 'date'
|
|
# The only case where the month has 5 weekends is when the last day
|
|
# of the month falls on a Sunday and the month has 31 days.
|
|
|
|
LONG_MONTHS = [1,3,5,7,8,10,12]
|
|
YEARS = (1900..2100).to_a
|
|
|
|
dates = YEARS.product(LONG_MONTHS).map{|y, m| Date.new(y,m,31)}.select(&:sunday?)
|
|
years_4w = YEARS - dates.map(&:year)
|
|
|
|
puts "There are #{dates.size} months with 5 weekends from 1900 to 2100:"
|
|
puts dates.first(5).map {|d| d.strftime("%b %Y") }, "..."
|
|
puts dates.last(5).map {|d| d.strftime("%b %Y") }
|
|
puts "There are #{years_4w.size} years without months with 5 weekends:"
|
|
puts years_4w.join(", ")
|