أساسيات المصفوفات ثنائية الأبعاد
جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy — الدرس 10 من 56.
المصفوفة ثنائية الأبعاد (2D array) هي مصفوفة تكون عناصرها مصفوفات بحد ذاتها. تمثل كل مصفوفة داخلية صفاً في شبكة.
cinema = [
[true, true], # الصف 0
[false, true] # الصف 1
]يمثل هذا شبكة 2×2، صفين، كل منهما بعمودين.
لإنشاء شبكة 3×4 من الأعداد الصحيحة:
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]يمكنك بناء شبكة مملوءة بقيمة افتراضية باستخدام Array.new مرتين، مرة للصفوف ومرة للأعمدة:
grid = Array.new(3) { Array.new(4, 0) }
# 3 صفوف، 4 أعمدة، جميعها أصفارصيغة الكتلة البرمجية ({ Array.new(4, 0) }) مهمة، فهي تنشئ مصفوفة داخلية جديدة لكل صف. وبدونها، سيشير كل صف إلى نفس المصفوفة.
التحدي
سهلاقرأ عددين صحيحين (سطران من الإدخال): rows و cols. قم ببناء مصفوفة ثنائية الأبعاد (2D array) بهذا الحجم حيث تساوي كل خلية row * cols + col + 1 (بحيث يبدأ الصف الأول بالعد من 1، وتتم تعبئة الشبكة بترتيب القراءة).
اطبع الشبكة باستخدام inspect على المصفوفة الخارجية، في سطر واحد.
بالنسبة للمدخلات 2 ثم 3، يكون المخرج هو:
[[1, 2, 3], [4, 5, 6]]ورقة مرجعية
المصفوفات ثنائية الأبعاد هي مصفوفات من المصفوفات، حيث كل مصفوفة داخلية تمثل صفاً:
matrix = [
[1, 2, 3],
[4, 5, 6]
]قم ببناء شبكة بقيمة افتراضية باستخدام Array.new مع كتلة (تضمن الكتلة أن كل صف عبارة عن مصفوفة منفصلة):
grid = Array.new(3) { Array.new(4, 0) }
# 3 صفوف، 4 أعمدة، جميعها أصفارجرّب بنفسك
rows = gets.to_i
cols = gets.to_i
# TODO: قم ببناء الشبكة وطباعتها باستخدام inspect
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق العمليات
1السلاسل النصية بعمق
نظرة عامة على دوال السلاسل النصيةتضمين النصوص (String Interpolation)التكرار عبر السلاسل النصيةالتقسيم والربط (Split و Join)مراجعة - نساج النصوص4Blocks و Procs و Lambdas
ما هو الـ Block؟do..end مقابل الأقواس { }الكلمة المفتاحية yieldمعاملات الـ BlockProcs و Lambdasمراجعة - Custom Iterator مخصص7Hashes - الجزء الثاني
Hash.new مع القيم الافتراضيةالتكرار عبر الـ Hashesالـ Hashes المتداخلةالدمج والتحويلمراجعة - عداد التكرار10مشروع - سجلات الطلاب
نظرة عامة على المشروعإضافة طالب5قوة الـ Enumerable
Select و Rejectتسلسل MapReduce / Injectcount، all?، any?، none?group_by و partitionsort_by، min_by، max_byمراجعة - Data Pipeline3المصفوفات ثنائية الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالتكرار عبر المصفوفات ثنائية الأبعادالأنماط الشائعة في المصفوفات ثنائية الأبعادمراجعة - عمليات المصفوفات