Skip to content

Instantly share code, notes, and snippets.

@manuerumx
Created October 9, 2025 21:45
Show Gist options
  • Select an option

  • Save manuerumx/9a784678067509d010aad319c992006a to your computer and use it in GitHub Desktop.

Select an option

Save manuerumx/9a784678067509d010aad319c992006a to your computer and use it in GitHub Desktop.
Kaprekar constant method
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