Round-robin tournament schedule: Difference between revisions

Created Nim solution.
(Added Ada solution)
(Created Nim solution.)
Line 519:
Round 6: (Bye - 7) (1 - 6) (2 - 5) (3 - 4)
Round 7: (Bye - 4) (3 - 5) (2 - 6) (1 - 7)
</pre>
 
=={{header|Nim}}==
<syntaxhighlight lang="Nim">import std/[algorithm, sequtils, strformat]
 
proc roundRobin(n: Positive) =
assert n >= 2
var n = n
var list1 = toSeq(2..n)
if n mod 2 == 1:
list1.add 0 # 0 denotes a "bye".
inc n
for r in 1..<n:
stdout.write &"Round {r:2}:"
let list2 = 1 & list1
for i in 0..<(n div 2):
stdout.write &" ({list2[i]:>2} vs {list2[n - i - 1]:<2})"
echo()
list1.rotateLeft(-1)
 
echo "Round robin for 12 players:\n"
roundRobin(12)
echo "\n\nRound robin for 5 players (0 denotes a bye) :\n"
roundRobin(5)
</syntaxhighlight>
 
{{out}}
<pre>Round robin for 12 players:
 
Round 1: ( 1 vs 12) ( 2 vs 11) ( 3 vs 10) ( 4 vs 9 ) ( 5 vs 8 ) ( 6 vs 7 )
Round 2: ( 1 vs 11) (12 vs 10) ( 2 vs 9 ) ( 3 vs 8 ) ( 4 vs 7 ) ( 5 vs 6 )
Round 3: ( 1 vs 10) (11 vs 9 ) (12 vs 8 ) ( 2 vs 7 ) ( 3 vs 6 ) ( 4 vs 5 )
Round 4: ( 1 vs 9 ) (10 vs 8 ) (11 vs 7 ) (12 vs 6 ) ( 2 vs 5 ) ( 3 vs 4 )
Round 5: ( 1 vs 8 ) ( 9 vs 7 ) (10 vs 6 ) (11 vs 5 ) (12 vs 4 ) ( 2 vs 3 )
Round 6: ( 1 vs 7 ) ( 8 vs 6 ) ( 9 vs 5 ) (10 vs 4 ) (11 vs 3 ) (12 vs 2 )
Round 7: ( 1 vs 6 ) ( 7 vs 5 ) ( 8 vs 4 ) ( 9 vs 3 ) (10 vs 2 ) (11 vs 12)
Round 8: ( 1 vs 5 ) ( 6 vs 4 ) ( 7 vs 3 ) ( 8 vs 2 ) ( 9 vs 12) (10 vs 11)
Round 9: ( 1 vs 4 ) ( 5 vs 3 ) ( 6 vs 2 ) ( 7 vs 12) ( 8 vs 11) ( 9 vs 10)
Round 10: ( 1 vs 3 ) ( 4 vs 2 ) ( 5 vs 12) ( 6 vs 11) ( 7 vs 10) ( 8 vs 9 )
Round 11: ( 1 vs 2 ) ( 3 vs 12) ( 4 vs 11) ( 5 vs 10) ( 6 vs 9 ) ( 7 vs 8 )
 
 
Round robin for 5 players (0 denotes a bye) :
 
Round 1: ( 1 vs 0 ) ( 2 vs 5 ) ( 3 vs 4 )
Round 2: ( 1 vs 5 ) ( 0 vs 4 ) ( 2 vs 3 )
Round 3: ( 1 vs 4 ) ( 5 vs 3 ) ( 0 vs 2 )
Round 4: ( 1 vs 3 ) ( 4 vs 2 ) ( 5 vs 0 )
Round 5: ( 1 vs 2 ) ( 3 vs 0 ) ( 4 vs 5 )
</pre>
 
256

edits