Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
35
Task/Perfect-numbers/JavaScript/perfect-numbers-6.js
Normal file
35
Task/Perfect-numbers/JavaScript/perfect-numbers-6.js
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
(function (nFrom, nTo) {
|
||||
|
||||
// MONADIC CHAIN (bind) IN LIEU OF FILTER
|
||||
// ( monadic return for lists is just lambda x -> [x] )
|
||||
|
||||
return chain(
|
||||
rng(nFrom, nTo),
|
||||
|
||||
function mPerfect(n) {
|
||||
return (chain(
|
||||
rng(1, Math.floor(Math.sqrt(n))),
|
||||
function (y) {
|
||||
return (n % y) === 0 && n > 1 ? [y, n / y] : [];
|
||||
}
|
||||
).reduce(function (a, x) {
|
||||
return a + x;
|
||||
}, 0) / 2 === n) ? [n] : [];
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
/******************************************************************/
|
||||
|
||||
// Monadic bind (chain) for lists
|
||||
function chain(xs, f) {
|
||||
return [].concat.apply([], xs.map(f));
|
||||
}
|
||||
|
||||
function rng(m, n) {
|
||||
return Array.apply(null, Array(n - m + 1)).map(function (x, i) {
|
||||
return m + i;
|
||||
});
|
||||
}
|
||||
|
||||
})(1, 10000);
|
||||
Loading…
Add table
Add a link
Reference in a new issue