26 lines
589 B
JavaScript
26 lines
589 B
JavaScript
(() => {
|
|
'use strict';
|
|
|
|
// isHappy :: Int -> Bool
|
|
function isHappy(n) {
|
|
let f = n => n.toString()
|
|
.split('')
|
|
.reduce((a, x) => a + Math.pow(parseInt(x, 10), 2), 0),
|
|
p = (s, n) => n === 1 ? true : (
|
|
s.has(n) ? false : p(s.add(n), f(n))
|
|
);
|
|
return p(new Set(), n);
|
|
}
|
|
|
|
// TEST
|
|
|
|
// range :: Int -> Int -> [Int]
|
|
let range = (m, n) => Array.from({
|
|
length: Math.floor(n - m) + 1
|
|
}, (_, i) => m + i);
|
|
|
|
return range(1, 50)
|
|
.filter(isHappy)
|
|
.slice(0, 8);
|
|
})()
|