use strict; use warnings; my $num_players = 6; my @players = (1..$num_players); push @players, 'bye' if @players % 2; # Even number my $num_rounds = @players - 1; for my $round (1..$num_rounds) { # Fold array to assign matches my @matches = map {join('-', sort @players[$_, $#players - $_])} (0..@players/2-1); # Print Results print "$round) " . join(', ', @matches), "\n"; # Rotate last position to second splice @players, 1, 0, pop(@players); } #### 1) 1-6, 2-5, 3-4 2) 1-5, 4-6, 2-3 3) 1-4, 3-5, 2-6 4) 1-3, 2-4, 5-6 5) 1-2, 3-6, 4-5