Menu
Coddy logo textTech

Yaygın 2B Örüntüler

Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 13 / 56.

Bazı 2B dizi işlemleri o kadar sık karşınıza çıkar ki onları adlarıyla tanımaya değer.

Her hücreyi topla: ızgarayı 1B bir diziye düzleştir ve sum çağrısı yap:

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

Ana köşegen: satır indeksinin sütun indeksine eşit olduğu hücreler (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

Transpoze: Ruby'de bu özellik yerleşik olarak bulunur. Satırlar sütunlara, sütunlar da satırlara dönüşür:

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

Bunları adlarıyla bilmek, aynı iç içe döngüleri yeniden yazmaktan kurtarır.

challenge icon

Görev

Kolay

Kare matrix (n × n) verilmiştir. Teorideki örüntülerden türetilen üç satır yazdırın:

  1. Anti-diagonal sum: <n>; r + c == matrix.length - 1 olan hücrelerin toplamı
  2. Column sums: [...]; her sütunun toplamı. İpucu: önce transpoze edin, ardından her satırı toplamına eşleyin ve sonra inspect edin
  3. Symmetric: true veya false: matris kendi transpozuna eşit mi?

Varsayılan matris için çıktı şöyledir:

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

Kendin dene

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

# TODO: anti-diagonal sum, column sums via transpose, symmetric check
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Ruby derleyicisi