Что не так с решением уровня?

      // You need to distract "Big Bertha" until you special squad arrives.
         // The cannon always shoots at the pair of soldiers closest to each other.
            // We can predict which pair of soldiers in danger and protect them.
// This function should find the pair of units with the minimum distance between them.
                function findNearestPair(units) {
    // These variables are used to store comparable value and results.
    var minDistance = 9001;
    var nearestPair = ["Nobody", "Nobody"];
    // You need to check and compare all pairs of units.
    // Iterate all units with indexes from 0 to 'units.length-1'.
    for (var i = 0; i < soldiers.length; i++){
        for (var j = i+1; j < soldiers.length;j++){
            var distance = soldiers[j].pos.x - soldiers[i].pos.x;
            if (distance < minDistance){
                minDistance =  distance;
                nearestPair = [soldiers[i],soldiers[j]];
                } 
            } 
        } 
        // Use an additional loop through indexes 'j'from 'i+1' to 'units.length'.
            // Find the distance between the i-th and j-th units.
            // If the distance less than 'minDistance':
                // Reassign 'minDistance' with the new distance.
                // Reassign 'nearestPair' to the names of the current pair of units.
    hero.say(minDistance);
    return nearestPair;
    
}

while (true) {
    var soldiers = hero.findByType("soldier");
    // We know when the cannon shoots.
    if (hero.now() % 8 === 5) {
        var pairOfNames = findNearestPair(soldiers);
        // Say the soldier's names and wizards will protect them.
        hero.say(pairOfNames[0] + " " + pairOfNames[1]);
        
    }
}

код называет не двух ближайших солдатов.Кстати как точно найти дистанцию между ними?

Отформатируйте код, пожалуйста, чтобы он был читаемей. Так будет проще помочь.

unit.distanceTo(anotherUnit.pos) или можно самому если хочется написать функцию определения дистанции.

((x1 - x2) ^ 2 + (y1 - y2) ^ 2) ^ 0.5

Что значит отформатировать?

сделать так, чтобы код выглядел как код. Можно использовать тройные кавычки ` перед и после кода. Или используйте кнопку в редакторе поста здесь. Код будет выглядеть для примера так:

someMethod(data);
function f(arg) {
    return "something";
}

if (a && b) {
    if (otherCondition > 9001) {
        for (var i = 0; i < array.length; i++) {
            doSomething(i);
        }
    }
}

готово!Текст отформатирован.

var distance = soldiers[j].pos.x - soldiers[i].pos.x;

Это не расстояние между солдатами - это разница между их Х координатами (еще может и отрицательной быть). В более ранних уровнях вы должны были сталкиваться с методом distanceTo.

В прошлом ответе я немного неверно написал. Должно быть

soldier1.distanceTo(soldier2)

Хотя будет работать и как написал ранее с pos, но лучше следовать докам.

У меня не работает дистанс ту.Поэтому я как-то по другому пытался сделать.

Не работает у героя или у солдат?

Перепроверил ещё раз.Заработало.Вот так всегда с кодом.:joy: