رياضيات - الفرق المتناظر
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 32 من 59.
إن الفرق المتماثل لمجموعتين هو مجموعة جديدة تحتوي على العناصر الموجودة في أي من المجموعتين ولكن ليس في كلتيهما. في لغة جافا، يمكنك حسابه من خلال:
- إيجاد الفرق للمجموعة الأولى بالنسبة للمجموعة الثانية.
- إيجاد الفرق للمجموعة الثانية بالنسبة للمجموعة الأولى.
- الجمع بين هذين الاختلافين.
أولاً، قم بإنشاء اثنين من HashSet:
HashSet<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);
HashSet<Integer> set2 = new HashSet<>();
set2.add(2);
set2.add(3);
set2.add(4);بعد ذلك، قم بإزالة القيم المتشابهة:
HashSet<Integer> diff1 = new HashSet<>(set1);
diff1.removeAll(set2); // diff1 هو [1]
HashSet<Integer> diff2 = new HashSet<>(set2);
diff2.removeAll(set1); // diff2 هو [4]بعد ذلك، قم بإزالة الاختلافين:
diff1.addAll(diff2); // diff1 هو 1, 4]التحدي
سهلأنشئ دالة باسم <strong>symmetricDifference</strong> تأخذ اثنين من HashSets من الأعداد الصحيحة كمدخلات، وتحسب الفرق التناظري بينهما، وتطبعه بالتنسيق التالي:
Symmetric Difference: [elements]ورقة مرجعية
يحتوي الفرق المتماثل (symmetric difference) لمجموعتين على العناصر الموجودة في أي من المجموعتين ولكن ليس في كلتيهما.
لحساب الفرق المتماثل في Java:
- أوجد فرق المجموعة الأولى بالنسبة للمجموعة الثانية
- أوجد فرق المجموعة الثانية بالنسبة للمجموعة الأولى
- اجمع هذين الفرقين معاً
HashSet<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);
HashSet<Integer> set2 = new HashSet<>();
set2.add(2);
set2.add(3);
set2.add(4);
// Remove common elements from each set
HashSet<Integer> diff1 = new HashSet<>(set1);
diff1.removeAll(set2); // diff1 is [1]
HashSet<Integer> diff2 = new HashSet<>(set2);
diff2.removeAll(set1); // diff2 is [4]
// Combine the differences
diff1.addAll(diff2); // diff1 is [1, 4]جرّب بنفسك
import java.util.HashSet;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class Main {
public static void symmetricDifference(HashSet<Integer> set1, HashSet<Integer> set2) {
// اكتب كودك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ([1,2,3] اقرأ سلسلة نصية بتنسيق JSON للمجموعة الأولى (مثلاً
String set1String = scanner.nextLine();
// ([2,3,4] اقرأ سلسلة نصية بتنسيق JSON للمجموعة الثانية (مثلاً
String set2String = scanner.nextLine();
Type setType = new TypeToken<HashSet<Integer>>(){}.getType();
HashSet<Integer> set1 = new Gson().fromJson(set1String, setType);
HashSet<Integer> set2 = new Gson().fromJson(set2String, setType);
symmetricDifference(set1, set2);
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap5HashSet الجزء الثاني
رياضيات - اتحاد الـ HashSetsرياضيات - تقاطع الـ HashSetرياضيات - فرق المجموعاترياضيات - الفرق المتناظرالمجموعات الجزئية والشاملةالتكرار عبر المجموعات3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم