Menelusuri Array 2D
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 12 dari 56.
Untuk mengunjungi setiap sel dalam array 2D, kamu menyusun dua perulangan di dalam satu sama lain. Perulangan luar menelusuri baris, sedangkan perulangan dalam menelusuri kolom pada baris tersebut.
Pola Ruby yang paling idiomatis menggunakan each dua kali:
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 (masing-masing pada baris terpisah)Jika kamu juga memerlukan indeks baris dan kolom, misalnya untuk memberi label pada setiap sel, gunakan each_with_index pada kedua tingkat:
grid.each_with_index do |row, r|
row.each_with_index do |cell, c|
puts "(#{r},#{c}) = #{cell}"
end
endGaya ini lebih singkat dan aman daripada melacak indeks secara manual, sehingga tidak ada risiko melewati akhir baris.
Tantangan
Mudaharray 2D grid diberikan (3 baris × 3 kolom berisi bilangan bulat).
Untuk setiap baris, cari semua sel yang nilainya benar-benar lebih besar daripada rata-rata baris tersebut. Cetak setiap sel tersebut pada barisnya sendiri dengan format:
(r,c) = valueGunakan each_with_index bertingkat. Hitung rata-rata di dalam perulangan luar agar ambang batas setiap baris tidak bergantung pada baris lainnya.
Untuk grid default, sel yang nilainya lebih besar daripada rata-rata barisnya adalah:
(0,1) = 8
(1,2) = 9
(2,0) = 6
(2,1) = 7Coba sendiri
grid = [
[1, 8, 3],
[4, 5, 9],
[6, 7, 2]
]
# TODO: gunakan each_with_index bersarang, cetak sel yang nilainya > rata-rata barisnya
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Ringkasan Method StringInterpolasi StringMenelusuri StringMemisahkan dan MenggabungkanRekap: Perangkai String4Block, Proc, dan Lambda
Apa Itu Block?do..end vs Kurung KurawalKata Kunci yieldParameter BlockProc dan LambdaRangkuman, Iterator Kustom5Andalan Enumerable
Select dan RejectMerangkai MapReduce / Injectcount, all?, any?, none?group_by dan partitionsort_by, min_by, max_byRekap: Alur Data8Pengambilan Keputusan Lanjutan
Case dengan class & regexwhen dengan Banyak NilaiOperator Ternaryif / unless SebarisUlasan, Pengklasifikasi Nilai3Array 2D
Dasar Array 2DMengakses Elemen Array 2DMenelusuri Array 2DPola Umum Array 2DRekap: Operasi Matriks6Proyek: Pengelola Perpustakaan
Ikhtisar ProyekTambahkan BukuLatihan sendiri: Compiler Ruby online