أنماط شائعة للمصفوفات ثنائية الأبعاد
جزء من قسم المنطق وتدفق التنفيذ في رحلة 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)
التحدي
سهلأنشئ دالة باسم printPatterns تأخذ مصفوفة ثنائية الأبعاد مربعة من الأعداد الصحيحة (matrix) كمدخل، وتطبع الأنماط التالية:
- القطر الرئيسي: اطبع جميع العناصر التي يكون فيها فهرس الصف مساويًا لفهرس العمود.
- القطر الثانوي: اطبع جميع العناصر التي يساوي فيها مجموع فهرسي الصف والعمود حجم المصفوفة ناقص 1.
- الحدود: اطبع عناصر الحدود العلوية والسفلية واليسرى واليمنى للمصفوفة.
ينبغي أن يبدو الناتج كما يلي:
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(" "));
}
// لا تكتب أي شيء خارج الدالةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بالتفصيل
أساسيات السلاسل النصيةالتكرار على السلاسل النصيةالقوالب النصيةدوال السلاسل النصيةمراجعة - ناسج السلاسل النصية2المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة: المصفوفات ثنائية الأبعادجمع المصفوفات وطرحهاالمصفوفات متعرجة الأبعادالمصفوفات ثلاثية الأبعاد وما بعدهاأنماط شائعة للمصفوفات ثنائية الأبعادمراجعة: كل ما يتعلق بالمصفوفات5المجموعات - الجزء الأول
ما هي المجموعة؟التكرار على عناصر المجموعةإضافة عنصرإزالة عنصرالتحقق من وجود عنصرالحجم والتحقق من الفراغالنسخ والمسحمراجعة - أساسيات المجموعات8موضوعات شيقة حول المصفوفات
تفكيك المصفوفاتصياغة الانتشار في المصفوفاتالمصفوفات المتناثرةمراجعة - ورشة عمل حول المصفوفات3JSON الجزء 1
ما هو JSON؟التحقق من وجود المفتاحطرق الكائنعامل الانتشار الجزء 1عامل الانتشار الجزء 2حذف المفاتيحمراجعة - معالجة المفاتيح في JSONتدرّب بنفسك: مترجم JavaScript عبر الإنترنت