Yaygın 2D Dizi Desenleri
Coddy'nin JavaScript Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 13 / 65.
2D dizilerle çalışırken belirli kalıplar sıklıkla karşımıza çıkar. Bu kalıpları tanımak, problemleri daha verimli bir şekilde çözmenize yardımcı olabilir. İşte birkaç yaygın kalıp:
Köşegen Geçişi
Satır dizininin sütun dizinine eşit olduğu elemanlara erişmek (matrix[i][i]) size ana köşegeni verir. Ters köşegen için, satır ve sütun dizinlerinin toplamı dizinin boyutunun 1 eksiğine eşittir (matrix[i][size - 1 - i]).
Örneğin:
1 2 3
4 5 6
7 8 9Ana köşegen (matrix[i][i]) boyunca gezinme: 1, 5, 9
Ters köşegen (matrix[i][size - 1 - i]) boyunca gezinme: 3, 5, 7
Kenar Gezinme
Kenar elemanlarını gezmek için, diğeri üzerinde iterasyon yaparken bir indeksi sabit tutarsınız (0 veya size - 1).
Üst kenara erişmek için, satır indeksi 0'da sabitlenmiş şekilde sütunlar üzerinde döngü kurarsınız.
Örneğin:
1 2 3 4
5 6 7 8
9 10 11 12kenar öğeleri: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (6 ve 7 hariç tümü)
Görev
KolayGirdi olarak tam sayılardan oluşan kare bir 2D dizi (matrix) alan ve aşağıdaki desenleri yazdıran printPatterns adında bir fonksiyon oluşturun:
- Main Diagonal: Satır dizininin sütun dizinine eşit olduğu tüm öğeleri yazdırın.
- Anti-Diagonal: Satır ve sütun dizinlerinin toplamının matris boyutunun 1 eksiğine eşit olduğu tüm öğeleri yazdırın.
- Borders: Matrisin üst, alt, sol ve sağ kenarlarındaki öğeleri yazdırın.
Çıktı şu şekilde görünmelidir:
Main Diagonal: 1 6 11 16
Anti-Diagonal: 4 7 10 13
Top Border: 1 2 3 4
Bottom Border: 13 14 15 16
Left Border: 1 5 9 13
Right Border: 4 8 12 16Kopya kağıdı
Yaygın 2B dizi gezinme desenleri:
Diyagonal Gezinme
Ana diyagonal: matrix[i][i] (satır indeksi sütun indeksine eşittir)
Ters diyagonal: matrix[i][size - 1 - i] (satır ve sütun indekslerinin toplamı size - 1'e eşittir)
1 2 3
4 5 6
7 8 9Ana diyagonal: 1, 5, 9
Ters diyagonal: 3, 5, 7
Kenar Gezinme
Diğeri üzerinde döngü kurarken bir indeksi sabit tutun (0 veya size - 1):
- Üst kenar: satır indeksi = 0, sütunları gez
- Alt kenar: satır indeksi = size - 1, sütunları gez
- Sol kenar: sütun indeksi = 0, satırları gez
- Sağ kenar: sütun indeksi = size - 1, satırları gez
Kendin dene
function printPatterns(matrix) {
let mainDiagonal = []
// YAPILACAK: Uygula
console.log("Main Diagonal:", mainDiagonal.join(" "));
let antiDiagonal = [];
// YAPILACAK: Uygula
console.log("Anti-Diagonal:", antiDiagonal.join(" "));
let topBorder = [];
// YAPILACAK: Uygula
console.log("Top Border:", topBorder.join(" "));
let bottomBorder = [];
// YAPILACAK: Uygula
console.log("Bottom Border:", bottomBorder.join(" "));
let leftBorder = [];
// YAPILACAK: Uygula
console.log("Left Border:", leftBorder.join(" "));
let rightBorder = [];
// YAPILACAK: Uygula
console.log("Right Border:", rightBorder.join(" "));
}
// Fonksiyon dışına hiçbir şey yazmayınBu 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 TemelleriString Üzerinde YinelemeTemplate LiteralsString MetotlarıÖzet - String Weaver4JSON Bölüm 2
JSON Üzerinde Yinelemeİç İçe Geçmiş JSONJSON Optional ChainingSığ ve Derin KopyalamaÖzet - Bisiklet MağazasıÖzet - Güneş Sistemi7Kütüphane Yönetim Sistemi
Projeye Genel BakışKitap Ekleme10Festival Sistemi Yönetimi
Projeye Genel BakışFilm ve Mekan Ekle2Çok Boyutlu Diziler
2D Dizi Temelleri2D Dizi Elemanlarına Erişme2D Dizilerle İç İçe DöngülerÖzet - 2D DizilerMatris Toplama ve ÇıkarmaDüzensiz Diziler3D Diziler ve ÖtesiYaygın 2D Dizi DesenleriÖzet - Diziler Hakkında Her Şey5Kümeler Bölüm 1
Küme Nedir?Kümeler Üzerinde YinelemeEleman EklemeEleman SilmeEleman Varlığını Kontrol EtmeBoyut ve Boş Olma DurumuKopyalama ve TemizlemeÖzet - Kümelerin Temelleri8Diziler: İlginç Konular
Dizi Yapı SökümüDizilerde Spread SözdizimiSeyrek DizilerÖzet - Diziler Workshop3JSON Bölüm 1
JSON Nedir?Anahtarın Varlığını Kontrol EtmeNesne MetotlarıSpread Operatörü Bölüm 1Spread Operatörü Bölüm 2Anahtarları KaldırmaÖzet - JSON Anahtarlarını Yönetme