2D Elemanlara Erişim
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 11 / 56.
2 boyutlu bir dizideki tek bir hücreyi okumak veya güncellemek için iki dizin aramasını zincirleyin: birincisi satırı seçer, ikincisi sütunu seçer.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (sol üst)
puts matrix[1][2] # 60 (satır 1, sütun 2)
puts matrix[2][0] # 70 (sol alt)Bir hücreyi güncellemek, sol tarafta aynı sözdizimini kullanır:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]İki yararlı şekil sorgusu:
puts matrix.length # 3 (satır sayısı)
puts matrix[0].length # 3 (0. satırdaki sütunlar)İndeksler 0'dan başlar ve length - 1 değerine kadar gider. Sınırı aşmak, bir hata oluşturmak yerine nil döndürür.
Görev
Başlangıçmatrix adlı 2D dizi verilmiştir. Üç tam sayı okuyun (üç satır): r1, c1 ve ardından v. Ardından:
matrix[r1][c1]konumundaki değeri yazdırınmatrix[r1][c1] = vatamasını yapın- Güncellenmiş tüm
matrixyapısınıinspectkullanarak yazdırın
1 / 2 / 99 girdisi için çıktı şöyledir:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]Kopya kağıdı
Zincirlenmiş indeksleri [row][col] kullanarak bir 2D dizideki hücrelere erişin ve güncelleyin:
matrix = [
[10, 20, 30],
[40, 50, 60]
]
puts matrix[1][2] # 60
matrix[1][2] = 99 # hücreyi güncelle
puts matrix.inspect # [[10, 20, 30], [40, 50, 99]]Şekil sorguları:
matrix.length # satır sayısı
matrix[0].length # 0. satırdaki sütun sayısıİndeksler 0'dan başlar; sınırların dışına erişim nil döndürür.
Kendin dene
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# YAPILACAK: matrix[r1][c1] değerini yazdırın, v değerini atayın, ardından tüm matrisi yazdırın
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
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı32D Diziler
2D Dizi Temelleri2D Elemanlara Erişim2D Diziler Üzerinde YinelemeYaygın 2D KalıplarÖzet - Matris İşlemleri6Proje - Kütüphane Yöneticisi
Projeye Genel BakışKitap Ekle