RosettaCodeData/Task/Zig-zag-matrix/Crystal/zig-zag-matrix.cr
2026-02-01 16:33:20 -08:00

12 lines
321 B
Crystal

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