Munchausen numbers: Difference between revisions
Content added Content deleted
(Add Swift) |
(→JS ES6) |
||
Line 896: | Line 896: | ||
Or, composing reusable primitives: |
Or, composing reusable primitives: |
||
<lang JavaScript>( |
<lang JavaScript>(() => { |
||
'use strict'; |
'use strict'; |
||
const main = () => |
|||
filter(isMunchausen, enumFromTo(1, 5000)); |
|||
// isMunchausen :: Int -> Bool |
// isMunchausen :: Int -> Bool |
||
const isMunchausen = n => |
|||
!isNaN(n) && ( |
|||
n.toString() |
|||
.split('') |
|||
.reduce((a, c) => { |
|||
let d = parseInt(c, 10); |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
// range(intFrom, intTo, intStep?) |
|||
}, 0) === n |
|||
); |
|||
let d = (step || 1) * (n >= m ? 1 : -1); |
|||
// GENERIC --------------------------- |
|||
⚫ | |||
length: Math.floor((n - m) / d) + 1 |
|||
}, (_, i) => m + (i * d)); |
|||
}; |
|||
// enumFromTo :: Int -> Int -> [Int] |
|||
const enumFromTo = (m, n) => |
|||
⚫ | |||
⚫ | |||
⚫ | |||
// filter :: (a -> Bool) -> [a] -> [a] |
|||
⚫ | |||
.filter( |
const filter = (f, xs) => xs.filter(f); |
||
⚫ | |||
// MAIN --- |
|||
⚫ | |||
⚫ | |||
{{Out}} |
{{Out}} |
||
<lang JavaScript>[1, 3435]</lang> |
<lang JavaScript>[1, 3435]</lang> |