2B Diziler Üzerinde Yineleme
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 12 / 56.
2 boyutlu bir dizideki her hücreyi ziyaret etmek için iki yinelemeyi iç içe yerleştirirsiniz. Dış döngü satırlar arasında gezinir; iç döngü ise o satırın sütunları arasında gezinir.
En deyimsel Ruby deseni each metodunu iki kez kullanır:
grid = [
[1, 2, 3],
[4, 5, 6]
]
grid.each do |row|
row.each do |cell|
puts cell
end
end
# 1, 2, 3, 4, 5, 6 (her biri kendi satırında)Eğer örneğin her bir hücreyi etiketlemek için satır ve sütun indekslerine de ihtiyacınız varsa, her iki seviyede de each_with_index kullanın:
grid.each_with_index do |row, r|
row.each_with_index do |cell, c|
puts "(#{r},#{c}) = #{cell}"
end
endBu stil, dizinleri elle takip etmekten daha kısa ve güvenlidir; bir satırın sonuna geçme riski yoktur.
Görev
Kolaygrid adlı 2D dizi verilmiştir (3 satır × 3 sütun tam sayı).
Her bir satır için, değeri o satırın ortalamasından kesinlikle büyük olan her hücreyi bulun. Bu tür her bir hücreyi şu formatta kendi satırına yazdırın:
(r,c) = valueİç içe each_with_index kullanın. Ortalamayı dış döngü içinde hesaplayın, böylece her satırın eşiği bağımsız olur.
Varsayılan ızgara için, kendi satır ortalamasını geçen hücreler şunlardır:
(0,1) = 8
(1,2) = 9
(2,0) = 6
(2,1) = 7Kendin dene
grid = [
[1, 8, 3],
[4, 5, 9],
[6, 7, 2]
]
# YAPILACAK: iç içe each_with_index, satır ortalamasından büyük olan hücreleri yazdır
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
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri Hattı32B Diziler
2B Dizi Temelleri2B Elemanlara Erişim2B Diziler Üzerinde YinelemeYaygın 2B ÖrüntülerTekrar - Matris İşlemleri6Proje - Kütüphane Yöneticisi
Projeye Genel BakışKitap EkleKendi başına pratik yap: Online Ruby derleyicisi