الوصول إلى عناصر المصفوفات ثنائية الأبعاد
جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy — الدرس 11 من 56.
لقراءة خلية واحدة أو تحديثها في مصفوفة ثنائية الأبعاد، قم بربط عمليتي بحث عن الفهرس: الأولى تختار الصف، والثانية تختار العمود.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (أعلى اليسار)
puts matrix[1][2] # 60 (الصف 1، العمود 2)
puts matrix[2][0] # 70 (أسفل اليسار)يستخدم تحديث الخلية نفس الصيغة على الجانب الأيسر:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]استعلامان مفيدان عن الشكل:
puts matrix.length # 3 (عدد الصفوف)
puts matrix[0].length # 3 (الأعمدة في الصف 0)تبدأ الفهارس من 0 وتصل إلى length - 1. والذهاب إلى ما بعد النهاية يعيد nil بدلاً من إثارة خطأ.
التحدي
مبتدئالمصفوفة ثنائية الأبعاد matrix معطاة. اقرأ ثلاثة أعداد صحيحة (ثلاثة أسطر): r1، و c1، ثم v. ثم:
- اطبع القيمة الموجودة في
matrix[r1][c1] - اجعل
matrix[r1][c1] = v - اطبع كامل المصفوفة
matrixالمحدثة باستخدامinspect
للمدخلات 1 / 2 / 99، المخرجات هي:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]ورقة مرجعية
الوصول إلى الخلايا وتحديثها في مصفوفة ثنائية الأبعاد باستخدام الفهارس المتسلسلة [row][col]:
matrix = [
[10, 20, 30],
[40, 50, 60]
]
puts matrix[1][2] # 60
matrix[1][2] = 99 # تحديث الخلية
puts matrix.inspect # [[10, 20, 30], [40, 50, 99]]استعلامات الشكل:
matrix.length # عدد الصفوف
matrix[0].length # عدد الأعمدة في الصف 0تبدأ الفهارس من 0؛ الوصول إلى خارج الحدود يعيد nil.
جرّب بنفسك
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: اطبع matrix[r1][c1]، ثم قم بتعيين v، ثم اطبع المصفوفة كاملة
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق العمليات
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المصفوفات ثنائية الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالتكرار عبر المصفوفات ثنائية الأبعادالأنماط الشائعة في المصفوفات ثنائية الأبعادمراجعة - عمليات المصفوفات