Menu
Coddy logo textTech

Matematik - HashSet'lerin Birleşimi

Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 62 / 66.

Birleşim işlemi, iki kümeyi birleştirerek her iki kümedeki tüm öğeleri yineleme olmadan içeren yeni bir küme oluşturur.

İki HashSet oluşturun:

HashSet<int> set1 = new HashSet<int>() { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5 };

Kümeleri birleştirmek için Union yöntemini kullanın:

HashSet<int> unionSet = new HashSet<int>(set1);
unionSet.UnionWith(set2);

Yukarıdaki kodu çalıştırdıktan sonra unionSet şunları içerir:

[1, 2, 3, 4, 5]

Sonuçta 3 öğesinin yalnızca bir kez göründüğüne dikkat edin; HashSet yinelenen öğelere izin vermez.

challenge icon

Görev

Kolay

Parametre olarak iki tamsayı HashSet'i alan ve her iki kümenin birleşimini içeren yeni bir HashSet döndüren UnionSets adlı bir metot oluşturun.

Girdi okuma ve çıktı yazdırma işlemleri sizin için zaten ele alındı: UnionSets metot gövdesini uygulamaya odaklanın.

Kendin dene

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

class Program
{
    public static HashSet<int> UnionSets(HashSet<int> set1, HashSet<int> set2)
    {
        // Kodunuzu buraya yazın
        return null;
    }
    
    static void Main(string[] args)
    {
        // İlk kümenin formatını kontrol etmek için ilk satırı oku
        string line1 = Console.ReadLine();
        HashSet<int> set1 = new HashSet<int>();
        
        // İlk kümenin JSON dizi formatında olup olmadığını kontrol et
        if (line1 != null && line1.StartsWith("[") && line1.EndsWith("]"))
        {
            try
            {
                // Köşeli parantezler arasındaki içeriği çıkar
                string arrayContent = line1.Substring(1, line1.Length - 2);
                
                // JSON dizi içeriğini ayrıştırmayı dene
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Varsa tırnak işaretlerini kaldır
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Tam sayı olarak ayrıştır ve kümeye ekle
                    if (int.TryParse(cleanValue, out int num))
                    {
                        set1.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing first set: {ex.Message}");
                return;
            }
        }
        else
        {
            // İlk küme için geleneksel boşlukla ayrılmış girdiyi işle
            string[] input1 = line1.Split(' ');
            foreach (string num in input1)
            {
                if (int.TryParse(num, out int parsedNum))
                {
                    set1.Add(parsedNum);
                }
            }
        }
        
        // İkinci kümenin formatını kontrol etmek için ikinci satırı oku
        string line2 = Console.ReadLine();
        HashSet<int> set2 = new HashSet<int>();
        
        // İkinci kümenin JSON dizi formatında olup olmadığını kontrol et
        if (line2 != null && line2.StartsWith("[") && line2.EndsWith("]"))
        {
            try
            {
                // Köşeli parantezler arasındaki içeriği çıkar
                string arrayContent = line2.Substring(1, line2.Length - 2);
                
                // JSON dizi içeriğini ayrıştırmayı dene
                string[] values = Regex.Split(arrayContent, @",\s*");
                foreach (string value in values)
                {
                    // Varsa tırnak işaretlerini kaldır
                    string cleanValue = value.Trim();
                    if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
                    {
                        cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
                    }
                    
                    // Tam sayı olarak ayrıştır ve kümeye ekle
                    if (int.TryParse(cleanValue, out int num))
                    {
                        set2.Add(num);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing second set: {ex.Message}");
                return;
            }
        }
        else
        {
            // İkinci küme için geleneksel boşlukla ayrılmış girdiyi işle
            string[] input2 = line2.Split(' ');
            foreach (string num in input2)
            {
                if (int.TryParse(num, out int parsedNum))
                {
                    set2.Add(parsedNum);
                }
            }
        }
        
        // Birleşimi al ve sonucu yazdır
        HashSet<int> unionSet = UnionSets(set1, set2);
        Console.WriteLine(string.Join(" ", unionSet.OrderBy(x => x)));
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C# derleyicisi