Round-robin tournament schedule: Difference between revisions

(→‎{{header|Wren}}: Simplified.)
Line 186:
<lang ecmascript>import "./fmt" for Fmt
 
var rotateRightrotate = Fn.new { |lst|
var last = lst[-1]
for (i in lst.count-1..1) lst[i] = lst[i-1]
lst[0] = last
}
 
var rotateLeft = Fn.new { |lst|
var first = lst[0]
for (i in 1...lst.count) lst[i-1] = lst[i]
lst[-1] = first
}
 
var roundRobin = Fn.new { |n|
var lst1lst = (2..n).toList
var lst2 = (n..2).toList
var rounds = n - 1
if (n % 2 == 1) {
lst1lst = lst1lst + [0] // 0 denotes a bye
lst2 = [0] + lst2 // 0 denotes a bye
rounds = n
n = n + 1
}
var n2 = rounds / 2
for (round in 1..rounds) {
Fmt.write("Round $2d", round)
var lst3lst2 = [1] + lst1lst
for (i in 0...n2) Fmt.write(" ($2d vs $-2d)", lst3lst2[i], lst2[n - 1 - i])
System.print()
rotateRightrotate.call(lst1lst)
rotateLeft.call(lst2)
}
}
9,482

edits