2
def dayOfTheWeek(self, day: int, month: int, year: int) -> str:3
LOWEST_DAY, LOWEST_MONTH, LOWEST_YEAR, DAY = 1, 1, 1971, 514
difference = self.daysBetweenDates(15
(LOWEST_DAY, LOWEST_MONTH, LOWEST_YEAR), (day, month, year)17
return DAYS[(difference + DAY) % 7]19
def daysBetweenDates(self, date1: tuple, date2: tuple) -> int:22
def daysSinceLowest(date: tuple) -> int:23
day, month, year = date25
isLeapYear = lambda x: (26
1 if (x % 4 == 0 and x % 100 != 0) or x % 400 == 0 else 030
# days between the LOWEST_YEAR and year31
days += 365 * (year - LOWEST_YEAR) + sum(32
map(isLeapYear, range(LOWEST_YEAR, year))34
# days between year and exact date37
28 + isLeapYear(year),49
days += sum(daysInMonth[: month - 1]) + day52
return abs(daysSinceLowest(date1) - daysSinceLowest(date2))