JSFiddle - React, Tailwind, and code Playground
by ivanovsuper
HTML
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<input id="in" size="50" value="1,1,2,3,4,7,10,20,30,40,50,60,120,127"/><br/>
<input id="out1" size="50"/> <input id="outs1" size="20"/> <br/>
<input id="out2" size="50"/> <input id="outs2" size="20"/> <br/>
<textarea id="log" rows="30" cols="50"></textarea>
JavaScript
var a = $("#in").val().split(','); //[1,2,3,4,10,20,30,40];
a = $.map(a, function(aa) {
return parseInt(aa);
});
a.sort(function(a, b) {
return a - b;
});
$("#in").val(JSON.stringify(a));
var n = a.length - 1,
s1 = 0,
s2 = 0,
a1 = [],
a2 = [],
va1, va2, j;
for (var k = n; k >= 1; k -= 2) {
if (s1 <= s2) {
j = 0;
while (s1 + a[k] > s2 + a[j] && j < k - 1) j++;
$("#log").val($("#log").val() + "\n" + k + "," + j);
va1 = a.splice(k, 1)[0];
va2 = a.splice(j, 1)[0];
}
else {
j = 0;
while (s2 + a[k] > s1 + a[j] && j < k - 1) j++;
$("#log").val($("#log").val() + "\n" + k + "," + j);
va2 = a.splice(k, 1)[0];
va1 = a.splice(j, 1)[0];
}
$("#log").val($("#log").val() + "\n" + JSON.stringify(a));
a1[a1.length] = va1;
a2[a2.length] = va2;
s1 += va1;
s2 += va2;
}
$("#out1").val(JSON.stringify(a1));
$("#outs1").val(s1);
$("#out2").val(JSON.stringify(a2));
$("#outs2").val(s2);