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اختبر نفسك

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

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

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