Round-robin tournament schedule: Difference between revisions
Content added Content deleted
(promoted to full task) |
|||
Line 463: | Line 463: | ||
1:11 12:10 2:9 3:8 4:7 5:6 |
1:11 12:10 2:9 3:8 4:7 5:6 |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
=={{header|Java}}== |
|||
<syntaxhighlight lang="java"> |
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
import java.util.stream.IntStream; |
|||
public final class RoundRobinTournamentSchedule { |
|||
public static void main(String[] args) { |
|||
System.out.println("Round robin for 12 players:"); |
|||
roundRobin(12); |
|||
System.out.println(System.lineSeparator()); |
|||
System.out.println("Round robin for 5 players, 0 denotes a bye:"); |
|||
roundRobin(5); |
|||
} |
|||
private static void roundRobin(int teamCount) { |
|||
if ( teamCount < 2 ) { |
|||
throw new IllegalArgumentException("Number of teams must be greater than 2: " + teamCount); |
|||
} |
|||
List<Integer> rotatingList = IntStream.rangeClosed(2, teamCount).boxed().collect(Collectors.toList()); |
|||
if ( teamCount % 2 == 1 ) { |
|||
rotatingList.add(0); |
|||
teamCount += 1; |
|||
} |
|||
for ( int round = 1; round < teamCount; round++ ) { |
|||
System.out.print(String.format("%s%2d%s", "Round ", round, ":")); |
|||
List<Integer> fixedList = IntStream.rangeClosed(1, 1).boxed().collect(Collectors.toList()); |
|||
fixedList.addAll(rotatingList); |
|||
for ( int i = 0; i < teamCount / 2; i++ ) { |
|||
System.out.print(String.format("%s%2d%s%2d%s", |
|||
" ( ", fixedList.get(i), " vs ", fixedList.get(teamCount - 1 - i), " )")); |
|||
} |
|||
System.out.println(); |
|||
Collections.rotate(rotatingList, +1); |
|||
} |
|||
} |
|||
} |
|||
</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> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |