Menu
CoddyTech

Pola Umum Array 2D

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 17 dari 78.

Beberapa cara menelusuri grid sering kali muncul berulang kali. Contoh-contoh ini menggunakan grid persegi berukuran n:

var grid := [
	[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]
]
var n := grid.size()

Diagonal. Pada diagonal utama, indeks baris sama dengan indeks kolom: grid[i][i]. Pada diagonal antik, dari sudut kanan atas ke sudut kiri bawah, indeks kolomnya adalah n - 1 - i. Satu perulangan sudah cukup:

for i in range(n):
	print(grid[i][i], " ", grid[i][n - 1 - i])
1 3
5 5
9 7

Baris, kolom, dan batas. Tetapkan satu indeks dan lakukan perulangan pada indeks lainnya. Baris teratas adalah grid[0] dan baris terbawah adalah grid[n - 1]. Kolom mempertahankan c sementara baris berubah:

var left_total := 0
for r in range(n):
	left_total += grid[r][0] # kolom kiri: 1 + 4 + 7
print(left_total) # 12

Tetangga. Dalam game grid, kamu sering melihat sel di sekitar suatu posisi: atas, bawah, kiri, dan kanan. Simpan keempat langkah itu sebagai array berisi pasangan [row, column], lalu lewati langkah yang keluar dari grid:

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])

Sel grid[0][1] berada di tepi atas, jadi memiliki 3 tetangga: 5, 1, dan 3.

challenge icon

Tantangan

Mudah

Tulis fungsi bernama print_patterns dengan satu parameter, grid: array 2D persegi berisi bilangan bulat (deklarasikan sebagai grid: Array). Fungsi ini mencetak enam baris, dengan nilai dipisahkan oleh satu spasi:

  1. Main diagonal: dan sel-sel dengan indeks baris yang sama dengan indeks kolom
  2. Anti-diagonal: dan sel-sel dari sudut kanan atas hingga sudut kiri bawah
  3. Top row: dan baris pertama
  4. Bottom row: dan baris terakhir
  5. Left column: dan kolom pertama, dari atas ke bawah
  6. Right column: dan kolom terakhir, dari atas ke bawah

Untuk grid [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]], output-nya adalah:

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

Pengujian akan memanggil print_patterns() sendiri. Jangan panggil fungsi ini, dan jangan kembalikan apa pun.

Coba sendiri

func print_patterns(grid: Array):
	# Tulis kodemu di sini
	pass
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online