Skip to content

Instantly share code, notes, and snippets.

@cemdrk
Created February 4, 2026 18:07
Show Gist options
  • Select an option

  • Save cemdrk/b4f69209c0d06d7bb5036616476d97f6 to your computer and use it in GitHub Desktop.

Select an option

Save cemdrk/b4f69209c0d06d7bb5036616476d97f6 to your computer and use it in GitHub Desktop.
const maxNum = num => +[...`${num}`].sort((a, b) => b - a).join('');
const minNum = num => +[...`${num}`].sort((a, b) => a - b).join('');
const reachedNums = new Set([]);
const seen = {};
const findKaprekar = (i, _min, _max, prev, step) => {
let diff = _max-_min;
while (diff) {
if (step > 1000) {
seen[diff] = [-i];
break;
}
if (diff in seen) {
break;
}
if (prev===diff) {
seen[diff] = [i]
reachedNums.add(prev);
break;
}
prev = diff;
diff = maxNum(diff)- minNum(diff);
step++;
}
}
for (let i = 100; i< 100_000; i++) {
findKaprekar(i, minNum(i), maxNum(i), null, 1);
}
console.log(seen);
console.log(reachedNums);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment