// Program to find palindromic numbers by the "reverse and add" method. // // This starts with a given number (e.g. "25"), // and adds the reverse of the digits (e.g. "52") // until a palindrome is found. In this case, it only takes one step. // // Some numbers take a long time to find a palindrome. I remember starting // with "89" and running the numbers by hand (they quickly became too big // to add in a standard 8-digit calculator, or even on a TRS-80) // in 5th grade. I gave up eventually. I think Tay Naish persevered and // got the right answer, which has 13 digits and takes 25 iterations. // // The number 196 is the smallest number that doesn't seem to lead to a // palindrome. It's been tested quite exhaustively by dedicated applications. // See: // http://home.cfl.rr.com/p196/ num = eval[input["Enter a number: "]] while (! isPalindrome[num]) { num = num + reverseDigits[num] println[num] } // Reverse the digits in a number and return them as a string. reverseDigits[num] := parseInt[reverse[toString[num]]] // Returns true if the given number is a palindrome, false otherwise. isPalindrome[num] := { str = "$num" // Coerce to string return reverse[str] == str }