Supongamos que sus artículos están numerados 0,1,2, ..., n-1.
Artículo i late el elemento j iff i - j (mod n) > (n-1)/2
.
En otras palabras, se puede rotar la lista de tal manera que su artículo elegido se encuentra en la mitad de la lista:
i - (n-1)/2, ..., i-2, i-1, i, i+1, i+2, ..., i + (n-1)/2
Entonces elemento i supera todos los artículos por debajo de él en la lista.
Una matriz de i vs j sería así:
0 1 2 3 4
0 - L L W W
1 W - L L W
2 W W - L L
3 L W W - L
4 L L W W -
Ésta no es la única posibilidad, pero es probablemente la más simple. Puede construir cualquier matriz que obedezca estas reglas:
- Todos los valores en la diagonal son cero.
- Los otros valores son 1 o -1 (ganar, perder).
- Es un skew symmetric matrix.
- Tiene exactamente (n-1)/2 victorias y pérdidas en cada fila y columna.
Aquí es otro ejemplo más complejo:
0 1 2 3 4
0 - L W W L
1 W - W L L
2 L L - W W
3 L W L - W
4 W W L L -
O redactadas de otra manera:
0 beats 2 and 3.
1 beats 0 and 2.
2 beats 3 and 4.
3 beats 1 and 4.
4 beats 0 and 1.
En este ejemplo, puede ser posible volver a etiquetar los elementos para dar la misma lógica que en el juego anterior. Dudo que se mantenga en general sin embargo.
¿Eficiente de qué manera? Densidad de código? ¿Tamaño o velocidad del ejecutable? ¿Uso de memoria? ¿Qué tan grande puede ser N? –