You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1001 B
37 lines
1001 B
// Thanks for hints: https://github.com/paulmillr/es6-shim |
|
|
|
"use strict"; |
|
|
|
var some = Array.prototype.some |
|
, abs = Math.abs |
|
, sqrt = Math.sqrt |
|
, compare = function (val1, val2) { return val2 - val1; } |
|
, divide = function (value) { return value / this; } |
|
, add = function (sum, number) { return sum + number * number; }; |
|
|
|
// eslint-disable-next-line no-unused-vars |
|
module.exports = function (val1, val2 /*, …valn*/) { |
|
var result, numbers; |
|
if (!arguments.length) return 0; |
|
some.call(arguments, function (val) { |
|
if (isNaN(val)) { |
|
result = NaN; |
|
return false; |
|
} |
|
if (!isFinite(val)) { |
|
result = Infinity; |
|
return true; |
|
} |
|
if (result !== undefined) return false; |
|
val = Number(val); |
|
if (val === 0) return false; |
|
if (numbers) numbers.push(abs(val)); |
|
else numbers = [abs(val)]; |
|
return false; |
|
}); |
|
if (result !== undefined) return result; |
|
if (!numbers) return 0; |
|
|
|
numbers.sort(compare); |
|
return numbers[0] * sqrt(numbers.map(divide, numbers[0]).reduce(add, 0)); |
|
};
|
|
|