import Foundation
/*
This program determines the day of the week for January 1st of a given year.
Approach:
---------
Swift provides built‑in date/time handling through:
- DateComponents(year:, month:, day:) : constructs a calendar date
- Calendar.current.date(from:) : builds a Date object
- Calendar.current.component(.weekday, from:) : returns weekday number (1..7)
Weekday values (Swift / iOS convention):
1 = Sunday
2 = Monday
3 = Tuesday
4 = Wednesday
5 = Thursday
6 = Friday
7 = Saturday
This avoids manual calendar arithmetic and uses efficient built‑in routines.
*/
// Convert numeric weekday (1..7) to readable weekday name
func weekdayName(_ weekday: Int) -> String {
let names: [String] = [
"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"
]
return names[weekday - 1] // Convert 1-based to 0-based index
}
// Compute weekday of January 1st for a given year
func jan1Weekday(year: Int) -> String {
let components = DateComponents(year: year, month: 1, day: 1)
let calendar = Calendar.current
// Build the date safely
guard let dateValue = calendar.date(from: components) else {
return "Invalid date"
}
// Extract weekday number (1..7)
let weekdayNum: Int = calendar.component(.weekday, from: dateValue)
return weekdayName(weekdayNum)
}
let year: Int = 2026
let result: String = jan1Weekday(year: year)
print("January 1st, \(year) falls on a \(result).")
/*
run:
January 1st, 2026 falls on a Thursday.
*/