Menu
CoddyTech

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 7

Satı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) # 12

Komş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.

challenge icon

Görev

Kolay

grid 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:

  1. Main diagonal: ve satır indeksinin sütun indeksine eşit olduğu hücreler
  2. Anti-diagonal: ve sağ üst köşeden sol alt köşeye kadar olan hücreler
  3. Top row: ve ilk satır
  4. Bottom row: ve son satır
  5. Left column: ve yukarıdan aşağıya ilk sütun
  6. Right 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 16

Testler 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
quiz iconKendini test et

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

Kendi başına pratik yap: Online GDScript derleyicisi