Go•day-of-the-week/solution.go
package main
func dayOfTheWeek(day int, month int, year int) string {
leap := func(value int) bool { return value%400 == 0 || value%4 == 0 && value%100 != 0 }
monthDays := []int{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
elapsed := day - 1
for value := 1971; value < year; value++ {
if leap(value) {
elapsed += 366
} else {
elapsed += 365
}
}
for index := 1; index < month; index++ {
elapsed += monthDays[index-1]
if index == 2 && leap(year) {
elapsed++
}
}
return []string{"Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday"}[elapsed%7]
}
Python•day-of-the-week/solution.py
class Solution:
def dayOfTheWeek(self, day: int, month: int, year: int) -> str:
leap = lambda value: value % class="syntax-number">400 == class="syntax-number">0 or value % class="syntax-number">4 == class="syntax-number">0 and value % class="syntax-number">100 != class="syntax-number">0
month_days = [class="syntax-number">31, class="syntax-number">28, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31]
elapsed = day - class="syntax-number">1 + sum(class="syntax-number">366 if leap(value) else class="syntax-number">365 for value in range(class="syntax-number">1971, year))
elapsed += sum(month_days[index - class="syntax-number">1] + int(index == class="syntax-number">2 and leap(year)) for index in range(class="syntax-number">1, month))
return [class="syntax-string">"Friday", class="syntax-string">"Saturday", class="syntax-string">"Sunday", class="syntax-string">"Monday", class="syntax-string">"Tuesday", class="syntax-string">"Wednesday", class="syntax-string">"Thursday"][elapsed % class="syntax-number">7]
TypeScript•day-of-the-week/solution.ts
function dayOfTheWeek(day: number, month: number, year: number): string {
const leap = (value: number): boolean => value % class="syntax-number">400 === class="syntax-number">0 || (value % class="syntax-number">4 === class="syntax-number">0 && value % class="syntax-number">100 !== class="syntax-number">0); const monthDays = [class="syntax-number">31, class="syntax-number">28, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31, class="syntax-number">30, class="syntax-number">31]; let elapsed = day - class="syntax-number">1;
for (let value = class="syntax-number">1971; value < year; value += class="syntax-number">1) elapsed += leap(value) ? class="syntax-number">366 : class="syntax-number">365; for (let index = class="syntax-number">1; index < month; index += class="syntax-number">1) elapsed += monthDays[index - class="syntax-number">1] + Number(index === class="syntax-number">2 && leap(year));
return [class="syntax-string">"Friday", class="syntax-string">"Saturday", class="syntax-string">"Sunday", class="syntax-string">"Monday", class="syntax-string">"Tuesday", class="syntax-string">"Wednesday", class="syntax-string">"Thursday"][elapsed % class="syntax-number">7];
}