Un ejercicio que puede parecer complejo pero, si pensamos en ordenar el arreglo, la solución es muy simple. Veamos el algoritmo en distintos lenguajes.
Click aquí para una versión accesible de la infografía (apta para lectores electrónicos)
Ejercicio de programación
Dado un arreglo con cinco enteros positivos, hallar los valores mínimo y máximo que pueden calcularse sumando exactamente cuatro de los cinco números. Retornar un nuevo arreglo donde el primer elemento sea el valor mínimo y el segundo sea el valor máximo.
Ejemplo:
entrada: [3,6,1,5,0]
mínimo: 0+1+3+5
máximo: 1+3+5+6
salida: [9,15]
Resolución (descripción del algoritmo):
Paso 1: Ordenar el arreglo en forma ascendente. Paso 2: Calcular la mínima suma, sumando los primeros cuatro elementos. Paso 3: Calcular la máxima suma, sumando los últimos cuatro elementos. Paso 4: Retornar los resultados en un nuevo arreglo, compuesto por la mínima suma y la máxima suma.
Implementación en Python:
def suma_min_max(arreglo):
minimo = sorted(arreglo)[0:4]
maximo = sorted(arreglo)[-4:]
return [sum(minimo), sum(maximo)]
Implementación en Javascript:
function suma_min_max(arreglo) {
let ordenado = Array.from(arreglo)
ordenado.sort((a, b) => a - b);
let minimo = ordenado.slice(0, 4).reduce((a, b) => a + b, 0);
let maximo = ordenado.slice(-4).reduce((a, b) => a + b, 0);
return [minimo, maximo];
}
Implementación en Java:
import java.util.Arrays;
public class SumaMinMax {
public static int[] suma_min_max(int[] arreglo) {
int[] ordenado = arreglo.clone();
Arrays.sort(ordenado);
int minimo = ordenado[0] + ordenado[1] + ordenado[2] + ordenado[3];
int maximo = ordenado[1] + ordenado[2] + ordenado[3] + ordenado[4];
return new int[] { minimo, maximo };
}
}
Implementación en C++:
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
vector<int> suma_min_max(vector<int> arreglo) {
sort(arreglo.begin(), arreglo.end());
int minimo = accumulate(arreglo.begin(), arreglo.begin()+4, 0);
int maximo = accumulate(arreglo.rbegin(), arreglo.rbegin()+4, 0);
return {minimo, maximo};
}
Código Python para ejecutar
Código Javascript para ejecutar
Código Java para ejecutar
Código C++ para ejecutar