|
def zigzag(n)
|
|
(seq=*0...n).product(seq)
|
|
.sort_by {|x,y| [x+y, (x+y).even? ? y : -y]}
|
|
.each_with_index.sort.map(&:last).each_slice(n).to_a
|
|
end
|
|
|
|
def print_matrix(m)
|
|
format = "%#{m.flatten.max.to_s.size}d " * m[0].size
|
|
puts m.map {|row| format % row}
|
|
end
|
|
|
|
print_matrix zigzag(5)
|