何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

Project Euler 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)?

http://projecteuler.net/problem=19

 

20世紀中の日曜日の個数を数える問題。

閏年を考慮しないといけない問題だがPythonにはcalendarモジュールという都合のよいものがあるのでありがたく利用する。

----

import calendar
print len([calendar.weekday(year,month,1) for year in range(1901,2001) \
           for month in range(1,13) if calendar.weekday(year,month,1) ==6])
----

calendarモジュールを使うと生まれてから現在までの日数などが簡単に計算できたりする。