Прошу оценить, как Вам мой код 30/30 100%

var qualificationDistance = 200;
var attempts = [120, 100, 150, 160, 201, 203, 180, 202];
var qualified = false;
var averageBest = 0;

for (var i = 1; i <= attempts.length - 1; i++) {

var mas = attempts[i];

for (var j = 0; j <= attempts.length - 2; j++) {
if (attempts[i] < attempts[j]) {
var mas = attempts[j];
attempts[j] = attempts[i];
attempts[i] = mas;
}
}
}
console.log(attempts);

averageBest = (attempts[attempts.length - 1] + attempts[attempts.length - 2] + attempts[attempts.length - 3]) / 3;

if (averageBest > qualificationDistance) {
qualified = true;
}
else {
qualified = false;
}

else лишний
сортировку лучше по убыванию сделать, чтобы не городить таких монстров как
attempts[attempts.length - 1]

заставили человека с давлением кодить)
attempts.sort((a,b)=>b-a);
averageBest = (attempts[0]+attempts[1]+attempts[2])/3;
if (averageBest > qualificationDistance) {qualified = true;}
2 лайка

Хай, всем!

А как такой вариант?

function searchMax(a, b) {
return b-a;
}
attempts.sort(searchMax);
var maxResult = attempts.slice(0,3);
var sum = 0;
for (var i = 0; i < maxResult.length; i++){
sum+=attempts[i];
}
averageBest = sum/3;
averageBest > qualificationDistance ? qualified = true : qualified = false;
console.log(qualified);

а цикл зачем, чтобы 3 элемента сложить (и я бы понял, если вы хотели утилити добавить, но волшебная цифра 3 все равно в расчете среднего используется)?

а тернарный оператор тут я так понял, чтобы окончательно добить. ведь нам даже else не нужен. дефолтное значение есть в условии.

Понял, ща изменим…
так лучше?
спасибо!))

function searchMax(a, b) {return b-a;}
attempts.sort(searchMax);
averageBest = (attempts[0]+attempts[1]+attempts[2])/3;
if (averageBest > qualificationDistance) {qualified = true};

угу, еще бы стрелочную функцию в сортировку запихнуть и вообще атата будет

эт вы так издеваетесь или мне нужно так сделать? А то ща буду читать что такое стрелочная функция))

ну грубо говоря стрелочная функция это анонимная функция (без имени), имеет такой синтаксис:
(arg1 [, arg2, …[argN] ] ) => {…}
особенностью является то, что в скобках записывает return (без самого этого слова).
применяется когда нужно сделать коротенькую операцию для какого-то метода. как раз в сортировке это используется зачастую. ну и у стрелочной функции особые отношения с this

attempts.sort((a,b)=>b-a);
averageBest = (attempts[0]+attempts[1]+attempts[2])/3;
if (averageBest > qualificationDistance) {qualified = true;}

понял, спасибо!
и еще вопрос, что такое “утилити добавить”?

спс

ну добавить поддержку того, что в ТЗ особо не заложено. например, чтобы ваша программа работала также хорошо, если вдруг правила бы изменились и в среднюю попытку засчитывалось не лучшие 3, а например лучшие 5 попыток. всего 1 переменную нужно было бы поправить в slice к примеру.

например, в упрощенном виде нужно было бы написать так:
var maxResult = attempts.slice(0,randomNum);
var sum = 0;
for (var i = 0; i < maxResult.length; i++){
sum+=attempts[i];
}
averageBest = sum/maxResult.length;

понял, круто.

спасибо!

Делал с использованием методов массивов. ИМХО так проще, а то у меня еще свежи воспоминания от написания сортировки массива вручную ХД

Спойлеры!
var qualificationDistance = 200;
var attempts = [120, 150, 160, 201, 203, 180, 202];
var qualified = false;
var averageBest = 0;

let sortAttempts = attempts.sort((a, b) => b - a);
let topJump = sortAttempts.slice(0, 3);

let sum = topJump.reduce((a, b) => a + b, 0);
averageBest = sum/topJump.length;

if (averageBest > qualificationDistance) {
  qualified = true
}

И ура, хотя бы в испытаниях можно использовать let и не париться, как то привык я к нему, а тут в курсах все больше устаревший var