Epic - Spiral Matrix

1125 단어 Matrix
Given aNXN matrix, starting from the upper right corner of the matrix start printingvalues in a counter-clockwise fashion. 
E.g.: Consider N = 4 
Matrix= {a, b, c, d, 
        e, f, g, h, 
        i, j, k, l, 
        m, n, o, p} 
Your function should output: dcbaeimnoplhgfjk
4 단 으로 나 눠 서 index 를 하나씩 빼 서 n / 2 회 실행 합 니 다.
n 을 홀수 로 하고 마지막 에 중간 값 을 추가 합 니 다.
def spiral(a)

  ans, n = [], a.length

  n/2.times do |k|

    (k...n-k-1).each {|i| ans << a[k][i]}

    (k...n-k-1).each {|i| ans << a[i][n-k-1]}

    (k...n-k-1).each {|i| ans << a[n-k-1][-i-1]}

    (k...n-k-1).each {|i| ans << a[-i-1][k]}

  end

  ans << a[n/2][n/2] if n%2 == 1

  ans

end

좋은 웹페이지 즐겨찾기