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

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

جزء من قسم Logic & Flow في رحلة JavaScript على Coddy — الدرس 13 من 65.

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

التنقل القطري

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

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

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

ورقة مرجعية

أنماط التنقل الشائعة في المصفوفات ثنائية الأبعاد (2D array):

التنقل القطري (Diagonal Traversal)

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

القطر الثانوي (Anti-diagonal): 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) أثناء التكرار عبر الآخر:

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

جرّب بنفسك

function printPatterns(matrix) {
    let mainDiagonal = []
    // TODO: تنفيذ المهمة
    console.log("Main Diagonal:", mainDiagonal.join(" "));
    
    let antiDiagonal = [];
    // TODO: تنفيذ المهمة
    console.log("Anti-Diagonal:", antiDiagonal.join(" "));
    
    let topBorder = [];
    // TODO: تنفيذ المهمة
    console.log("Top Border:", topBorder.join(" "));
    
    let bottomBorder = [];
    // TODO: تنفيذ المهمة
    console.log("Bottom Border:", bottomBorder.join(" "));
    
    let leftBorder = [];
    // TODO: تنفيذ المهمة
    console.log("Left Border:", leftBorder.join(" "));
    
    let rightBorder = [];
    // TODO: تنفيذ المهمة
    console.log("Right Border:", rightBorder.join(" "));
}
// لا تكتب أي شيء خارج الدالة
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow