From 7b1b33a60a0289949851f0a3405f1dd74e573fb0 Mon Sep 17 00:00:00 2001 From: Daniel Ingram Date: Sun, 25 Mar 2018 23:14:59 -0400 Subject: [PATCH] Solution to Problem 19 --- Project Euler/Problem 19/sol1.py | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Project Euler/Problem 19/sol1.py diff --git a/Project Euler/Problem 19/sol1.py b/Project Euler/Problem 19/sol1.py new file mode 100644 index 000000000..94cf11702 --- /dev/null +++ b/Project Euler/Problem 19/sol1.py @@ -0,0 +1,51 @@ +from __future__ import print_function +''' +Counting Sundays +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)? +''' + +days_per_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + +day = 6 +month = 1 +year = 1901 + +sundays = 0 + +while year < 2001: + day += 7 + + if (year%4 == 0 and not year%100 == 0) or (year%400 == 0): + if day > days_per_month[month-1] and month is not 2: + month += 1 + day = day-days_per_month[month-2] + elif day > 29 and month is 2: + month += 1 + day = day-29 + else: + if day > days_per_month[month-1]: + month += 1 + day = day-days_per_month[month-2] + + if month > 12: + year += 1 + month = 1 + + if year < 2001 and day is 1: + sundays += 1 + +print(sundays) \ No newline at end of file