**Problem 19**

You are given the following information, but you may prefer to do some research for yourself.

- 1 Jan 1900 was a Monday.
- Thirty days has September,

April, June and November.

All the rest have thirty-one,

Saving February alone,

Which has twenty-eight, rain or shine.

And on leap years, twenty-nine. - A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.

**Solution (in Ruby)**

This particular solution does not involve any hard calculations, just run through the dates starting from the first sunday step by 7 days and check if the sunday lies on the first day of the month.

require 'date' d1, d2, total_sundays = [Date::civil(1901, 1, 1), Date::civil(2000, 12, 31), 0] d1 +=1 while (d1.wday != 0) d1.step(d2, 7){|date| total_sundays+=1 if date.day == 1} puts "Total number of Sundays : #{total_sundays}"

Hover here to see the solution

## No comments:

Post a Comment