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

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

جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy — الدرس 13 من 56.

تظهر بعض عمليات المصفوفات ثنائية الأبعاد (2D-array) بشكل متكرر لدرجة أنها تستحق التعرف عليها بأسمائها.

جمع كل خلية: قم بتسطيح الشبكة إلى مصفوفة أحادية البعد واستدعِ sum:

grid = [[1, 2], [3, 4]]
puts grid.flatten.sum  # 10

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

matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

(0...matrix.length).each do |i|
  puts matrix[i][i]
end
# 1, 5, 9

Transpose: لغة Ruby تحتوي على هذه الميزة بشكل مدمج. تصبح الصفوف أعمدة والعكس صحيح:

matrix.transpose
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

معرفة هذه الأسماء توفر عليك عناء إعادة كتابة نفس الحلقات المتداخلة.

challenge icon

التحدي

سهل

المصفوفة المربعة matrix معطاة (n × n). اطبع ثلاثة أسطر، جميعها مشتقة من الأنماط الموجودة في النظرية:

  1. Anti-diagonal sum: <n>، وهو مجموع الخلايا حيث r + c == matrix.length - 1
  2. Column sums: [...]، وهو مجموع كل عمود. تلميح: قم بإجراء عملية التبديل (transpose) أولاً، ثم قم بتحويل (map) كل صف إلى مجموعه، ثم استخدم inspect
  3. Symmetric: true أو false: هل المصفوفة مساوية لمنقولها (transpose)؟

بالنسبة للمصفوفة الافتراضية، يكون الناتج هو:

Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: false

جرّب بنفسك

matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

# TODO: مجموع القطر الثانوي، مجموع الأعمدة عبر المنقول، التحقق من التماثل
quiz iconاختبر نفسك

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

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