RosettaCodeData/Task/Spiral-matrix/Ruby/spiral-matrix-2.rb
2015-02-20 00:35:01 -05:00

13 lines
354 B
Ruby

n = 5
m = Array.new(n){Array.new(n)}
pos, side = -1, n
for i in 0 .. (n-1)/2
(0...side).each{|j| m[i][i+j] = (pos+=1) }
(1...side).each{|j| m[i+j][n-1-i] = (pos+=1) }
side -= 2
side.downto(0) {|j| m[n-1-i][i+j] = (pos+=1) }
side.downto(1) {|j| m[i+j][i] = (pos+=1) }
end
fmt = "%#{(n*n-1).to_s.size}d " * n
puts m.map{|row| fmt % row}