Skip to main content
further thinking...
Source Link

How about a more efficient search strategy?

for x from 999 to 121:  // 121*121 is palindrome, don't go lower that that
  for y from 999 to x:  // only search upper triangle of this matrix
    z=x*y
    if z > maxPalindromeNumSoFar:  
      // only check palindrome-ism if z is bigger
      check z for palindrome-ism and replace if bigger

And add a bit of domain knowledge. 444,444 = 481*924, so further constrain the search range:

for x from 999 to 481:
  for y from 999 to max(x, 444444/x):

There's also a bit of number theory about palindromic numbers have factors of 11 or 101, not sure how best to integrate that info...

How about a more efficient search strategy?

for x from 999 to 121:  // 121*121 is palindrome, don't go lower that that
  for y from 999 to x:  // only search upper triangle of this matrix
    z=x*y
    if z > maxPalindromeNumSoFar:  
      // only check palindrome-ism if z is bigger
      check z for palindrome-ism and replace if bigger

How about a more efficient search strategy?

for x from 999 to 121:  // 121*121 is palindrome, don't go lower that that
  for y from 999 to x:  // only search upper triangle of this matrix
    z=x*y
    if z > maxPalindromeNumSoFar:  
      // only check palindrome-ism if z is bigger
      check z for palindrome-ism and replace if bigger

And add a bit of domain knowledge. 444,444 = 481*924, so further constrain the search range:

for x from 999 to 481:
  for y from 999 to max(x, 444444/x):

There's also a bit of number theory about palindromic numbers have factors of 11 or 101, not sure how best to integrate that info...

Source Link

How about a more efficient search strategy?

for x from 999 to 121:  // 121*121 is palindrome, don't go lower that that
  for y from 999 to x:  // only search upper triangle of this matrix
    z=x*y
    if z > maxPalindromeNumSoFar:  
      // only check palindrome-ism if z is bigger
      check z for palindrome-ism and replace if bigger