RosettaCodeData/Task/Munchausen-numbers/JavaScript/munchausen-numbers-2.js

33 lines
682 B
JavaScript

(() => {
'use strict';
const main = () =>
filter(isMunchausen, enumFromTo(1, 5000));
// isMunchausen :: Int -> Bool
const isMunchausen = n =>
n.toString()
.split('')
.reduce(
(a, c) => (
d => a + Math.pow(d, d)
)(parseInt(c, 10)),
0
) === n;
// GENERIC ---------------------------
// enumFromTo :: Int -> Int -> [Int]
const enumFromTo = (m, n) =>
Array.from({
length: 1 + n - m
}, (_, i) => m + i);
// filter :: (a -> Bool) -> [a] -> [a]
const filter = (f, xs) => xs.filter(f);
// MAIN ---
return main();
})();