freeCodeCamp/guide/spanish/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../sum-all-numbers-in-a-range/index.md

6.9 KiB

title localeTitle
Sum All Numbers in a Range Suma todos los números en un rango

:triangular_flag_on_post: Recuerda usar Read-Search-Ask si te atascas. Tratar de emparejar el programa :busts_in_silhouette: y escribe tu propio código :pencil:

:checkered_flag: Explicación del problema:

Necesita crear un programa que tome una matriz de dos números que no están necesariamente en orden, y luego agregue no solo esos números sino también cualquier número intermedio. Por ejemplo, [3,1] será igual que 1+2+3 y no solo 3+1

:speech_balloon: Sugerencia: 1

Usa Math.max() para encontrar el valor máximo de dos números.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 2

Usa Math.min() para encontrar el valor mínimo de dos números.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 3

Recuerde que debe agregar todos los números intermedios para que esto requiera una forma de obtener esos números.

intenta resolver el problema ahora

¡Alerta de spoiler!

señal de advertencia

¡Solución por delante!

:beginner: Solución de código básico:

function sumAll(arr) { 
    var max = Math.max(arr[0], arr[1]); 
    var min = Math.min(arr[0], arr[1]); 
    var temp = 0; 
    for (var i=min; i <= max; i++){ 
        temp += i; 
    } 
  return(temp); 
 } 
 
 sumAll([1, 4]); 

:rocket: Ejecutar código

Explicación del código:

  • Primero crea una variable para almacenar el número máximo entre dos.
  • Lo mismo que antes para el número más pequeño.
  • Creamos una variable temporal para sumar los números.

Como los números pueden no estar siempre en orden, usar max() y min() ayudará a organizar.

Enlaces relevantes

:sunflower: Solución de código intermedio:

function sumAll(arr) { 
  // Buckle up everything to one! 
 
  // Using ES6 arrow function (one-liner) 
  var sortedArr = arr.sort((a,b) => ab); 
  var firstNum = arr[0]; 
  var lastNum = arr[1]; 
  // Using Arithmetic Progression summing formula 
 
  var sum = (lastNum - firstNum + 1) * (firstNum + lastNum) / 2; 
  return sum; 
 } 

:rocket: Ejecutar código

Explicación del código:

  • En primer lugar, creamos una variable llamada sortedArr que la ordena desde el valor más bajo al más alto.
  • firstNum es igual al primer número y lastNum es igual al segundo número.
  • A continuación, utilizando la fórmula de suma de Progresión Aritmética, dejamos que sum igual (lastNum - firstNum + 1) * (firstNum + lastNum) / 2 .
  • Finalmente, devolvemos la sum .

La línea var sortedArr = arr.sort((a,b) => ab); Es probablemente lo que te tendrá más confundido. Esto sería lo mismo que crear una función que devuelva ab para sort() que es la forma estándar de ordenar los números de menor a mayor. En lugar de utilizar la flecha o la función de flecha gorda, podemos hacer todo eso en una sola línea, lo que nos permite escribir menos.

Enlaces relevantes

:rotating_light: Solución avanzada de código:

function sumAll(arr) { 
    var sum = 0; 
    for (var i = Math.min(...arr); i <= Math.max(...arr); i++){ 
        sum += i; 
    } 
  return sum; 
 } 
 
 sumAll([1, 4]); 

:rocket: Ejecutar código

Explicación del código:

  • Creando una suma variable para almacenar la suma de los elementos.
  • Iniciar la iteración del bucle desde el elemento mínimo de la matriz dada y detenerse cuando alcanza el elemento máximo.
  • El uso de un operador de propagación (... arr) permite pasar la matriz real a la función en lugar de elementos uno por uno.

Enlaces relevantes

:clipboard: NOTAS PARA LAS CONTRIBUCIONES:

  • :warning: NO agregue soluciones que sean similares a las soluciones existentes. Si cree que es similar pero mejor , intente fusionar (o reemplazar) la solución similar existente.
  • Agregue una explicación de su solución.
  • Categorice la solución en una de las siguientes categorías: Básica , Intermedia y Avanzada . :traffic_light:
  • Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . ( :warning: NO elimine ningún nombre de usuario existente )

Ver :point_right: Wiki Challenge Solution Template para referencia.