Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
22
Task/Doomsday-rule/Nim/doomsday-rule.nim
Normal file
22
Task/Doomsday-rule/Nim/doomsday-rule.nim
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import strformat, times
|
||||
|
||||
const
|
||||
NormDoom = [1: 3, 7, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5]
|
||||
LeapDoom = [1: 4, 1, 7, 2, 4, 6, 4, 1, 5, 3, 7, 5]
|
||||
|
||||
proc weekday(year, month, day: int): WeekDay =
|
||||
let doom = (2 + 5 * (year mod 4) + 4 * (year mod 100) + 6 * (year mod 400)) mod 7
|
||||
let anchor = if year.isLeapYear: LeapDoom[month] else: NormDoom[month]
|
||||
let wd = (doom + day - anchor + 7) mod 7
|
||||
result = if wd == 0: dSun else: WeekDay(wd - 1)
|
||||
|
||||
const Dates = ["1800-01-06", "1875-03-29", "1915-12-07",
|
||||
"1970-12-23", "2043-05-14", "2077-02-12", "2101-04-02"]
|
||||
|
||||
for date in Dates:
|
||||
let dt = date.parse("yyyy-MM-dd")
|
||||
let wday = weekday(dt.year, ord(dt.month), dt.monthday)
|
||||
if wday != dt.weekday:
|
||||
echo &"For {date}, expected {dt.weekday}, found {wday}."
|
||||
else:
|
||||
echo date, " → ", wday
|
||||
Loading…
Add table
Add a link
Reference in a new issue