Created
October 9, 2025 21:45
-
-
Save manuerumx/9a784678067509d010aad319c992006a to your computer and use it in GitHub Desktop.
Kaprekar constant method
This file contains hidden or 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
| function kaprekar(value: string, steps: number = 0) { | |
| if (steps > 100) { | |
| console.error('Too many steps'); | |
| return; | |
| } | |
| const kaprekarConstant = '6174'; | |
| if (value.length !== 4) { | |
| console.error('Invalid value'); | |
| return; | |
| } | |
| const individuals = value.split(''); | |
| if (areAllElementsSame(individuals)) { | |
| console.error('At least two digits must be different'); | |
| return; | |
| } | |
| const largest = individuals.sort((a, b) => parseInt(b) - parseInt(a)).map(Number).join(''); | |
| const lowest = individuals.sort((a, b) => parseInt(a) - parseInt(b)).map(Number).join(''); | |
| const newValue = parseInt(largest) - parseInt(lowest); | |
| console.debug(`Value recieved: ${value} and New value: ${newValue}`); | |
| if (newValue.toString() === kaprekarConstant) { | |
| console.info(`Found constant in ${steps} steps:`); | |
| return; | |
| } | |
| kaprekar(newValue.toString(), steps + 1); | |
| } | |
| function areAllElementsSame(arr: string[]): boolean { | |
| return arr.every(element => element === arr[0]); | |
| } | |
| kaprekar('9912'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment