Enigmatic Code

Programming Enigma Puzzles

Enigma 1574: Doubly square dates

From New Scientist #2737, 5th December 2009 [link] [link]

4 April 2001 was the first doubly square date of the century because whether written in the order day.month.year or in the order month.day.year (in each instance with two digits for each element) it comes out as 04.04.01, and 40401 is 201².

Still with two digits for each element, there are some doubly square dates for which the square that comes from the order day.month.year is not the same as the square that comes from the order month.day.year. This is the case for each of the next two doubly square dates after 4 April 2001. What are those two dates (in the same form as 4 April 2001)?

[enigma1574]

One response to “Enigma 1574: Doubly square dates

  1. jimrandell 13 February 2012 at 9:04 am

    The following Python program runs in 50ms.

    from enigma import irange, is_square, sprintf, printf
    
    def solve():
      n = 0
      for year in irange(0, 99):
        for month in irange(1, 12):
          for day in irange(1, 31):
            # consider the d-m-y format
            dmy = int(sprintf("{day:02d}{month:02d}{year:02d}"))
            r1 = is_square(dmy)
            if not r1: continue
            # now conside the m-d-y format
            mdy = int(sprintf("{month:02d}{day:02d}{year:02d}"))
            r2 = is_square(mdy)
            if not r2: continue
            printf("[{day:02d}.{month:02d}.{year:02d}] {r1}^2 = {dmy}, {r2}^2 = {mdy}")
            n += 1
            if n == 3: return
    
    solve()
    

    Solution: The dates are 12 April 2009 and 4 December 2009.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.