Menu
CoddyTech

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

جزء من قسم المنطق وتدفق التنفيذ في رحلة JavaScript على Coddy. الدرس 13 من 65.

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

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

يمنحك الوصول إلى العناصر التي يتساوى فيها فهرس الصف مع فهرس العمود (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

جرّب بنفسك

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اختبر نفسك

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

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت