Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for The Most Frequent Weekdays by vtflnk
from datetime import date
def most_frequent_days(year):
""" List of most frequent days of the week in the given year.
"""
DAYS = ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',
'Saturday', 'Sunday')
d1 = date(year, 1, 1)
d2 = date(year, 12, 31)
first_day = d1.weekday() # Day year starts from ('Monday' - 0, 'Thursday' -1, ...)
days_in_year = (d2 - d1).days + 1
if days_in_year == 365:
# for not leap Year it wil be one day - from which year starts
return [DAYS[first_day]]
else:
# for leap yeat it will be two - like before plus next one
if first_day == 6: # Sunday is different
return [DAYS[(first_day + 1)%7], DAYS[first_day]]
else:
return [DAYS[first_day], DAYS[(first_day + 1)%7]]
if __name__ == '__main__':
# These "asserts" using only for self-checking and not necessary for auto-testing
assert most_frequent_days(2399) == ['Friday'], "1st example"
assert most_frequent_days(1152) == ['Tuesday', 'Wednesday'], "2nd example"
assert most_frequent_days(56) == ['Saturday', 'Sunday'], "3rd example"
assert most_frequent_days(2909) == ['Tuesday'], "4th example"
Jan. 19, 2018