--- id: a3f503de51cfab748ff001aa title: Pairwise challengeType: 5 forumTopicId: 301617 localeTitle: парный --- ## Description
Учитывая массив arr , найдите пары элементов, сумма которых равна второму аргументу arg и возвращает сумму их индексов. Вы можете использовать несколько пар, которые имеют одинаковые числовые элементы, но разные индексы. Каждая пара должна использовать самые низкие доступные индексы. Как только элемент был использован, его нельзя повторно использовать для соединения с другим элементом. Например, pairwise([1, 1, 2], 3) создает пару [2, 1] используя 1 в индексе 0, а не 1 в индексе 1, потому что 0 + 2 <1 + 2. Например, pairwise([7, 9, 11, 13, 15], 20) возвращает 6 . Парами, суммирующимися до 20, являются [7, 13] и [9, 11] . Затем мы можем записать массив с их индексами и значениями.
Индекс 0 1 2 3 4
Стоимость 7 9 11 13 15
Ниже мы возьмем соответствующие индексы и добавим их. 7 + 13 = 20 → Индексы 0 + 3 = 3
9 + 11 = 20 → Индексы 1 + 2 = 3
3 + 3 = 6 → Return 6 забудьте использовать Read-Search-Ask, если вы застряли. Попробуйте подключить программу. Напишите свой собственный код.
## Instructions
## Tests
```yml tests: - text: pairwise([1, 4, 2, 3, 0, 5], 7) should return 11. testString: assert.deepEqual(pairwise([1, 4, 2, 3, 0, 5], 7), 11); - text: pairwise([1, 3, 2, 4], 4) should return 1. testString: assert.deepEqual(pairwise([1, 3, 2, 4], 4), 1); - text: pairwise([1, 1, 1], 2) should return 1. testString: assert.deepEqual(pairwise([1, 1, 1], 2), 1); - text: pairwise([0, 0, 0, 0, 1, 1], 1) should return 10. testString: assert.deepEqual(pairwise([0, 0, 0, 0, 1, 1], 1), 10); - text: pairwise([], 100) should return 0. testString: assert.deepEqual(pairwise([], 100), 0); ```
## Challenge Seed
```js function pairwise(arr, arg) { return arg; } pairwise([1,4,2,3,0,5], 7); ```
## Solution
```js function pairwise(arr, arg) { var sum = 0; arr.forEach(function(e, i, a) { if (e != null) { var diff = arg-e; a[i] = null; var dix = a.indexOf(diff); if (dix !== -1) { sum += dix; sum += i; a[dix] = null; } } }); return sum; } pairwise([1,4,2,3,0,5], 7); ```