Как цикл возвращает что-то, пока нет var = что-то, только логический тест - PullRequest
0 голосов
/ 08 октября 2018

Интересно, как цикл возвращает что-то, пока нет var = что-то, только логический тест

/ ** Температуры (легко) https://www.codingame.com/training/easy/temperatures * Решение этой задачи подтверждает, что концепция циклапонял и что * вы можете сравнить список значений.* Эта головоломка также является площадкой для экспериментов с концепцией лямбд на разных языках программирования.Это также возможность открыть для себя * функциональное программирование.* * Заявление: * Ваша программа должна анализировать записи температур, чтобы найти ближайший к * ноль.* * История: * Там очень холодно!Сможете ли вы найти температуру * ближайшую к нулю в наборе показаний температуры?** /

const N = +readline();
const tC = readline().split` `.map(x => +x);

let min = Infinity;

for (let i in tC) {
    (Math.abs(tC[i]) < Math.abs(min) || tC[i] === -min && tC[i] > 0) && (min = 
tC[i]);
}

print(min || 0);

Относится к: Интересно, что на самом деле делает эта функция .split ('') .map (x => + x);

1 Ответ

0 голосов
/ 08 октября 2018

Это называется оценка короткого замыкания .Когда у нас есть серия выражений, связанных логическим оператором (например, &&), выражения вычисляются слева и останавливаются, если выражение оценивается как false для && или true для ||.

В этом случае, если выражение (Math.abs(tC[i]) < Math.abs(min) || tC[i] === -min && tC[i] > 0) оценивается как истинное, то это выражение также выполняется (min = tC[i]);.Второму выражению присваивается значение tC[i] min (мин. Ранее было объявлено как переменная - let min = Infinity;).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...