Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

أنماط المصفوفات ثنائية الأبعاد الشائعة

جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 8 من 59.

تظهر أنماط معينة غالباً عند التعامل مع المصفوفات ثنائية الأبعاد (2D arrays). يمكن أن يساعدك التعرف على هذه الأنماط في حل المشكلات بشكل أكثر كفاءة. إليك بعض الأنماط الشائعة:

الاجتياز القطري

الوصول إلى العناصر حيث يتساوى فهرس الصف مع فهرس العمود (matrix[i][i]) يعطيك القطر الرئيسي. بالنسبة للقطر الفرعي (anti-diagonal)، فإن مجموع فهرسي الصف والعمود يساوي حجم المصفوفة ناقص 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

اجتياز الحدود

للانتقال عبر عناصر الحدود، عليك إبقاء أحد الفهارس ثابتاً (0 أو size - 1) بينما تقوم بالتكرار عبر الآخر.

للوصول إلى الحدود العلوية، يمكنك التكرار عبر الأعمدة مع تثبيت فهرس الصف عند 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)

challenge icon

التحدي

سهل

أنشئ دالة باسم printPatterns تأخذ مصفوفة مربعة ثنائية الأبعاد من الأعداد الصحيحة (matrix) كمدخل وتطبع الأنماط التالية:

  1. القطر الرئيسي (Main Diagonal): اطبع جميع العناصر التي يتساوى فيها فهرس الصف مع فهرس العمود.
  2. القطر المعاكس (Anti-Diagonal): اطبع جميع العناصر التي يساوي فيها مجموع فهرسي الصف والعمود حجم المصفوفة ناقص 1.
  3. الحدود (Borders): اطبع عناصر الحدود العلوية، والسفلية، واليسرى، واليمنى للمصفوفة.

يجب أن يبدو المخرج كما يلي:

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

ورقة مرجعية

أنماط اجتياز المصفوفات ثنائية الأبعاد الشائعة:

الاجتياز القطري (Diagonal Traversal)

القطر الرئيسي: matrix[i][i] (فهرس الصف يساوي فهرس العمود)

القطر الثانوي: matrix[i][size - 1 - i] (مجموع فهرسي الصف والعمود يساوي size - 1)

1  2  3
4  5  6
7  8  9

القطر الرئيسي: 1، 5، 9
القطر الثانوي: 3، 5، 7

اجتياز الحدود (Border Traversal)

اجعل أحد الفهارس ثابتاً (0 أو size - 1) أثناء التكرار عبر الآخر:

  • الحد العلوي: row = 0، كرر عبر الأعمدة
  • الحد السفلي: row = size - 1، كرر عبر الأعمدة
  • الحد الأيسر: column = 0، كرر عبر الصفوف
  • الحد الأيمن: column = size - 1، كرر عبر الصفوف

جرّب بنفسك

// اكتب كودك فقط داخل الكلاس. لا تكتب main() أو أي كود خارج هذا الكلاس.
class PrintPatterns {
    public static void printPatterns(int[][] matrix) {
        // اكتب كودك هنا
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow