Created
December 29, 2016 14:29
-
-
Save newmanbrad/7c23431775d8ea8c5e095a0bfbadbb02 to your computer and use it in GitHub Desktop.
Puzzle Question and answer.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*** | |
Number is a palindrome if it is equal to the number with digits in reversed order. For example, 5, 44, 171, 4884 are palindromes and 43, 194, 4773 are not palindromes. | |
Write a method palindrome_chain_length which takes a positive number and returns the number of special steps needed to obtain a palindrome. The special step is: "reverse the digits, and add to the original number". If the resulting number is not a palindrome, repeat the procedure with the sum until the resulting number is a palindrome. | |
If the input number is already a palindrome, the number of steps is 0. | |
Input will always be a positive integer. | |
For example, start with 87: | |
87 + 78 = 165; 165 + 561 = 726; 726 + 627 = 1353; 1353 + 3531 = 4884 | |
4884 is a palindrome and we needed 4 steps to obtain it, so palindrome_chain_length(87) == 4 | |
***/ | |
var palindromeChainLength = function(n, count = 0) { | |
let combinedNumber = n + parseInt(n.toString().split('').reverse().join('')); | |
let isPalindrome = (combinedNumber == parseInt(combinedNumber.toString().split('').reverse().join(''))); | |
if(!isPalindrome && n.toString().split('').length > 1){ | |
palindromeChainLength(combinedNumber, ++count); | |
} else { | |
return count; | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment