Suma de subconjuntos - Reto de programación - GirlPowerInCode

¡Hola Girl! 🙋‍♀️ Dentro de nuestra sección de #RetosDeProgramación hoy te traemos un ejercicio simple, pero que pondrá a trabajar tu lógica. Veremos como realizar una suma de subconjuntos, nosotros usamos PHP, pero tú puedes elegir el lenguaje con el que te sientas más cómoda.

¿Cuál es el reto?

Dado un conjunto de números enteros positivos y un número objetivo, encontraremos todos los subconjuntos del conjunto dado cuya suma sea igual al número objetivo.

Por ejemplo, dado el conjunto [2, 4, 6, 8] y el número objetivo 10, los subconjuntos que suman 10 son: [2, 8] y [4, 6].

¿Qué debes hacer?

Tu tarea es escribir una función en el lenguaje de programación de tu elección que resuelva este problema. La función debe recibir como entrada el conjunto de números y el número objetivo, y debe devolver una lista de todos los subconjuntos que cumplan con la condición.

¡Es tu turno! Abre tu editor de código favorito y pon en práctica tus habilidades de programación.

Nuestra propuesta de solución

<?php 

// Definición del conjunto de números y el objetivo
$conjunto = array(2,4,6,8);
$objetivo = 10;

// Llamada a la función para encontrar subconjuntos que sumen el objetivo
encontrarSubconjuntos($conjunto, $objetivo);

// Función para encontrar subconjuntos que sumen el objetivo
function encontrarSubconjuntos($conjunto, $objetivo){
    // Obtener la cantidad de elementos en el conjunto
    $count = count($conjunto);

    // Iterar sobre el conjunto
    for ($i = 0; $i < $count; $i++) {
        // Iterar sobre los elementos siguientes en el conjunto
        for ($w = $i + 1; $w < $count; $w++) {
            // Calcular la suma de los dos elementos
            $suma = $conjunto[$i] + $conjunto[$w];
            
            // Verificar si la suma es igual al objetivo
            if ($suma == $objetivo) {
                // Imprimir los dos elementos que suman el objetivo
                echo $conjunto[$i] . "," . $conjunto[$w] . "<br>";
            }
        }
    }
}
?>
  • Primero definimos el conjunto de números en un array. En este ejemplo, el conjunto es [2, 4, 6, 8] y el objetivo al que se desea llegar mediante la suma de elementos del conjunto. En este caso, el objetivo es 10.
  • Enseguida llamamos a la función encontrarSubconjuntos() pasando el conjunto y el objetivo como parámetros.
  • Definimos la función encontrarSubconjuntos() que toma el conjunto y el objetivo como parámetros.
  • Calculamos la cantidad de elementos en el conjunto utilizando la función count(), y la almacenamos en la variable $count. Esto evita realizar la llamada a count($conjunto) en cada iteración del bucle.
  • Iniciamos un bucle for que itera sobre el conjunto. La variable $i representa el índice del primer elemento en la suma.
  • Enseguida iniciamos otro bucle for que itera sobre los elementos siguientes en el conjunto. La variable $w representa el índice del segundo elemento en la suma. Al iniciar el bucle en $i + 1, se evitan duplicados y combinaciones repetidas.
  • Ahora calculamos la suma de los dos elementos utilizando los índices $i y $w, y se almacena en la variable $suma.
  • Casi para terminar se verifica si la suma es igual al objetivo.
  • Si la suma es igual al objetivo, se imprime en pantalla los dos elementos que suman el objetivo, separados por una coma y seguidos de un salto de línea (<br>).
  • Al finalizar la ejecución del código, se habrán impreso todos los pares de elementos del conjunto que suman el objetivo.

Cuéntanos ¿Cómo lo resolviste tú?

Antes de irte te dejamos otro reto de programación para que sigas practicando y mejorando tu lógica. Suma infinita de un número

Recuerda compartir este #retodeprogramación en tu red social favorita para que más chicas estén al tanto y mejoren sus habilidades en programación.

¡Hasta Pronto! 😉

¡Haz clic para valorar este contenido!
(Votos: 2 Promedio: 5)

¡Comparte este contenido! 😉