(Close Window)
Topic: Please help
Message: Posted by: nums (Apr 4, 2005 09:13PM)
I am looking for a source for the method ( if not the method itself) to be able to decipher the day of the week any particular date falls on.....thank you in advance..

Jeff
Message: Posted by: landmark (Apr 4, 2005 09:35PM)
http://members.aol.com/beagenius/main.html


Jack Shalom
Message: Posted by: Scott Cram (Apr 4, 2005 11:45PM)
Thanks for the reference, Jack, but the site has moved. Here's a direct link to the calendar portion of my "Be A Genius*" site:

http://members.cox.net/beagenius/calendar.html

Also, here's a more detailed article I wrote, including some different directions to take the feat in section 4:

http://www.ludism.org/mentat/CalendarFeat
Message: Posted by: TomasB (Apr 5, 2005 01:48AM)
A long time ago I came up with a formula for this, and I hope that the clever Scott Cram can see if it's a total reinvention.

---------------------------------------------------------
You need a list of numbers to associate with each month. Easiest is to think of them in groups of three:

M=6-2-2, 5-0-3, 5-1-4, 6-2-4

(You see that from the second group to the third the last two digits are increased by one, and from the third group to the last, the first two digits are increased by one. This will make the list easier to remember.)

Special cases are leap years in which you diminish the numbers for Jan and Feb by 1. (Leapyear is a year dividable by 4, but not dividable by 100. A leapyear is also all years dividable by 400. So...1900 is not a leapyear but 2000 is.)

Think of the year as Yy, where y is the last two digits and Y is what's before them. (1999 would give Y=19 and y=99.)

Now to the formula:

Weekday=(5*Y+y+floor(Y/4)+floor(y/4)+M+D)Mod7

"floor" means that you throw away any decimals in the answer to get an integer. Easiest way to do that division by 4 in your head is to divide twice by 2, and before each division you make sure you have an even number. (99/4...first make 99 even by going one lower then divide by 2. 98/2=49. Again make the number even and divide by 2. 48/2=24. You'll automatically get all but the decimal part of 99/4 by going one lower before each division if the number is odd.)

D is the day of the month.

Weekday=0 means Sunday, Weekday=1 means Monday, etc.


Now to some rules regarding modulo algebra that makes it all so so so much easier. (A+B)mod7=(Amod7+Bmod7)mod7. This simply means that we can subtract 7 as soon as the count in our head goes above 7. Another more unintuitive rule says that (A*B)mod7=(Amod7*Bmod7)mod7. That means that in the step 5*Y you can think 5mod7*Ymod7. That means that you can see the 5 as either 5 or -2. Ymod7 you can calculate by itself before multiplying it with 5 (or -2).
-------------------------------------------------------

An example:

1999 Sept 9

Y=19 y=99 M=4 D=9

I run through the formula from left to right and write my thoughts:

5*Y+y+floor(Y/4)+floor(y/4)+M+D=5*19+99+floor(19/4)+floor(99/4)+4+9

5*19: 19mod7=19-14=5...5*5=25...drop sevens to 4.

99: First drop 70 to get easier numbers. 29...drops to 1. Together with the four in the previous step we have 5.

floor(19/4): Even up before division. 18/2=9. Even up. 8/2=4. Together with the 5 from the previous step we have 9 which we drop to 2.

floor(99/4): Even up. 98/2=49. Even up. 48/2=24. Drop to 3. Add the 2 from the previous step to get 5.

(All we've done so far is to get a number for a specific year. If we know in advance that we are only going to work with a specific year the calculations just performed can be done way in advance. So...1999 has the number 5 and you can simply remember that and skip all calculations above.)

M: 4. Add the 5 and we get 9. Drop to 2.

D: 9. Drop to 2 then add the 2 from the previous step to get 4. Weekday=4 (Thursday)

That's it!

The original formula I came up with was way more advanced and harder to do in the head. It worked with the complete year as a number. Big numbers hard to work in your head with. By splitting it up into Y and y I got some very nice effects that cleared it all up a lot. I doubt the formula can be made easier and still be general.

You can test the formula against http://www.chemie.fu-berlin.de/cgi-bin/jdate

Another idea is to only work with years beginning with 19 or 20. The specific number for all years beginning with 19 is 1 and for all years beginning with 20 it's a simle 0. The formulas for the two centuries get to be (y is still the last two digits in the year):

Year 19y:

Weekday=(1+y+floor(y/4)+M+D)mod7

Year 20y:

Weekday=(y+floor(y/4)+M+D)mod7


I should also mention that out calendar repeats itself every 400 years. You can save a lot of time by remembering that years beginning with 20 has number 0, 21 has 5, 22 has 3, 23 has 1. That together with your knowledge that the calendar repeats itself ever 400 years, makes it easy for you to cover loads of centuries in your head. Years beginning with 17 for example are 4 away from 21...and I know 21 have the number 5. Saves loads of time.

Note: Doing the floor(?/4) first of all is probably the best before you get your mind cluttered up with digits to remember.
Message: Posted by: Scott Cram (Apr 5, 2005 08:58AM)
As you can see by any of the above methods, the year is the part that slows most people down. If you're already familiar with mnemonics, the best way to improve the speed of the calculation is simply to memorize the key numbers for the years 1900-1999.

This sound like a lot of work, but if you take it in chunks, it's not that hard. Practice memorizing the keys for 1900-1909 the first week, then 1900-1919 the second week, and so on. By the 10th week, you'll know 1900-1999, and all at an easy pace.

I haven't seen Tomas' approach before. As a matter of fact, it's the first formula I've seen that take the century into account automatically. Most approaches only take the last two digits of the year into account, and then you add 0 (1900), 2 (1800), 4 (1700) or 6 (2000) later to adjust for the century.

Another interesting thing about Tomas' approach is that it requires the key numbers for the months to be exactly 1 less than the standard keys for the months.

Sam Schwarz had a great practical approach to performing this for an audience. He would simply hand out calendars of recent years (no leap years!), all of which had different key numbers. The first person would get a calendar that had a key of 1, the second got one that had a key of 2, all the way up to the 7th person, whose year had a key of 0 (7 mod 7).

Sam would ask a member of the audience to name a day of the week, and then asked the people who had the calendars to see if they had a year on which January 1st fell on that day of the week. One person would raise their hand and be asked to stand up. This silently told the audience that all the calendars were indeed different. It also let Sam silently know the year key - if it was the third person standing up, he already had the key number for the year (3). After that, a date in that year was asked for from the audience, and Sam could give the answer faster than the person could find it in the calendar!
Message: Posted by: landmark (Apr 5, 2005 07:29PM)
Whoa, clever Sam! Nice, usable, presentation. Thanks Scott.


Jack Shalom
Message: Posted by: Scott Cram (Sep 11, 2005 06:40PM)
Has anyone else ever tried doing the calendar feat backwards?

You hand a person a perpetual calendar, and have them look up the day of the week on which they were born. They tell you this, then they tell you their birthday, without the year. You look at them for a minute or so, and then announce their exact age!
Message: Posted by: TomasB (Sep 12, 2005 07:52AM)
Scott, that is a cool idea. Am I correct in that you have to guess the age within 5 years in some cases?

/Tomas
Message: Posted by: Scott Cram (Sep 12, 2005 09:32PM)
Yes, you do have to guess their age. Here are a couple of tips for this feat:

1. Practice guess people's ages at [url=http://www.ageguess.com/guess.asp]AgeGuess.com[/url] and [url=http://ageproject.specialsnowflake.com/]Age Project[/url]. With a little practice on these sites, you'll soon be able to regularly guess within 3 years on average.

2. When you translate the day into its key number (Monday=1, Tuesday=2, etc.), add 42 to it. This will make it easier to subtract from.

3. Don't forget to adjust for leap years (by adding 1 when you can't find a close year with the appropriate key number) when working backwards!

4. To give yourself time for the calculations, pretend to look them over, as if you need further clues for their age.


Another angle for the classic version of the calendar feat that gives it a real "Rain Main" feel, is to announce all the other months in which the given date falls on the same day of the week.

For example, Let's say someone gives you Sept. 15 in a particular year, and you determine that it fell on a Tuesday. Once they verify that you have given the correct day, you can conclude by saying, "Keep looking at the same year. Please note that the 15th also fell on a Tuesday in December, but only September and December have a Tuesday the 15th in that same year."

This [i]really[/i] gives the impression that you've memorized and mastered the whole year, but it's not difficult at all.

Simply refer to the key number for the month. In this case, September's key is "5" (your system may vary). Obviously, any other month with a key number of 5 would also give the same day of the week as the answer. In our example, the only other month with a key number of 5 is December, so December is the only other month in that same year which would have a Tuesday the 15th in it.

There will never be any more than three months in the same year with the same key number. As long as you can mentally run through the key numbers for each month (and take the leap year into account, if the date is in January or February), and pick out the ones that are the same, you can do this feat.

Here are the months that share each key number (and thus have the same calendar):

0) January (non-leap year) and October

1) May (If May 12th in a given year is on, say, a Tuesday, you can say definitively that there are no other months with Tuesday the 12th in that year)

2) February (leap year) and August

3) February (non-leap year), March and November.

4) June (Similar to May)

5) September and December

6) January (leap year), April and July


Oh, and don't forget to take into account that some months are longer than others. December 30th and September 30th may fall on the same day of the week, but December 31st is a different story. ;)
Message: Posted by: Parson Smith (Oct 18, 2005 11:46PM)
Am I mistaken, or is this in 13 Steps?
Peace,
Parson