Yaygın 2B Dizi Örüntüleri
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 17 / 78.
Bir ızgarada gezinmenin birkaç yolu tekrar tekrar karşımıza çıkar. Bu örneklerde n boyutunda kare bir ızgara kullanılıyor:
var grid := [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
var n := grid.size()Köşegenler. Ana köşegende satır indeksi sütun indeksine eşittir: grid[i][i]. Sağ üst köşeden sol alt köşeye uzanan ters köşegende sütun n - 1 - i olur. Tek bir döngü yeterlidir:
for i in range(n):
print(grid[i][i], " ", grid[i][n - 1 - i])1 3
5 5
9 7Satırlar, sütunlar ve kenarlıklar. Bir indeksi sabitleyin ve diğerinin üzerinden döngü kurun. Üst satır grid[0], alt satır ise grid[n - 1] olur. Satır değişirken sütun c sabit kalır:
var left_total := 0
for r in range(n):
left_total += grid[r][0] # sol sütun: 1 + 4 + 7
print(left_total) # 12Komşular. Izgara oyunlarında genellikle bir konumun çevresindeki hücrelere bakarsın: yukarı, aşağı, sola ve sağa. Dört adımı [row, column] çiftlerinden oluşan bir dizi olarak sakla ve ızgaranın dışına çıkan adımları atla:
var r := 0
var c := 1
for step in [[-1, 0], [1, 0], [0, -1], [0, 1]]:
var nr: int = r + step[0]
var nc: int = c + step[1]
if nr >= 0 and nr < n and nc >= 0 and nc < n:
print(grid[nr][nc])grid[0][1] hücresi üst kenardadır, bu yüzden 3 komşusu vardır: 5, 1 ve 3.
Görev
Kolaygrid adlı tek parametre alan print_patterns adlı bir fonksiyon yaz: kare şeklinde 2 boyutlu bir tamsayı dizisi (grid: Array olarak bildir). Değerleri tek boşluklarla ayırarak altı satır yazdırır:
Main diagonal:ve satır indeksinin sütun indeksine eşit olduğu hücrelerAnti-diagonal:ve sağ üst köşeden sol alt köşeye kadar olan hücrelerTop row:ve ilk satırBottom row:ve son satırLeft column:ve yukarıdan aşağıya ilk sütunRight column:ve yukarıdan aşağıya son sütun
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] ızgarası için çıktı şöyledir:
Main diagonal: 1 6 11 16
Anti-diagonal: 4 7 10 13
Top row: 1 2 3 4
Bottom row: 13 14 15 16
Left column: 1 5 9 13
Right column: 4 8 12 16Testler print_patterns() işlevini kendileri çağırır. Çağırmayın ve hiçbir şey döndürmeyin.
Kendin dene
func print_patterns(grid: Array):
# Kodu buraya yazın
pass
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
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi