RosettaCodeData/Task/Zig-zag-matrix/Sidef/zig-zag-matrix.sidef

22 lines
403 B
Text
Raw Permalink Normal View History

2016-12-05 23:44:36 +01:00
func zig_zag(w, h) {
2017-09-23 10:01:46 +02:00
var r = []
var n = 0
2016-12-05 23:44:36 +01:00
h.of { |e|
w.of { |f|
2017-09-23 10:01:46 +02:00
[e, f]
2016-12-05 23:44:36 +01:00
}
2017-09-23 10:01:46 +02:00
}.reduce('+').sort { |a, b|
2016-12-05 23:44:36 +01:00
(a[0]+a[1] <=> b[0]+b[1]) ||
(a[0]+a[1] -> is_even ? a[0]<=>b[0]
: a[1]<=>b[1])
2017-09-23 10:01:46 +02:00
}.each { |a|
r[a[1]][a[0]] = n++
2016-12-05 23:44:36 +01:00
}
2017-09-23 10:01:46 +02:00
return r
2016-12-05 23:44:36 +01:00
}
2017-09-23 10:01:46 +02:00
zig_zag(5, 5).each { say .join('', {|i| "%4i" % i}) }