Menu
CoddyTech

Matematika, Selisih Set

Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 64 dari 66.

Operasi selisih set membuat set baru yang berisi elemen yang ada di set pertama, tetapi tidak ada di set kedua.

Buat dua HashSet:

HashSet<string> set1 = new HashSet<string>();
HashSet<string> set2 = new HashSet<string>();

Tambahkan elemen ke kedua set:

set1.Add("Apple");
set1.Add("Banana");
set1.Add("Cherry");

set2.Add("Banana");
set2.Add("Kiwi");

Hitung selisih (elemen dalam set1 tetapi tidak dalam set2):

HashSet<string> difference = new HashSet<string>(set1);
difference.ExceptWith(set2);

Set selisih berisi:

["Apple", "Cherry"]
challenge icon

Tantangan

Mudah

Buat method bernama GetSetDifference yang menerima dua HashSet berisi bilangan bulat (set1 dan set2) dan mengembalikan HashSet baru yang berisi selisih set (elemen dalam set1 yang tidak ada dalam set2).

Coba sendiri

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

class Program {
    public static HashSet<int> GetSetDifference(HashSet<int> set1, HashSet<int> set2) {
        // Tulis kodemu di sini
        return null;
    }
    
    static void Main(string[] args) {
        // Baca baris pertama untuk set pertama
        string line1 = Console.ReadLine();
        HashSet<int> set1 = new HashSet<int>();
        
        // Periksa apakah set pertama berformat array JSON
        if (line1 != null && line1.StartsWith("[") && line1.EndsWith("]")) {
            try {
                // Ambil isi di antara tanda kurung siku
                string arrayContent = line1.Substring(1, line1.Length - 2);
                
                // Coba uraikan isi array JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values) {
                    // Hapus tanda kutip jika ada
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\"")) {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Uraikan sebagai bilangan bulat dan tambahkan ke set
                    if (int.TryParse(cleanValue, out int num)) {
                        set1.Add(num);
                    }
                }
            }
            catch (Exception ex) {
                Console.WriteLine($"Error parsing first set: {ex.Message}");
                return;
            }
        }
        else {
            // Proses input biasa yang dipisahkan spasi untuk set pertama
            string[] set1Input = line1.Split(' ');
            foreach (string item in set1Input) {
                if (int.TryParse(item, out int num)) {
                    set1.Add(num);
                }
            }
        }
        
        // Baca baris kedua untuk set kedua
        string line2 = Console.ReadLine();
        HashSet<int> set2 = new HashSet<int>();
        
        // Periksa apakah set kedua berformat array JSON
        if (line2 != null && line2.StartsWith("[") && line2.EndsWith("]")) {
            try {
                // Ambil isi di antara tanda kurung siku
                string arrayContent = line2.Substring(1, line2.Length - 2);
                
                // Coba uraikan isi array JSON
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values) {
                    // Hapus tanda kutip jika ada
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\"")) {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Uraikan sebagai bilangan bulat dan tambahkan ke set
                    if (int.TryParse(cleanValue, out int num)) {
                        set2.Add(num);
                    }
                }
            }
            catch (Exception ex) {
                Console.WriteLine($"Error parsing second set: {ex.Message}");
                return;
            }
        }
        else {
            // Proses input biasa yang dipisahkan spasi untuk set kedua
            string[] set2Input = line2.Split(' ');
            foreach (string item in set2Input) {
                if (int.TryParse(item, out int num)) {
                    set2.Add(num);
                }
            }
        }
        
        HashSet<int> difference = GetSetDifference(set1, set2);
        
        // Cetak hasilnya
        List<int> sortedResult = new List<int>(difference);
        sortedResult.Sort();
        foreach (int item in sortedResult) {
            Console.WriteLine(item);
        }
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C# online