أنماط المصفوفات ثنائية الأبعاد الشائعة
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 8 من 59.
غالباً ما تظهر أنماط معينة عند التعامل مع المصفوفات ثنائية الأبعاد (2D arrays). يمكن أن يساعدك التعرف على هذه الأنماط في حل المشكلات بكفاءة أكبر. إليك بعض الأنماط الشائعة:
التنقل القطري (Diagonal Traversal)
الوصول إلى العناصر التي يتساوى فيها دليلا الصف والعمود (matrix[i][i]) يعطيك القطر الرئيسي (Main). بالنسبة للقطر المعاكس (Anti)، فإن مجموع دليلي الصف والعمود يساوي حجم المصفوفة ناقص 1 (matrix[i][size - 1 - i]).
على سبيل المثال:
1 2 3
4 5 6
7 8 9المرور عبر القطر الرئيسي (matrix[i][i]): 1, 5, 9
المرور عبر القطر المعاكس (matrix[i][size - 1 - i]): 3, 5, 7
Border Traversal
الانتقال عبر عناصر الإطار (border)، تقوم بتثبيت أحد الفهارس (0 أو size - 1) مع التكرار على الفهرس الآخر.
للوصول إلى الحد العلوي (Top border)، يمكنك التكرار عبر الأعمدة مع تثبيت مؤشر الصف عند 0.
على سبيل المثال:
1 2 3 4
5 6 7 8
9 10 11 12عناصر الحدود: 1، 2، 3، 4، 8، 12، 11، 10، 9، 5 (الجميع باستثناء 6 و 7)
التحدي
سهلقم بإنشاء دالة باسم printPatterns تأخذ مصفوفة مربعة ثنائية الأبعاد من الأعداد الصحيحة (matrix) كمدخلات وتقوم بطباعة الأنماط التالية:
MainDiagonal: طباعة جميع العناصر التي يتساوى فيها فهرس الصف مع فهرس العمود.Anti-Diagonal: طباعة جميع العناصر التي يكون فيها مجموع فهرسي الصف والعمود مساوياً لحجم الـmatrixناقص 1.Borders: طباعة عناصر الحدود الـTop، وBottom، وLeft، وRightللـmatrix.
يجب أن يبدو المخرجات بالشكل التالي:
Main Diagonal: 1 6 11 16
Anti-Diagonal: 4 7 10 13
Top Border: 1 2 3 4
Bottom Border: 13 14 15 16
Left Border: 1 5 9 13
Right Border: 4 8 12 16جرّب بنفسك
// اكتب الكود الخاص بك داخل الـ class فقط. لا تكتب main() أو أي كود خارج هذا الـ class.
class PrintPatterns {
public static void printPatterns(int[][] matrix) {
// اكتب كودك هنا
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم