關於 2D 座標 About 2D Coordinate

Naming

  • grid is a m × n matrix
    m := len(grid)
    n := len(grid[0])

$$ grid = \left|
\begin{aligned}
& a_{0, 0} & \quad & a_{0, 1} & \quad & a_{0, 2} & \quad & … & \quad & a_{0, n} \\
& a_{1, 0} & \quad & a_{1, 1} & \quad & a_{1, 2} & \quad & … & \quad & a_{1, n} \\
& … & \quad & … & \quad & … & \quad & … & \quad & … \\
& a_{m, 0} & \quad & a_{m, 1} & \quad & a_{m, 2} & \quad & … & \quad & a_{m, n} \\
\end{aligned}
\right| $$

  • rowi := [grid[i][j] for j = 0, 1, 2, …, n] ≡ [ai, j for j = 0, 1, 2, …, n]
    collumj := [grid[i][j] for i = 0, 1, 2, …, m] ≡ [ai, j for i = 0, 1, 2, …, m]
  • grid[i][j] ≡ grid[y][x] ≡ grid[r][c]
  • previous, current, next_ (nr, nc)
  • DIRection (dr, dc)

確認座標合法性

Python

0 <= i/y/r < m

0 <= j/x/c < n

移動

for dr, dc in DIR:
  nr, nc = r, c
  while 0 <= nr + dr < m and \
        0 <= nc + dc < n """and another_condition""":
    nr, nc = nr + dr, nc + dc
    # ...

用 2 個變數存取 1 維陣列

for i in range(len(lst)):
  // do something with lst[i]

for i in range(width):
  for j in range(height):
    // do something with lst[j * width + i]

經典例題

Last Updated on 2023/08/22 by A1go

目錄
Bitnami