var isHappy = (n, seen = new Set()) => {
const hasCycle = () => ((n === 1) || (seen.has(n)));
while (!hasCycle()) {
seen.add(n);
n = getNext(n);
}
return (n === 1);
};
var getNext = (n, sum = 0) => {
while (0 < n) {
const remainder = (n % 10);
n = Math.floor((n / 10));
sum += (remainder * remainder);
}
return sum;
}
var isHappy = (n) => {
const cycles = [ 4, 16, 37, 58, 89, 145, 42, 20 ];
const seen = new Set(cycles);
const hasCycle = () => ((n === 1) || (seen.has(n)));
while (!hasCycle()) {
n = getNext(n);
}
return n === 1;
}
var getNext = (n, sum = 0) => {
while (0 < n) {
const remainder = (n % 10);
n = Math.floor((n / 10));
sum += (remainder * remainder);
}
return sum;
}
var isHappy = (n) => {
const hasCycle = () => ((n === 1) || (n === 4));
while (!hasCycle()) {
n = getNext(n);
}
return n === 1;
}
var getNext = (n, sum = 0) => {
while (0 < n) {
const remainder = (n % 10);
n = Math.floor((n / 10));
sum += (remainder * remainder);
}
return sum;
}
var isHappy = (n) => {
let [ slow, fast ] = [ n, getNext(n) ];
const hasCyle = () => ((fast === 1) || (slow === fast));
while (!hasCyle()) {
slow = getNext(slow);
fast = getNext(getNext(fast));
}
return (fast === 1);
}
var getNext = (n, sum = 0) => {
while (0 < n) {
const remainder = (n % 10);
n = Math.floor((n / 10));
sum += (remainder * remainder);
}
return sum;
}