Mis amigos me invitaron a casa para jugar el juego de Secret Santa, donde se supone que dibujamos mucho & para jugar el papel de 'Santa' para un amigo en el grupo.Secret Santa - Generando permutaciones "válidas"
Por lo tanto, escribimos todos nuestros nombres y elegimos un nombre al azar. Si alguno de nosotros termina eligiendo su propio nombre, reorganizamos y seleccionamos los nombres una vez más (la razón fundamental es que uno no puede ser el propio Santa).
Somos siete cuando jugamos, así que pensé en la 'asignación de Santa' final como una permutación de (1: 7) en sí misma, con algunas restricciones.
me gustaría invitar a varias ideas sobre cómo podríamos usar Mathematica en particular, o cualquier lenguaje de programación o incluso un algoritmo para:
- Lista/imprimir todos los Santa-asignaciones 'válidas'
- es escalable a medida que el número de amigos que juegan al 'amigo invisible' crece
perdonen la ignorancia, pero ¿esto no se resuelve solo en 7! ? Número de posibilidades que es. No el contenido exacto de esos. – Sheriff
@Sheriff No, no es así. Él está pidiendo las permutaciones que no dejan ningún elemento en su lugar. Para tres elementos, (123) (132) (321) (213) son rechazados, (231) y (312) están bien. – Szabolcs
@ Sheriff, sí, mucho más. n!será el número total de permutaciones, pero algunas de ellas serán "inválidas" y deberán considerarse. La regla simple es que si la persona 'i' elige 'i' entonces esta 'permutación' no es válida. Si 1,2,3, ... n son personas y P (1), P (2) .. P (n) son los espacios que seleccionan, entonces, por cada 1 <= i <= n, no debería ser igual a P (i). Sé que esta es una condición bastante simple, pero tengo curiosidad por aprender los distintos 'modismos' que pueden 'programarse', digamos en Mathematica ... y ver si podemos encontrar alguna simplificación/patrón interesante ... – fritz