Round-robin tournament schedule: Difference between revisions
Content added Content deleted
(New post.) |
(Add D) |
||
Line 437: | Line 437: | ||
Round 9: ( 1 - 2) ( 3 - 6) ( 4 - 7) ( 5 - 8) ( B - 9) |
Round 9: ( 1 - 2) ( 3 - 6) ( 4 - 7) ( 5 - 8) ( B - 9) |
||
</pre> |
</pre> |
||
=={{header|D}}== |
|||
<syntaxhighlight lang="go"> |
|||
import std.stdio; |
|||
import std.range; |
|||
import std.array; |
|||
import std.conv; |
|||
import std.algorithm; |
|||
void main() { |
|||
12.generatePlayers.generateSchedule.displaySchedule; |
|||
} |
|||
string[] generatePlayers(int n) { |
|||
("\nRound-Robin for "~(n).text~" players:\n").writeln; |
|||
// |
|||
return (n%2 == 0) ? iota(1, n+1).map!(a => a.text).array : iota(1, n+1).map!(a => a.text).array~"bye"; |
|||
} |
|||
string[] mutate(string[] arr) { |
|||
return arr[0]~arr[$-1]~ arr[1..$-1].array; |
|||
} |
|||
string[][] generateSchedule(string[] players) { |
|||
auto nbPlayer = players.length; |
|||
string[] memo ; |
|||
memo = players.dup; |
|||
string[][]schedule; |
|||
schedule ~= players; |
|||
for(int i = 1; i <= nbPlayer-2; i++) |
|||
{ |
|||
schedule ~= schedule[$-1].mutate; |
|||
} |
|||
// |
|||
return schedule; |
|||
} |
|||
void displaySchedule(string[][] schedule) { |
|||
auto nbPlayer = schedule[0].length; |
|||
foreach(i, row; schedule.array) |
|||
{ |
|||
writef("Round %2s: ", i+1); |
|||
for(int k=0; k<nbPlayer/2; k++) |
|||
{ |
|||
writef("(%2s vs %2s)", row[k], row[nbPlayer-(k+1)]); |
|||
if (k==(nbPlayer/2)-1) writeln; else " ".write; |
|||
} |
|||
} |
|||
// |
|||
writeln; |
|||
} |
|||
</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) |
|||
</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |