Я хотел бы использовать другой синтаксис для облегчения отладки.Почему это не работает? - PullRequest
0 голосов
/ 21 ноября 2018

Вот проблема, с которой я не могу справиться, она исходит от codingGame.Я видел решение, но я пытался использовать другой синтаксис, чтобы лучше понять.

Контекст

/** Horse Racing Duals (easy) https://www.codingame.com/training/easy/horse-racing-duals
 * This puzzle shows that sometimes, the simplest solution is not performant
 * enough. You will also learn to handle large arrays and gain experience
 * with their processing time.
 *
 * STATEMENT:
 * In this problem you have to find the two numbers that are closest to each
 * other among a list of numbers. The list might be really large and force
 * you to search for the best possible algorithmic complexity for your
 * solution.
 *
 * STORY:
 * To make a race between two horses interesting, you will have to find the
 * horses with the closest strength.
**/
print(
    new Array(+readline())
        .fill()             
        .map(() => +readline())   
        .sort((a, b) => a > b)
        .map((x, i, arr) => Math.abs(x - arr[i + 1])) 
        .sort((a, b)  => a > b) [0] 
);

Почему я не могу сделать это:

let tab = new Array(+readline())
tab.fill()
tab.map(() => +readline())
tab.sort((a, b) => a > b)
tab.map((x, i, arr) => Math.abs(x - arr[i + 1])) 
tab

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Для того, чтобы он был таким же, потребуется переназначить вкладку, когда метод не мутирует на месте.как это:

let tab = new Array(+readline())
tab.fill()
tab = tab.map(() => +readline())
tab.sort((a, b) => a > b)
tab = tab.map((x, i, arr) => Math.abs(x - arr[i + 1])) 
print(tab)
0 голосов
/ 21 ноября 2018

Почему я не могу сделать это:

Потому что некоторые map метод возвращает новый массив с изменениями вместо того, чтобы вносить изменения в-place.

В вашем примере только sort мутирует массив на месте, поэтому ваш код действительно эквивалентен:

let tab = new Array(+readline())
tab.sort((a, b) => a > b)

Обратите внимание, что sortобратный вызов должен вернуть положительное число, отрицательное число или 0. Не должно возвращать логическое значение .

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