0
私はサイズがn
の2Dの正方形のリストを持っています。私の目的は、ヘビの形をしてそれを走らせることです。たとえば、スネークで2Dリストを表示する
array = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
結果は[1, 2, 3, 6, 9, 8, 7, 4, 5]
である必要があります。
私はサイズがn
の2Dの正方形のリストを持っています。私の目的は、ヘビの形をしてそれを走らせることです。たとえば、スネークで2Dリストを表示する
array = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
結果は[1, 2, 3, 6, 9, 8, 7, 4, 5]
である必要があります。
def spiral_array(arr):
if arr == []: return []
up = 0; left = 0
down = len(arr)-1
right = len(arr[0])-1
direct = 0 # 0: go right 1: go down 2: go left 3: go up
res = []
while True:
if direct == 0:
for i in range(left, right+1):
res.append(arr[up][i])
up += 1
if direct == 1:
for i in range(up, down+1):
res.append(arr[i][right])
right -= 1
if direct == 2:
for i in range(right, left-1, -1):
res.append(arr[down][i])
down -= 1
if direct == 3:
for i in range(down, up-1, -1):
res.append(arr[i][left])
left += 1
if up > down or left > right: return res
direct = (direct+1) % 4
array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(spiral_array(array)) # [1, 2, 3, 6, 9, 8, 7, 4, 5]
感謝。 –
ようこそ、それがあなたを助けてくれることを願っています。それが意味をなさない場合や、それがどうやって、そしてなぜそれがうまくいくのかを理解するために、より多くの情報が必要な場合は、 – davedwards