Round-robin tournament schedule: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: sp) |
SqrtNegInf (talk | contribs) (→{{header|Perl}}: added alternate version) |
||
Line 143: | Line 143: | ||
=={{header|Perl}}== |
=={{header|Perl}}== |
||
===Even=== |
|||
<lang perl>#!/usr/bin/perl |
<lang perl>#!/usr/bin/perl |
||
Line 169: | Line 170: | ||
Round 11: 1 vs 12 2 vs 11 3 vs 10 4 vs 9 5 vs 8 6 vs 7 |
Round 11: 1 vs 12 2 vs 11 3 vs 10 4 vs 9 5 vs 8 6 vs 7 |
||
</pre> |
</pre> |
||
===Even and Odd=== |
|||
<lang perl>use strict; |
|||
use warnings; |
|||
use feature 'say'; |
|||
use List::AllUtils <pairwise all>; |
|||
sub round_robin { |
|||
my($n) = @_; |
|||
my($round,@pairings); |
|||
my @players = (1,0)[$n%2] .. $n; |
|||
my $half = +@players / 2; |
|||
while () { |
|||
my @a = @players[ 0 .. $half-1]; |
|||
my @b = reverse @players[$half .. $#players]; |
|||
push @pairings, sprintf "Round %2d: %s\n", ++$round, join ' ', pairwise { sprintf "%3d vs %2d", $a, $b } @a, @b; |
|||
push @players, splice @players, 1, @players-2; |
|||
last if all { $players[$_-1] < $players[$_] } 1..$#players; |
|||
} |
|||
@pairings |
|||
} |
|||
say join '', round_robin 12; |
|||
say ''; |
|||
say join '', map { s/0 vs /Bye: /r } round_robin 7;</lang> |
|||
{{out}} |
|||
<pre>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 1: Bye: 7 1 vs 6 2 vs 5 3 vs 4 |
|||
Round 2: Bye: 6 7 vs 5 1 vs 4 2 vs 3 |
|||
Round 3: Bye: 5 6 vs 4 7 vs 3 1 vs 2 |
|||
Round 4: Bye: 4 5 vs 3 6 vs 2 7 vs 1 |
|||
Round 5: Bye: 3 4 vs 2 5 vs 1 6 vs 7 |
|||
Round 6: Bye: 2 3 vs 1 4 vs 7 5 vs 6 |
|||
Round 7: Bye: 1 2 vs 7 3 vs 6 4 vs 5</pre> |
|||
=={{header|Phix}}== |
=={{header|Phix}}== |