RosettaCodeData/Task/Zig-zag-matrix/Ruby/zig-zag-matrix.rb

13 lines
290 B
Ruby

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)