أنماط المصفوفات ثنائية الأبعاد الشائعة
جزء من قسم المنطق وتدفق التنفيذ في رحلة 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) {
// اكتب كودك هنا
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكمتدرّب بنفسك: مترجم Java عبر الإنترنت