Last active
June 30, 2017 20:59
-
-
Save Woodsphreaker/2274d301a49abf63ed16e3b26ba5c186 to your computer and use it in GitHub Desktop.
Pairwise
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const pairwise = (arr, arg) => | |
/* | |
Primeiro laço (reduce) com os numeros recebidos no array | |
Inicio o reduce com um array contendo 2 posições, um número inteiro que vai armazenar as somas dos indices e um | |
objeto que vai armazenar os indices já usados no processo | |
*/ | |
arr.reduce((acc, cur, indexR, arr) => { | |
/* | |
Segundo laço (forEach) para testar o valor recebido do reduce com cada valor do array com a finalizade de | |
satisfazer a condição do desafio | |
*/ | |
arr.forEach((cur2, indexF) => { | |
/* | |
Se a condição for satisfeita, os indices são somados e armazenados na primeira posição do acumulador do reduce | |
Os indices já utilizados, são inseridos no objeto, presente na segunda posição do acumulador do reduce, pois serão | |
fundamentais na validação da condição | |
*/ | |
if (cur + cur2 === arg && indexR !== indexF && !acc[1][indexR] && !acc[1][indexF]) { | |
acc[0] += (indexR + indexF) | |
acc[1][indexR] = true | |
acc[1][indexF] = true | |
} | |
}) | |
// Retorno o acumulador para a proxima interação | |
return acc | |
}, [0, {}])[0] | |
console.log(pairwise([7, 9, 11, 13, 15], 20)) // 6 | |
console.log(pairwise([0, 0, 0, 0, 1, 1], 1)) // 10 | |
console.log(pairwise([1, 4, 2, 3, 0, 5], 7)) // 11 | |
console.log(pairwise([1, 3, 2, 4], 4)) // 1 | |
console.log(pairwise([1, 1, 1], 2)) // 1 | |
console.log(pairwise([], 100)) // 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment