project-euler/0019.py
2018-03-29 11:48:11 +02:00

73 lines
1.1 KiB
Python

target = 171
def is_leap_year (year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
def days_since_1900 (year, month = 1, day = 1):
days = 0
for y in range(1900, year):
if (is_leap_year(y)):
days += 366
else:
days += 365
for m in range(1, month):
days += get_days_in_month(m, year)
days += day - 1
return days
days_in_month = [
None,
31,
28,
31,
30,
31,
30,
31,
31,
30,
31,
30,
31,
]
week_days = [
'mon',
'tue',
'wed',
'thu',
'fri',
'sat',
'sun',
]
def get_days_in_month (month, year):
days = days_in_month[month]
if (month == 2 and is_leap_year(year)):
return days + 1
return days
def get_day_of_week (year, month, day):
days = days_since_1900(year, month, day)
rest = days % 7
return week_days[rest]
count = 0
for year in range(1901, 2001):
for month in range(1, 13):
if (get_day_of_week(year, month, 1) == 'sun'):
count += 1
print(count)
print(count == target)