function split(sum, ...results) {
// делим число на общее количество часов
const part = sum / results.reduce((a, b) => a + b);
// каждые часы умножаем на результат деления и округляем
const result = results.map(hours => Math.round(hours * part));
// финальная сумма с учётом округлений
const resultSum = result.reduce((a, b) => a + b);
// разница между финальной суммой и изначальной
const difference = sum - resultSum;
// если есть разница
if(difference) {
// выбираем рандомно счасливчика\неудачника
// за счёт которого компенсируем разницу
// поменяй если надо выбрать кого-то конкретного :)
const luckyIndex = Math.floor(Math.random() * result.length);
result[luckyIndex] += difference;
}
return result;
}