Day of the week of Christmas and New Year: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
Jazzedpineda (talk | contribs) (Added EasyLang implementation) |
||
Line 402: | Line 402: | ||
<pre>12/25/2021 is a Saturday |
<pre>12/25/2021 is a Saturday |
||
1/1/2022 is a Saturday</pre> |
1/1/2022 is a Saturday</pre> |
||
=={{header|EasyLang}}== |
|||
<syntaxhighlight lang="easylang"> |
|||
func dayOfTheWeek year month day . result . |
|||
# Based on Conway's doomsday algorithm |
|||
# 1. Calculate the doomsday for the century |
|||
century = floor (year / 100) |
|||
if century mod 4 = 0 |
|||
centuryDoomsday = 2 |
|||
elif century mod 4 = 1 |
|||
centuryDoomsday = 0 |
|||
elif century mod 4 = 2 |
|||
centuryDoomsday = 5 |
|||
elif century mod 4 = 3 |
|||
centuryDoomsday = 3 |
|||
. |
|||
# 2. Find the doomsday of the year |
|||
mainYear = year mod 100 |
|||
yearDoomsday = (floor (mainYear / 12) + mainYear mod 12 + floor (mainYear mod 12 / 4) + centuryDoomsday) mod 7 |
|||
# 3. Check if the year is leap |
|||
if mainYear = 0 |
|||
if century mod 4 = 0 |
|||
leap = 1 |
|||
else |
|||
leap = 0 |
|||
. |
|||
else |
|||
if mainYear mod 4 = 0 |
|||
leap = 1 |
|||
else |
|||
leap = 0 |
|||
. |
|||
. |
|||
# 4. Calculate the DOTW of January 1 |
|||
if leap = 1 |
|||
januaryOne = (yearDoomsday + 4) mod 7 |
|||
else |
|||
januaryOne = (yearDoomsday + 5) mod 7 |
|||
. |
|||
# 5. Determine the nth day of the year |
|||
if month = 1 |
|||
NthDay = 0 |
|||
elif month = 2 |
|||
NthDay = 31 |
|||
elif month = 3 |
|||
NthDay = 59 + leap |
|||
elif month = 4 |
|||
NthDay = 90 + leap |
|||
elif month = 5 |
|||
NthDay = 120 + leap |
|||
elif month = 6 |
|||
NthDay = 151 + leap |
|||
elif month = 7 |
|||
NthDay = 181 + leap |
|||
elif month = 8 |
|||
NthDay = 212 + leap |
|||
elif month = 9 |
|||
NthDay = 243 + leap |
|||
elif month = 10 |
|||
NthDay = 273 + leap |
|||
elif month = 11 |
|||
NthDay = 304 + leap |
|||
elif month = 12 |
|||
NthDay = 334 + leap |
|||
. |
|||
NthDay += day |
|||
# 6. Finally, calculate the day of the week |
|||
result = (januaryOne + NthDay - 1) mod 7 |
|||
. |
|||
func numberToDay n . day$ . |
|||
if n = 0 |
|||
day$ = "Sunday" |
|||
elif n = 1 |
|||
day$ = "Monday" |
|||
elif n = 2 |
|||
day$ = "Tuesday" |
|||
elif n = 3 |
|||
day$ = "Wednesday" |
|||
elif n = 4 |
|||
day$ = "Thursday" |
|||
elif n = 5 |
|||
day$ = "Friday" |
|||
elif n = 6 |
|||
day$ = "Saturday" |
|||
. |
|||
. |
|||
call dayOfTheWeek 2021 12 25 result |
|||
call numberToDay result day$ |
|||
print "2021-12-25 is on " & day$ |
|||
call dayOfTheWeek 2022 1 1 result |
|||
call numberToDay result day$ |
|||
print "2022-1-1 is on " & day$ |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
2021-12-25 is on Saturday |
|||
2022-1-1 is on Saturday |
|||
</pre> |
|||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |