Menu
CoddyTech

2次元配列のよくあるパターン

CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 17/78。

グリッドをたどる方法には、何度も登場するものがいくつかあります。これらの例では、サイズが n の正方形グリッドを使います。

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

対角線。主対角線では、行インデックスは列インデックスと等しくなります: grid[i][i]。右上隅から左下隅へ伸びる副対角線では、列は n - 1 - i です。ループは1つで十分です:

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

行、列、境界。一方のインデックスを固定し、もう一方をループします。最上段の行はgrid[0]、最下段の行はgrid[n - 1]です。列ではcを固定し、行を変化させます。

var left_total := 0
for r in range(n):
	left_total += grid[r][0] # 左端の列: 1 + 4 + 7
print(left_total) # 12

隣接マス。グリッドゲームでは、ある位置の周囲のセル(上、下、左、右)を見ることがよくあります。4つの移動量を[row, column]のペアの配列として格納し、グリッドから外れる移動量はスキップします。

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] は上端にあるため、隣接するセルは3つあります: 5、1、3。

challenge icon

チャレンジ

簡単

gridという1つのパラメーターを持つprint_patternsという名前の関数を書いてください。gridは整数の正方形の2次元配列です(grid: Arrayとして宣言してください)。値を単一のスペースで区切って、6行を出力します。

  1. Main diagonal: と、行インデックスと列インデックスが等しいセル
  2. Anti-diagonal: と、右上から左下の角までのセル
  3. Top row: と、最初の行
  4. Bottom row: と、最後の行
  5. Left column: と、上から下への最初の列
  6. Right column: と、上から下への最後の列

グリッドが[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]の場合、出力は次のとおりです。

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

テストではprint_patterns()を呼び出します。自分で呼び出さず、何も返さないでください。

自分で試してみよう

func print_patterns(grid: Array):
	# ここにコードを書いてください
	pass
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ