Math - Symmetric Difference
Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 65 из 66.
Симметрическая разность двух множеств содержит элементы, которые принадлежат либо одному, либо другому множеству, но не их пересечению (элементы, которые присутствуют ровно в одном из множеств).
Создайте два объекта HashSet:
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };Создайте новый HashSet для результата:
HashSet<int> symmetricDifference = new HashSet<int>(set1);Используйте метод SymmetricExceptWith для вычисления симметрической разности:
symmetricDifference.SymmetricExceptWith(set2);После выполнения приведённого выше кода множество symmetricDifference содержит:
{ 1, 2, 5, 6 }Элементы 3 и 4 присутствуют в обоих множествах, поэтому они не появляются в симметрической разности.
Задание
ЛегкоСоздайте метод с именем FindSymmetricDifference, который принимает два аргумента:
- HashSet целых чисел (
set1) - HashSet целых чисел (
set2)
Метод должен возвращать новый HashSet<int>, содержащий симметрическую разность двух множеств. Остальная часть программы (чтение ввода, сортировка и печать результатов) уже предоставлена для вас.
Шпаргалка
Симметрическая разность двух множеств содержит элементы, которые находятся либо в одном множестве, либо в другом, но не в обоих (элементы, которые присутствуют ровно в одном из множеств).
Чтобы найти симметрическую разность, создайте новое HashSet из одного множества и используйте SymmetricExceptWith():
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };
HashSet<int> symmetricDifference = new HashSet<int>(set1);
symmetricDifference.SymmetricExceptWith(set2);Результат: { 1, 2, 5, 6 } (элементы 3 и 4 исключены, потому что они присутствуют в обоих множествах)
Попробуйте сами
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
{
// Напишите свой код здесь
}
static void Main(string[] args)
{
string[] input1 = Console.ReadLine().Split(',');
string[] input2 = Console.ReadLine().Split(',');
HashSet<int> set1 = new HashSet<int>();
HashSet<int> set2 = new HashSet<int>();
foreach (string s in input1)
{
if (int.TryParse(s.Trim(), out int num))
{
set1.Add(num);
}
}
foreach (string s in input2)
{
if (int.TryParse(s.Trim(), out int num))
{
set2.Add(num);
}
}
HashSet<int> result = FindSymmetricDifference(set1, set2);
// Вывести результат в порядке возрастания
int[] orderedResult = result.OrderBy(x => x).ToArray();
foreach (int num in orderedResult)
{
Console.WriteLine(num);
}
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety9HashMap Part 1
What is a HashMap?Declare a HashMapCheck If Key ExistsAccessing ValuesModifying DictionariesRecap - HashMap12HashSet Part 2
Math - Union of HashSetsMath - Intersection of HashSetMath - Set DifferenceMath - Symmetric DifferenceIterating Over Sets