C
function solve(arr) {
const sum = arr.reduce((acc, cur) => acc+cur, 0)
function take(set1, set2, set1sum, set2sum) {
let result = { set1, set2, set1sum, set2sum }
for (let i=0; i<set1.length; i++) {
const x = set1[i]
const _set1 = [...set1.slice(0, i), ...set1.slice(i + 1)]
const _set2 = [...set2, x]
const r = take(_set1, _set2, set1sum - x, set2sum + x)
if (Math.abs(r.set1sum - r.set2sum) < Math.abs(set1sum - set2sum)) {
result = r
}
}
return result
}
return take(arr, [], sum, 0, sum)
}
const result = solve([8, 7, 6, 5, 4])
console.log(result)