2017-02-08 8 views
0

私はサイズがnの2Dの正方形のリストを持っています。私の目的は、ヘビの形をしてそれを走らせることです。たとえば、スネークで2Dリストを表示する

array = [[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]] 

結果は[1, 2, 3, 6, 9, 8, 7, 4, 5]である必要があります。

答えて

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

ソース:ヒントのhttps://leetcode.com/problems/spiral-matrix/

+0

感謝。 –

+0

ようこそ、それがあなたを助けてくれることを願っています。それが意味をなさない場合や、それがどうやって、そしてなぜそれがうまくいくのかを理解するために、より多くの情報が必要な場合は、 – davedwards

関連する問題