21 lines
403 B
Text
21 lines
403 B
Text
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}) }
|