Часть общей задачи, мне нужен мой код, чтобы найти медиану массива чисел (с четным или нечетным числом элементов), представляющих общее количество секунд, и преобразовать это число в массив, содержащий часы, минуты и секунды изобщее количество секунд.Код работает хорошо, но он не проходит тесты, особенно случайные тесты.В каждом случае общее количество секунд оказывается на единицу меньше или на единицу больше, чем показывает тест.
Как я могу решить эту проблему с помощью текущего кода или я должен сделать что-то совершенно другое?
Я пытался манипулировать кодом с помощью различных методов Math, но я все еще испытываю проблему, заключающуюся в том, что секунды на единицу выше или ниже правильного ответа.
Вот мой код:
concatInt = [ 3432, 4331, 7588, 8432 ]
let rawMedian = function (){
if(concatInt.length === 0) return 0;
concatInt.sort(function(a,b){
return a-b;
});
var half = Math.floor(concatInt.length / 2);
if (concatInt.length % 2)
return concatInt[half];
return (concatInt[half - 1] + concatInt[half]) / 2.0;
}
let toStopwatch = function(){
let hours;
let minutes;
let seconds;
if (rawMedian()/3600 > 1){
hours = Math.floor(rawMedian()/3600);
minutes = ((rawMedian() % 3600)/60);
seconds = Math.floor((minutes - Math.floor(minutes)) * 60);
if (seconds === 60){
seconds = seconds -1;
}
} else {
hours = 0;
if (rawMedian() > 60){
minutes = (rawMedian()/60);
seconds = Math.floor((minutes - Math.floor(minutes)) * 60);
if (seconds === 60){
seconds = seconds -1;
}
} else {
minutes = 0;
seconds = rawMedian()
}
}
let timesArr = [];
timesArr.push(`${hours.toString()}`, `${Math.floor(minutes).toString()}`, `${seconds.toString()}`);
return timesArr;
}
Результатом этого кода является ["1", "39", "19"].Однако в тестах Codewars Kata приведенный выше код показывает, что он некорректен, поскольку количество секунд на одну больше или меньше ожидаемого количества секунд.Я рад предоставить мой полный код и конкретное Ката, включенное по запросу, но приведенный выше код, очевидно, вызывает проблему.