Merry Xmas!

25 Dec 2010

To everyone who participated in the Christmas Conundrum, I hope you enjoyed this little dose of holiday fun. :-)

Congrats to everyone who solved it. If you're curious, here are the first seven people who solved it, in order:

  1. Christer Edvartsen
  2. Terry Matula
  3. Derick Rethans
  4. Andrei Zmievski
  5. Patrick Springstubbe
  6. Helmut Hummel
  7. Krzysztof Kotowicz

If you want the solution, keep reading.

I created the puzzle before going to bed Tuesday night. I had a lot of ideas, but I kept coming back to the idea of beginning with an animated digital clock, just like I used for a puzzle I made years ago. For that puzzle, the order of the sequence was irrelevant, so I made the clock advance pretty normally. This time, I decided I would make the sequence matter, which would make the clock seem much more sporadic. I also wanted to tailor the puzzle to an audience primarily made up of developers. Binary it is. :-)

Next, I plotted MERRY XMAS! in a text file:

  1. X X XXXXX XXXX XXXX X X
  2. XX XX X X X X X X X
  3. X X X XXXX XXXX XXXX X
  4. X X X X X X X X
  5. X X XXXXX X X X X X
  6.  
  7. X X X X X XXX X
  8.  X X XX XX X X X X
  9.   X X X X XXXXX XXX X
  10.  X X X X X X X
  11. X X X X X X XXX X

Knowing that I wanted to use binary and wanted to use a digital clock, I knew the numbers couldn't be too big. I like creative puzzles, but I also wanted to get to bed, so I simply assigned the values vertically, like this:

  1. 1024 X X XXXXX XXXX XXXX X X
  2. 512 XX XX X X X X X X X
  3. 256 X X X XXXX XXXX XXXX X
  4. 128 X X X X X X X X
  5. 64 X X XXXXX X X X X X
  6. 32
  7. 16 X X X X X XXX X
  8. 8 X X XX XX X X X X
  9. 4 X X X X XXXXX XXX X
  10. 2 X X X X X X X
  11. 1 X X X X X X XXX X

I was still doing this by hand. (I made the old puzzle with PHP.) At this point, I regretted that decision a bit, but I powered through and quickly added up each column, from right to left:

  1. 1024
  2. 512
  3. 256 + 128 + 64 + 16 + 8 + 4 + 1 = 477
  4. 512
  5. 1024
  6.  
  7.  
  8. 512 + 64 + 2 = 578
  9. 1024 + 256 + 128 + 16 + 4 + 1 = 1429
  10. 1024 + 256 + 16 + 4 + 1 = 1301
  11. 1024 + 256 + 16 + 4 + 1 = 1301
  12. 1024 + 512 + 256 + 128 + 64 + 8 = 1992
  13.  
  14.  
  15. 512 + 64 + 4 + 2 + 1 = 583
  16. 1024 + 256 + 128 + 8 + 4 = 1420
  17. 1024 + 256 + 16 + 4 = 1300
  18. 1024 + 256 + 8 + 4 = 1292
  19. 1024 + 512 + 256 + 128 + 64 + 4 + 2 + 1 = 1991
  20.  
  21.  
  22. 1024 + 64 + 16 + 8 + 4 + 2 + 1 = 1119
  23. 1024 + 256 + 64 + 8 = 1352
  24. 1024 + 256 + 64 + 4 = 1348
  25. 1024 + 256 + 64 + 8 = 1352
  26. 1024 + 512 + 256 + 128 + 64 + 16 + 8 + 4 + 2 + 1 = 2015
  27.  
  28.  
  29. 1024 + 512 + 256 + 128 + 64 + 16 + 1 = 2001
  30. 512 + 8 + 2 = 522
  31. 256 + 4 = 260
  32. 512 + 8 + 2 = 522
  33. 1024 + 512 + 256 + 128 + 64 + 16 + 1 = 2001

This gave me numbers small enough to work (no larger than four digits). If I had been lucky enough that each number could also represent a valid time, I was going to add one more bit of cleverness and use an analog clock with different colors to denote ante meridiem and post meridiem. But, since I wasn't so lucky, I went with the original idea of a digital clock and made this:

I was pretty happy that the first two numbers made for a nice hint, and the hint I posted was really just an attempt to make it clear that these were binary numbers:

Solving the puzzle required that you imagine each blink of the lights representing a horizontal slice of a larger image:

Thanks again to everyone who participated. I had fun, and I hope you did, too. :-)

Merry Christmas!