Rematando los examenes finales
Antes de poder disfrutar de la navidad... nos toca terminar de rematar los exámenes finales. ¡Y toca un poco de matemáticas! 😱
A una función se le pasan dos parámetros: un Array con números y el resultado que se espera.
La función debe devolver los dos valores del Array que sumen el resultado esperado. Como a veces pueden haber más de dos valores que sumen, se devolverá el primero empezando por la izquierda que encuentre otro par, sin importar lo lejos que esté a la derecha.
Si no se encuentra, se devuelve null.
Veamos unos ejemplos:
sumPairs([3, 5, 7, 2], 10) // [3, 7]
sumPairs([-3, -2, 7, -5], 10) // null
sumPairs([2, 2, 3, 1], 4) // [2, 2]
sumPairs([6, 7, 1, 2], 8) // [6, 2]
sumPairs([0, 2, 2, 3, -1, 1, 5], 6) // [1, 5]
El resultado tiene que ser un array con dos números.
Una vez que tengas el resultado... ¿cómo podrías hacer que fuese lo más óptimo posible para no tener que recorrer las mismas situaciones dos veces 🤔?
Completa el reto!
Mi solución:
Puedes seguir a @midudev y estar pendiente de los retos de Advent.js
Top comments (3)
export default function sumPairs(numbers, result) {
for(let i=0; i<numbers.length; i++ ){
for(let j=i+1; j<numbers.length; j++ ){
if(numbers[i]+numbers[j]==result){
return [numbers[i],numbers[j]]
}
}
}
return null
}
function sumPairs(numbers, result) {
// ¡Y no olvides compartir tu solución en redes!
let answer = null
let arrAux = [...numbers]
for (let e of numbers) {
let aux = result
let faltante = aux - e
arrAux.splice(numbers.indexOf(e), 1)
if (arrAux.includes(faltante)) {
answer = [e, faltante]
break
}
}
return answer
}
const array = [3,5,2,8,9,6];
const result = 50;
function searchResult(array, result){
let elements = null;
array.every((val, ind)=>
array.every((num, i) => (val + num) === result && ind !== i? (elements = [val, num],false) : true
))
return elements;
}
console.log(searchResult(array, result));