Round-robin tournament schedule: Difference between revisions
Content added Content deleted
(→{{header|Wren}}: Simplified.) |
|||
Line 186: | Line 186: | ||
<lang ecmascript>import "./fmt" for Fmt |
<lang ecmascript>import "./fmt" for Fmt |
||
var |
var rotate = Fn.new { |lst| |
||
var last = lst[-1] |
var last = lst[-1] |
||
for (i in lst.count-1..1) lst[i] = lst[i-1] |
for (i in lst.count-1..1) lst[i] = lst[i-1] |
||
lst[0] = last |
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 roundRobin = Fn.new { |n| |
||
var |
var lst = (2..n).toList |
||
var lst2 = (n..2).toList |
|||
var rounds = n - 1 |
var rounds = n - 1 |
||
if (n % 2 == 1) { |
if (n % 2 == 1) { |
||
lst = lst + [0] // 0 denotes a bye |
|||
lst2 = [0] + lst2 // 0 denotes a bye |
|||
rounds = n |
rounds = n |
||
n = n + 1 |
|||
} |
} |
||
var n2 = rounds / 2 |
var n2 = rounds / 2 |
||
for (round in 1..rounds) { |
for (round in 1..rounds) { |
||
Fmt.write("Round $2d", round) |
Fmt.write("Round $2d", round) |
||
var |
var lst2 = [1] + lst |
||
for (i in 0...n2) Fmt.write(" ($2d vs $-2d)", |
for (i in 0...n2) Fmt.write(" ($2d vs $-2d)", lst2[i], lst2[n - 1 - i]) |
||
System.print() |
System.print() |
||
rotate.call(lst) |
|||
rotateLeft.call(lst2) |
|||
} |
} |
||
} |
} |