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.

Enunciado

Resolución - Algoritmo

Implementación - Python y Javascript

Implementación - Java y C++

 

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