2010-05-30 10 views
7

Cómo creo eficientemente un juego de piedra-tijera-papel para n elementos, donde n es cualquier número impar> = 3.Rock Paper Scissors para el número impar arbitrario de elementos

En otras palabras, quiero un ordenamiento completo no transitiva de n elementos de tal manera que cada elemento es mayor que (n-1)/2 otros elementos y cada elemento es menor que (n-1)/2 otros elementos

+0

¿Eficiente de qué manera? Densidad de código? ¿Tamaño o velocidad del ejecutable? ¿Uso de memoria? ¿Qué tan grande puede ser N? –

Respuesta

7

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.

+0

+1. Buena construcción! –

+0

por cierto, si está interesado, este es un gráfico de torneo: en.wikipedia.org/wiki/Tournament_(graph_theory) con la secuencia de puntuación s_i = (n-1)/2. –

3

¡Fantástico, gracias!

Como otro enfoque (inspirado en el suyo), k late k + 1 (mod n-1), k + 2 (mod n-1), etc ... para el siguiente (n-1)/2 elementos .

+4

Sugerencia caliente del día: pulse la "respuesta aceptada", un mensaje al lado de su publicación si responde a su pregunta de una buena manera, en lugar de agregar una respuesta a su pregunta ;-) –

+0

De acuerdo sobre las respuestas aceptadas pero solo para ser claro, las respuestas a las propias preguntas son muy alentadoras. En particular, esto parece digno de ser una respuesta separada. (Es bueno hacerlo funcionar por sí solo y reservar el diálogo con otros respondedores para los comentarios.) – dreeves

Cuestiones relacionadas