Skip to content

Commit 7ac44ba

Browse files
committed
Add swift implementation of Doomsday
1 parent d36887a commit 7ac44ba

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

Doomsday/Swift/Doomsday.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
func dow(year: Int, month: Int, day: Int) -> Int {
2+
var year = year
3+
let t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]
4+
year -= month < 3 ? 1 : 0
5+
return (year + year / 4 - year / 100 + year / 400 + t[month - 1] + day) % 7
6+
}
7+
8+
func dowS(year: Int, month: Int, day: Int) -> String {
9+
switch (dow(year: year, month: month, day: day)) {
10+
case 0: return "Sunday"
11+
case 1: return "Monday"
12+
case 2: return "Tuesday"
13+
case 3: return "Wednesday"
14+
case 4: return "Thursday"
15+
case 5: return "Friday"
16+
case 6: return "Saturday"
17+
default: return "Invalid ordinal"
18+
}
19+
}
20+
21+
print("\(dow(year: 1886, month: 5, day: 1)): \(dowS(year: 1886, month: 5, day: 1))")
22+
print("\(dow(year: 1948, month: 12, day: 10)): \(dowS(year: 1948, month: 12, day: 10))")
23+
print("\(dow(year: 2001, month: 1, day: 15)): \(dowS(year: 2001, month: 1, day: 15))")
24+
print("\(dow(year: 2017, month: 10, day: 10)): \(dowS(year: 2017, month: 10, day: 10))")
25+
print("\(dow(year: 2018, month: 1, day: 1)): \(dowS(year: 2018, month: 1, day: 1))")
26+
print("\(dow(year: 2018, month: 2, day: 16)): \(dowS(year: 2018, month: 2, day: 16))")
27+
print("\(dow(year: 2018, month: 5, day: 17)): \(dowS(year: 2018, month: 5, day: 17))")

0 commit comments

Comments
 (0)