Menu
Coddy logo textTech

Math - Intersection of HashSet

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

İki kümenin kesişimi, yalnızca her iki kümede de yer alan öğeleri içerir.

İki HashSet oluşturun:

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

Kesişimi bulmak için IntersectWith yöntemini kullanın:

set1.IntersectWith(set2);

Bu kodu çalıştırdıktan sonra, set1 şunları içerecek:

{ 3, 4, 5 }

IntersectWith metodu, çağrıldığı kümeyi değiştirir ve her iki kümede de mevcut olan öğeleri tutar.

Orijinal kümeleri değiştirmeden kesişimi içeren yeni bir küme oluşturmak için şunları yapabilirsiniz:

HashSet<int> intersection = new HashSet<int>(set1);
intersection.IntersectWith(set2);
challenge icon

Görev

Orta

FindCommonElements adında iki argüman alan bir metot oluşturun:

  • Tamsayılar içeren bir HashSet (set1)
  • Tamsayılar içeren bir HashSet (set2)

Metot, her iki kümede de bulunan öğeleri içeren yeni bir HashSet döndürmelidir (kesişim).

Kopya kağıdı

İki kümenin kesişimi, her iki kümede de bulunan öğeleri içerir.

Kesişimi bulmak için IntersectWith yöntemini kullanın:

HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4, 5 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6, 7 };
set1.IntersectWith(set2); // set1 now contains { 3, 4, 5 }

IntersectWith yöntemi orijinal kümeyi değiştirir. Orijinal kümeyi korumak için önce bir kopya oluşturun:

HashSet<int> intersection = new HashSet<int>(set1);
intersection.IntersectWith(set2);

Kendin dene

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

class Program {
    public static HashSet<int> FindCommonElements(HashSet<int> set1, HashSet<int> set2) {
        // Kodu buraya yazın
        return null;
    }
    
    static void Main(string[] args) {
        // İlk küme 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 s in input1) {
                if (int.TryParse(s, out int num)) {
                    set1.Add(num);
                }
            }
        }
        
        // İkinci küme 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 s in input2) {
                if (int.TryParse(s, out int num)) {
                    set2.Add(num);
                }
            }
        }
        
        // Ortak elemanları bul
        HashSet<int> common = FindCommonElements(set1, set2);
        
        // Sonucu yazdır (sıralı)
        Console.WriteLine(string.Join(" ", common.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