12345678910111213141516171819202122232425262728293031 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Zig-zag_matrix#Sidef
- #
- func zig_zag(w, h) {
- var r = [];
- var n = 0;
- h.of { |e|
- w.of { |f|
- [e, f]
- }
- } \
- -> reduce('+') \
- -> sort { |a, b|
- (a[0]+a[1] <=> b[0]+b[1]) ||
- (a[0]+a[1] -> is_even ? a[0]<=>b[0]
- : a[1]<=>b[1])
- } \
- -> each { |a|
- r[a[1]][a[0]] = n++;
- }
- return r;
- }
- zig_zag(5, 5).each {say .join('', {|i| "%4i" % i})};
|