JSFiddle - React, Tailwind, and code Playground
by Prashanth bhat
HTML
debug(a)
return a[0].abs if a.size > 0 && a.uniq.size == 1
# fix for [-1, -2, -3, ...]
b = a.sort_by(&:abs)
return b[0].abs if b[-1].abs == b.size
if a.size != 2
a.sort!
cur_sum = 0
min_sum = fix_num_max = 2 ** (0.size * 8 - 2) - 1 #ruby FIXNUM_MAX
a.each do |i|
cur_sum += i
min_sum = [min_sum, cur_sum].min.abs
cur_sum = [cur_sum.abs, fix_num_max].min
end
else
min_sum = a.inject{|sum, x| sum + x}.abs
end
[a[0].abs, a[-1].abs, min_sum].min
JavaScript
var input = [2,-4,6,-3,9];
var output = sol(input);
function sol(inArray){
if(inArray.size == 1){
return inArray[0];
}
inArray.sort(inArray);
console.log(inArray);
}
input.sort(function(array) {
var avg = array.reduce(function(previousValue, currentValue) {
return previousValue + currentValue;
}, 0);
avg /= array.length;
return function(x, y) {
return Math.abs(x - avg) - Math.abs(y - avg);
};
}(input));
/*a.filter( onlyUnique
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}*/