8-Bit Software Online Conversion

              by Steven Flintham (15A) Introduction It's possible some of you used to watch "Jim'll Fix It" back in the mid-80s; if you didn't, this introduction won't be much use, but try to stay with me. ;-) One of the few things I can remember from it was a fairly old (at least by the standards of the usual 'guests') man who wanted to take part in a fake 'Mastermind' game working out the day of the week. He was given dates like '09/03/1982' and he'd say 'Tuesday' almost immediately - and he was always right, if I remember correctly. They had a little computer display in the corner of the screen (which, for what it's worth, looked very much like it was part of a BBC mode 7 screen), showing the correct answers for our benefit. I was quite impressed by this at the time, and thought he must have some sort of gift. (Albeit a not incredibly useful one. ;-) ) Maybe he did, and I suspect he must have had at least a reasonable ability at mental arithmetic and/or a good memory. But it turns out that there's an easy way of doing it, whether or not he was doing it like that himself, and I was really impressed with it when I found out about it. (There are probably several other roughly similar methods.) "What's this got to do with the BBC?", you ask. Well, this article explains how to do it, and there's an accompanying program to do worked examples for you if you need them, and to help you test yourself. References I found out about this method from the sci.astro FAQ, revision 2.10, part 3. I've sent a copy of it to CJR along with this article so you can read it for yourself if you wish. The FAQ says that the method was originally from volume two of a book written by John Horton Conway with Guy and Berlekamp called 'Winning Ways'. The basic idea You might find it helpful to have a calendar and/or diary to hand while following this, although it's by no means necessary. The first thing to note is that, although the question 'What day of the week was June 7th 1996?' is hard to answer (unless you know a method to do it), the question 'What day of the week was June 7th, given that June 19th was a Wednesday?' is much easier. All you have to do is count through the days - the 19th was a Wednesday, so the 18th was a Tuesday, and so on. Admittedly this is slow, but you can do a sort of 'date arithmetic' for dates within the same month; you'll probably be able to work something out for yourself, but if you can't or don't want to, I'll outline some ways of doing it later. So, in order to answer questions like 'What day of the week was June 7th 1996?', what you really need is a way of finding out what day of the week some day in June 1996 was. The key idea is that, in any non-leap year, the following dates all fall on the same day of the week (called the 'Doomsday'): January 3rd, February 0th, March 0th, April 4th, May 9th, June 6th, July 11th, August 8th, September 5th, October 10th, November 7th and December 12th. Yes, I know there's no such date as 'February 0th' - but it's a convenient shorthand for 'the last day of the January'. Why not just say 'January 31st'? Well, without this there isn't a day in February and March which you know falls on a particular day of the week, which would be a bit awkward. Perhaps more importantly, it helps to simplify handling leap years, because the last day of February is always March 0th, whereas it can be either February 28th or February 29th in conventional terms. You need to remember those dates, but it's not as hard as it looks. You do have to remember January 3rd, February 0th and March 0th separately, but look at the rest of the list written out in numerical form as day/month: 4/4, 9/5, 6/6, 11/7, 8/8, 5/9, 10/10, 7/11 and 12/12. All the even-numbered months are simple, which just leaves 9/5, 5/9, 11/7 and 7/11. They come in pairs, so you really only need to remember 9/5 and 7/11. And there's a simple mnemonic for remembering these: "I went to my 9-to-5 job at the 7-11." (According to the sci.astro FAQ, '"Seven-Eleven" is the name of a ubiquitous chain of convenience stores.') How do you know what the Doomsday is for the year you're interested in? There's a way of working it out, which I'll describe below, but if you only want to do the calculation for one or two years (such as the current year), it's probably easiest to look it up on a calendar and just memorise it. (This is what I do at the moment.) To save you looking it up for yourself, the Doomsday for 1998 is Saturday. The final complication, if you already know the Doomsday for the year, is that in leap years the January 3rd and February 0th don't fall on the Doomsday; you need to use January 4th and February 1st instead. Date arithmetic So, now you have one date in every month which you know falls on the Doomsday, and you know what the Doomsday is. Suppose you want to know what day of the week June 20th 1998 is. You know, from the above, that June 6th 1998 is a Saturday. 20-6=14=2*7, and since the days of the week repeat on a seven day cycle, June 20th is also a Saturday. What about December 23rd 1998? You know that December 12th 1998 is a Saturday. 23-12=11=7+4. You can ignore the 7, because that takes you from a Saturday back to a Saturday, so the 23rd is the day of the week four days after a Saturday. Which day of the week this is might be obvious to you, but I prefer to number the days (Sunday = 0, Monday = 1, ...) and say Saturday + 4 is 6+4=10=7+3, and discarding the 7 gives 3, which is Wednesday. (In case it's not obvious, you can start the numbering on any day you want, so if Wednesday = 0 seems more natural to you then go ahead. You can also number starting from 1 if you want.) By 'ignoring 7s', what you're really doing (of course) is taking the remainder on dividing by 7. So, in the previous example, you can also think of it as 23-12=11 and 11 remainder 7 is 4, then carry on as before. Both of those examples 'coincidentally' had the date in question after the 'special' day. What about September 3rd 1998? You know September 5th is a Saturday. Because the special day is always near the start of the month, you can just count the days backwards from the special day if you wish. Alternatively, because of the seven day cycle, September 10th falls on the same day of the week as September 3rd, so you can just work with September 10th. 10-5=5, so September 10th (and hence September 3rd) falls on Saturday + 5, i.e. a Thursday. Finally, an example using a special day which is a '0th', just to show it makes no difference. What day of the week is March 9th 1998? March 0th is a Saturday, from above. 9-0=9=7+2, so March 9th is Saturday + 2 = Monday. This might look a bit complicated, but it isn't really. The clever bit is the way you have a special day in each month which falls on a known day of the week (the Doomsday). Using that to work out what day of the week another day in the same month falls on isn't difficult, but if you want to do it quickly in your head you'll probably need to spend a little bit of time working out your own system for doing it. The above is roughly how I do it myself, so it suits me quite well, but other people might prefer different methods. Arithmetic modulo 7 For anyone who's interested, I'll describe briefly exactly how I do the calculation. I use arithmetic modulo 7 - that is, arithmetic where you only 'really' have the numbers 0-6. All the other numbers are just alternative names for one of these numbers - in fact, the number which they differ from by a multiple of 7. So 20 is another name for (the technical phrase is 'congruent to') 6, because 20-2*7=6, and 983 is another name for 3, because 983-140*7=3. Negative numbers are allowed as well; -19 is another name for 2 because -19+3*7=2. Because of this, it's correct (more-or-less) to write things like 20=6, 983=3 and -19=2. In effect, you can add or subtract 7, or any multiple of it, at any point. That's just the background, but working modulo 7 the calculations become even simpler. What day of the week is December 23rd 1998? December 12th 1998 is a Saturday (day 6). So the 23rd is 23-12+6=11+6=17=3, i.e. a Wednesday. The nice thing (as far as I'm concerned) is that there's no longer anything at all special about days which fall before the special day. What day of the week is December 3rd 1998? December 12th is a Saturday (day 6). So the 3rd is 3-12+6=-3=4, i.e. a Thursday. In date calculations like these, working modulo 7 is really just a version of the 'use September 10th instead of September 3rd, because they're the same day' trick mentioned above. I just find it a nice easy way to think about it, because the 'adding 7s' is done in the arithmetic rather than as an extra 'ah, September 3rd is before the special day, so I need to add 7'-type step beforehand. I just say to myself '3-5+6' and then it's all simply arithmetic modulo 7. Working out the Doomsday If you've got real ambition, or if you want to work with a year for which it's not convenient to check on a calendar, the last thing to master is working out the Doomsday for a given year. I can't do this in my head yet, but sooner or later I intend to try and master it. For any 19xx year, work out xx/12, giving a quotient Q and remainder R. Then divide R by 4, giving a quotient Q2. (You don't need the remainder for this second division). The Doomsday is then Wednesday + Q + R + Q2. So, for 1998: 98/12=8 remainder 2, i.e. Q=8, R=2. R divided by 4 is 0 remainder 2, so Q2=0. Wednesday + Q + R + Q2 = Wednesday + 8 + 2 = Wednesday + 10 = Saturday, as I said above. The last complication is that Wednesday has be replaced by Tuesday for 16xx and 20xx years, Sunday for 17xx and 21xx years and Friday for 18xx and 22xx years. Wednesday works for 15xx and 23xx years. The cycle repeats over a four century period, so (for example) use Tuesday for 24xx dates. The program The program is fairly simple and should be easy to use. It will work through the calculations for any date in the years 1900-2099 inclusive, and also give you a ten question test on years of your choice within this range. Any comments on either the program or this article are welcome.