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

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

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

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

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

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

القطر الرئيسي (diagonal): الخلايا التي يساوي فيها فهرس الصف فهرس column (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: anti-diagonal sum, column sums via transpose, symmetric check
quiz iconاختبر نفسك

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

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

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