Dada una integral con 5 números enteros, encontrar la suma mínima y la suma máxima de 4 de sus elementos e imprimir en consola separados por un espacio.
El objetivo del reto es adentrarnos en metodo sort de JavaScript como se indica en la documentacióm del "Array.prototype.sort()". Lo que hace éste método es regresarnos ordenados los elementos de un arreglo. Aunque se debe especificar como ordenarse, para controlar mejor la respuesta. La sintáxis es la siguiente:
La función compareFunction podra regresarnos dos valores por defecto, de acuerdo a la documentación. Para este ejemplo utilizaremos esta función para obtener los valores de las sumas.
También utilizaremos el método "Array.prototype.slice()" para elegir, tras obtener el arreglo de mayor a menor, cuales valores deberan sumarse para obtener la variable de la suma menor "minimum" y cuales otros para obtener la la variable de la suma mayor "maximum". De acuerdo con la documentación el deslizamiento contiene la siguiente sintaxis:
Para obtener los valores que deberán sumarse para obtener la suma menor o "minimum" se definen indicando que inicie la suma en la posición 0 y sume en la cadena los primeros cuatro. Para obtener los enteros que deberán sumarse para obtener la suma mayor o "maximum" debera iniciar la suma en la posición 1, para sumar los ultimos cuatro.
Pseudocódigo
- arma función miniMaxSum (con los valores del arreglo){
- declara variable sortedArray((arreglar de a, b) cuando sea igual o menor que (a-b)):
- declara variable minimum = sorted.array.slice([0[,sumar los primeros cuatro enteros]])
- declara variable maximum = sorted.array.slide(1[.sumar los últimos cuatro enteros]])
- imprimir minimum, maximum
Código
function miniMaxSum(arr) {
//declaramos variable sortedArray y la ordenamos de menor a mayor.
let sortedArray = arr.sort((a, b) => a-b);
//declaramos variable minimum y agregamos metodo slice a la variable
//sortedArray indicando que inicie en cero y sume las primeros 4 enteros.
let minimum = sortedArray.slice(0, sortedArray.length -1).reduce((a, b) => a+b);
//declaramos variable maximum y agregamos metodo slice a la variable
//sortedArray indicando que inicie en 1 y sume las cantidades siguientes.
let maximum = sortedArray.slice(1).reduce((a, b) => a+b);
//imprimir en consola separados por un espacio en blanco.
console.log(minimum, maximum)
}