Doomsday Calendar
Introduction
John Conway created the The Doomsday Calendar algorithm. It is a both a marvel of a mnemonic and a fun party trick. The premise is this: given a date (e.g. Jan 1st, 1970
) one can calculate the day of the week (e.g. Thursday
). Let's get to it.
I like this mental tool because it takes a defined but difficult-to-answer problem ("Can you tell me the day of the week, from 6 months ago, without looking at your calendar?") and answers it with "I have defined a two part system to convert this into a brain-dead, three step solution" (with some exceptions, but we'll get to those).
The two part system is this:
- knowing the Anchor Day (
AD
) of the year (a.k.a. "the doomsday"), which follows a pattern similar to Leap Years. - a mnemonic system to remember the constant pattern every year that the
AD
appears in.
The three steps are:
- calculate the
AD
for the year given to you - recall the placement of the
AD
in the month given to you - do middle-school-level math to find the day of the week
System Part 1: Anchor Days AD
Anchor Days follow a pattern of when a new year happens, we move forward one day of the week. In 2000, the AD
was Tuesday
. In 2001, the AD
was Wednesday
. 2002 is left as an exercise for the reader.
When we get to 2004, a leap year, we are injecting an additional day into Our ("humanity's") calendar. Why? Because nothing is perfect: Earth's orbit is not a perfect 365 days-- it is closer to 365.25. So every 4 years we correct our week day calendar system by appending a day to February.
How does the Doomsday Calendar algorithm solve this? Conway constructed his solution by adding a conditional clause to his mnemonic system. I'm going to say it: I think this is poor design and couples the two parts into one system. For me, dear reader, this makes the mnemonic system feel like two systems. So I'm going to tell you how I remember.
2003's AD
is Friday
. 2004, a leap year, has two AD
s, depending on if you are before/during Feb 28, or during/after Feb 29-- the AD
is Saturday
and then Sunday
.
To put it in the year-scope of this system: For every non-leap year, we move the AD
forward by 1 day of the week; for every leap year, we move the AD
forward by 2 days of the week.
System Part 2: Mnemonics Set
9-to-5 at 7/11
M-to-D for all even months except February
Pi day, Valentine's Day, and Jan 3rd
That's it!
I'll elaborate: each line is a way to know where the AD
appears in a certain month. Let's dive in
9-to-5 at 7/11
This is shorthand the months of September, March, July, and November, and their AD
s. There are two pairs of numbers: 9-to-5
and 7/11
. They are encoded: you get a two-for-one special at this 7/11 by reversing the numbers. Here comes the logic.
9-to-5
is for September and May (9 and 5). September's fifth day, and May's ninth day. 7/11
is for July and November (7 and 11). July's eleventh day, and November's seventh day.
To apply it to 2000, with an AD
of Tuesday
: May 9th is a Tuesday, July 11th is a Tuesday, September 7th is a Tuesday, and (you guessed it) November 7th is a Tuesday.
I think this phrase is easy to remember because it causes me to think of a person working a normal job span, 9-5, at a gas station convenience store. Therefore, I've learned how to use knowledge I knew already for a different purpose, so very little mental load.
M-to-D for all even months except February
This one is easy: every even month (except February), that number of the month is the number of the day that is the AD
. This is 4-4, 6-6, 8-8, 10-10, 12-12.
To apply it to 2000, with an AD
of Tuesday
: April 4th is a Tuesday, June 6th is a Tuesday, August 8th is a Tuesday, October 10th is a Tuesday, and December 12th is a Tuesday.
This phrase is easy to remember because of the even numbers. Except February.
Pi Day, Valentine's Day, Jan 3rd
So that just leaves January, February, and March. 2 of the 3 fall on days that are easy to remember: pi day (3.14 for Americans), and Valentines day (February 14th). The only new one here is January 3rd. There's no good mnemonic, you gotta use rote memory techniques for that.
Here comes the truth you all have been waiting for: 2000 is a leap year. By my system, as spoken of earlier, there are two AD
s: Monday
for all days up to and including February 28
and Tuesday
for all days including and following February 29
.
March 14th is after the leap day, so it is a Tuesday
. February 14th is before the leap day, so it is a Monday
, and January 3rd is a Monday
as well.
3 Steps: The Algorithm Applied
The three steps are:
- calculate the
AD
for the year given to you - recall the placement of the
AD
in the month given to you - do middle-school-level math to find the day
Let's pick 2017, May 1st.
1: Calculate the AD
Time is a construct and is relative, so we must start anchored to reality. 2000's AD
is Monday/Tuesday
.
Between 2000 and 2017, there are 17 years with 4 of them being leap years (2004, 2008, 2012, 2016).
17 with an extra 4. 17 + 4 = 21
, So we must advance 21 days in the week day cycle from Tuesday as our AD
.
(For you more Pure Maths people, pardon the words) The week is 7 days, so if we remove 7 from 21
, we have 14
days to increase by, but we are back to Tuesday as our AD
. We do this again to reduce 14
to 7
, and AD
is still Tuesday
. Once more, and we are done: the AD
is Tuesday for 2017.
If there are readers in the audience who know their modulo math (a different topic from this post), you knew this answer.
2: Recall the placement of the AD
in the month given to you
Remember our mnemonics.
9-5 at 7/11.
May is the 5th month, so 2017-05-09 is a Tuesday.
3: Do middle-school-level math to find the day
I say this level because I'm confident I remember myself, as a middle school student, being asked "hey, today is the 9th, what day of the week was the 1st?" or some variant.
If today is a Tuesday, and it is the 9th, that means the 2nd was a Tuesday. So May 1st, 2017 was a Monday.
Go. Rush to your calendar and check; my next trick: the lottery.
Estimates, Assumptions & Exceptions
I have defined this with an estimate, which lead us to an assumption, which causes exceptions with this tool. We are trying to map math onto the solar system.
The measure of time for Earth to complete an orbit does not fit 1:1 into the measure of time that passes in our day-night cycle. There are 365 days in a calendar year, but the Earth takes longer than that to complete its orbit. I estimated it to be 365.25 days to acknowledge the leap year in this post; my goal is to explain the Doomsday Calendar algorithm, not the history of Humankind's adventures with the calendar.
This estimate of 365.25 days is not true, it's actually an over correction. For brevity, here are the rules:
- if the year is divisible by 400, it is a leap year,
- if not, but the year is divisible by 100, it is not a leap year, and
- if not, but the year is divisible by 4, it is a leap year.
2000 is a leap year, 2100 is not a leap year. Everything defined in this post work exactly; we were looking in the time range of 2000-2017, which is myopic for this algorithm. You now have the tools to calculate the day of the week in 1332: good to know when the red-letter day falls.
Practice
This method is only good if it lives in your brain, so write down a couple dates and prove out the system. It's fun to crack out the dates, and it's very useful for when people are planning meeting 3 months ago and you can tell them "no, that's on a Saturday, let's do the day before." Also good for parties to tell people when their birthday falls.
© Michael Gardner IIRSS