SharkEdu logo SharkEdu

Descripción del Problema a Resolver

El problema que este programa pretende resolver es realizar operaciones básicas sobre conjuntos, específicamente con tres conjuntos ( A ), ( B ), y ( C ), en el contexto de un conjunto universal ( U ). Las operaciones involucradas incluyen uniones, intersecciones, diferencias, complementos, y la obtención del conjunto potencia (todos los subconjuntos posibles) de estos conjuntos.

El programa está diseñado para:

  1. Crear el conjunto universal ( U ): Este conjunto incluye todos los números desde (-a) hasta (a), donde (a) es un valor ingresado por el usuario.
  2. Crear conjuntos ( A ), ( B ), y ( C ): Basados en diferentes criterios, como números impares y divisibilidad.
  3. Realizar operaciones específicas entre estos conjuntos, comparando los resultados y obteniendo los conjuntos potencia.

Solución Propuesta y Justificación

1. Creación del Conjunto Universal ( U )

Problema: Se necesita un conjunto universal que abarque todos los números dentro de un rango definido por el usuario.

Solución: Se implementa la función createUniverse(a), que genera una lista de números desde (-a) hasta (a). Esta lista se convierte en un conjunto ( U ) que contiene todos los elementos necesarios para las operaciones posteriores.

def createUniverse(a):
    conjunto = []
    for element in range(-a, a+1):
        conjunto.append(element)
    return conjunto

Justificación: Esta función garantiza que el conjunto universal ( U ) sea simétrico en torno a cero y cubra todos los valores posibles en el rango definido, cumpliendo así con la necesidad de un conjunto base para las operaciones.

2. Creación de los Conjuntos ( A ), ( B ), y ( C )

3. Operaciones entre Conjuntos

El programa define tres operaciones principales entre los conjuntos ( A ), ( B ), y ( C ), todas en el contexto del conjunto universal ( U ).

4. Cálculo del Conjunto Potencia

Problema: Es necesario obtener todos los subconjuntos posibles (conjunto potencia) del conjunto universal ( U ) y de los resultados de las operaciones.

Solución: Se utilizan las funciones calc_powerset y get_powerset en la clase Set.

def calc_powerset(self, seq):
    if len(seq) == 0:
        yield seq
    if len(seq) == 1:
        yield seq
        yield []
    elif len(seq) > 1:
        for item in self.calc_powerset(seq[1:]):
            yield [seq[0]]+item
            yield item

def get_powerset(self):
    my_powerset = Set()
    for element in self.calc_powerset(self.set):
        my_powerset.add(element)
    return my_powerset

Justificación: Estas funciones calculan y devuelven todos los posibles subconjuntos de un conjunto dado. El conjunto potencia es una herramienta fundamental en la teoría de conjuntos, ya que permite analizar todas las combinaciones posibles de inclusión de elementos en un subconjunto.

5. Ejecución Interactiva y Resultados

Problema: Permitir al usuario ejecutar el programa repetidamente, ingresando diferentes valores y viendo los resultados de las operaciones en tiempo real.

Solución: El ciclo principal del programa (while go) permite una interacción continua, solicitando entradas del usuario y mostrando resultados hasta que el usuario decida salir.

Justificación: Esto asegura que el usuario pueda experimentar con diferentes conjuntos y comprender cómo las operaciones de conjuntos afectan los resultados, facilitando un aprendizaje interactivo y práctico.


Resumen

El programa propuesto resuelve el problema de realizar operaciones avanzadas sobre conjuntos y obtener el conjunto potencia de estos. Cada componente del programa está diseñado para cumplir un propósito específico dentro del contexto de la teoría de conjuntos, y las soluciones implementadas garantizan que se cumplan los requisitos necesarios de forma eficiente y comprensible para los usuarios.