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.
Görev
KolayParametre 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)));
}
}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
1Çok Boyutlu Diziler
2B Dizilere Giriş2B Tanımlama ve Başlatma2B Dizi Öğelerine Erişim2B Dizilerle İç İçe DöngülerDüzensiz DizilerYaygın Matris İşlemleriTekrar - Çok Boyutlu4Akış Denetimi Teknikleri
Erken DönüşlerKoruma KoşullarıAtlama İfadeleri (goto)Break ve Continueİç İçe Koşulları Düzleştirme7İleri Düzey Mantıksal Operatörler
Kısa Devre DeğerlendirmesiKoşullu Mantıksal OperatörlerOperatör ÖnceliğiÖzet - İleri Düzey Operatörler2İleri Düzey Karar Verme
Birden Çok KoşulKarmaşık Boolean MantığıIf ve Switch Karşılaştırmasıİç İçe Switch İfadeleriÖzet - İleri Düzey Kararlar5İstisna Yönetimi
Try-Catch Temelleriİstisna TürleriBirden Çok Catch BloğuDosyalarla ÇalışmaFinally BloğuUsing ve Try-Finally KarşılaştırmasıÖzel İstisnalarTekrar - Hata Yönetimi3Döngü İyileştirmeleri
Döngü PerformansıKarmaşık Yapılar Üzerinde İterasyonHer Döngü TürüDöngüleri Yeniden DüzenlemeÖzet - Optimize Edilmiş Döngüler6Null Yönetimi
Null Referanslarının TemelleriNullable Değer TürleriNull Kontrolü DesenleriSavunmacı ProgramlamaTekrar - Null Güvenliği9HashMap Bölüm 1
HashMap nedir?HashMap tanımlamaAnahtarın mevcut olup olmadığını kontrol etmeDeğerlere erişmeSözlükleri değiştirmeÖzet - HashMap12HashSet Bölüm 2
Matematik - HashSet'lerin BirleşimiMatematik - HashSet'in KesişimiMatematik - Küme FarkıMatematik - Simetrik FarkKümeler Üzerinde YinelemeKendi başına pratik yap: Online C# derleyicisi