Problem 19

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.

How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?

require "date" p (Date.civil(1901, 1, 1)..Date.civil(2000, 12, 31)).select {|d| == 1 && d.wday == 0}.size
kochany ruby ;]

Troche szybsze, może niezbyt ładnie napisane:

[code]require ‘date’

d = Date.civil(1901,1,6)
c = 0
untild = Date.civil(2001,1,1)
while d < untild
d = d + 7
c+=1 if == 1

puts “W sumie " + c.to_s + " takich dni”[/code]

teamon: real 0m5.658s user 0m4.920s sys 0m0.428s sevos: real 0m1.081s user 0m0.912s sys 0m0.100s