Munchausen numbers: Difference between revisions

Content added Content deleted
(Added Lua version)
(→‎{{header|JavaScript}}: Or, composing reusable primitives)
Line 133: Line 133:


=={{header|JavaScript}}==
=={{header|JavaScript}}==

===ES6===

<lang javascript>for (let i of [...Array(5000).keys()]
<lang javascript>for (let i of [...Array(5000).keys()]
.filter(n => n == n.toString().split('')
.filter(n => n == n.toString().split('')
Line 140: Line 143:
<pre>1
<pre>1
3435</pre>
3435</pre>


Or, composing reusable primitives:

<lang JavaScript>(function () {
'use strict';

// isMunchausen :: Int -> Bool
let isMunchausen = n =>
!isNaN(n) && (
n.toString()
.split('')
.reduce(function (a, c) {
let d = parseInt(c, 10);
return a + Math.pow(d, d);
}, 0) === n
),

// range(intFrom, intTo, intStep?)
// Int -> Int -> Maybe Int -> [Int]
range = (m, n, step) => {
let d = (step || 1) * (n >= m ? 1 : -1);

return Array.from({
length: Math.floor((n - m) / d) + 1
}, (_, i) => m + (i * d));
};


return range(1, 5000)
.filter(isMunchausen);

})();</lang>


{{Out}}
<lang JavaScript>[1, 3435]</lang>


=={{header|Lua}}==
=={{header|Lua}}==