Menu
Coddy logo textTech

Matemáticas - Diferencia Simétrica

Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 32 de 59.

La diferencia simétrica de dos conjuntos es un nuevo conjunto que contiene elementos que están en cualquiera de los conjuntos pero no en ambos. En Java, puedes calcularla mediante:

  1. Encontrar la diferencia del primer conjunto con respecto al segundo.
  1. Encontrar la diferencia del segundo conjunto con respecto al primero.
  1. Combinando estas dos diferencias.

Primero, crea dos HashSets:

HashSet<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);

HashSet<Integer> set2 = new HashSet<>();
set2.add(2);
set2.add(3);
set2.add(4);

A continuación, calcula cada diferencia unidireccional:

HashSet<Integer> diff1 = new HashSet<>(set1);
diff1.removeAll(set2);  // diff1 es [1]
HashSet<Integer> diff2 = new HashSet<>(set2);
diff2.removeAll(set1);  // diff2 es [4]

A continuación, combina las dos diferencias:

diff1.addAll(diff2);  // diff1 es [1, 4]
challenge icon

Desafío

Fácil

Crea un método llamado <strong>symmetricDifference</strong> que reciba dos HashSets de enteros como entrada, calcule su diferencia simétrica y la imprima en el formato:

Symmetric Difference: [elements]

Pruébalo tú mismo

import java.util.HashSet;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

public class Main {
    public static void symmetricDifference(HashSet<Integer> set1, HashSet<Integer> set2) {
        // Escribe tu código aquí
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // Lee la cadena JSON para el primer conjunto (por ejemplo, [1,2,3])
        String set1String = scanner.nextLine();
        // Lee la cadena JSON para el segundo conjunto (por ejemplo, [2,3,4])
        String set2String = scanner.nextLine();

        Type setType = new TypeToken<HashSet<Integer>>(){}.getType();
        HashSet<Integer> set1 = new Gson().fromJson(set1String, setType);
        HashSet<Integer> set2 = new Gson().fromJson(set2String, setType);

        symmetricDifference(set1, set2);
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo