N es el numero de jugadores.
Código :
var N:Number = 14; //ATENCIÓN!! "N" DEBE SER PAR! (2,4,8,12,20,...)
var g1:Array = new Array();
var g2:Array = new Array();
//crea los grupos
for (var i = 0; i<((N-1)/2); i++) {
g1.push([i]);
g1[i] = i;
//
g2.push([i]);
g2[i] = N-i-1;
}
//hace girar los grupo para el siguiente round
for (var j = 0; j<N-1; j++) {//j son los rounds
//anuncia los grupos
trace("Round "+j);
trace(g1);
trace(g2);
var temp1 = g2[0];
var temp2 = g1[(N/2)-1];
for (var k = 0; k<N/2; k++) {
if (k == (N/2)-1) {
g1[1] = temp1;
g2[(N/2)-1] = temp2;
} else {
g1[(N/2)-1-k] = g1[(N/2)-1-k-1];
g2[k] = g2[k+1];
}
}
}
Esto te da este Output:
Round 0
0,1,2,3,4,5,6
13,12,11,10,9,8,7
Round 1
0,13,1,2,3,4,5
12,11,10,9,8,7,6
Round 2
0,12,13,1,2,3,4
11,10,9,8,7,6,5
Round 3
0,11,12,13,1,2,3
10,9,8,7,6,5,4
Round 4
0,10,11,12,13,1,2
9,8,7,6,5,4,3
Round 5
0,9,10,11,12,13,1
8,7,6,5,4,3,2
Round 6
0,8,9,10,11,12,13
7,6,5,4,3,2,1
Round 7
0,7,8,9,10,11,12
6,5,4,3,2,1,13
Round 8
0,6,7,8,9,10,11
5,4,3,2,1,13,12
Round 9
0,5,6,7,8,9,10
4,3,2,1,13,12,11
Round 10
0,4,5,6,7,8,9
3,2,1,13,12,11,10
Round 11
0,3,4,5,6,7,8
2,1,13,12,11,10,9
Round 12
0,2,3,4,5,6,7
1,13,12,11,10,9,8
Los "combates" deben ser; por ejemlo, en el ultimo round:
0 contra 1, 2 contra 13, 3 contra 12, etc.
Por cierto, ¿lo pongo en la wikipedia? Veo que
no está