I miei amici mi hanno invitato a casa a giocare a Secret Santa, dove dovremmo disegnare molto & nel ruolo di "Babbo Natale" per un amico del gruppo.Secret Santa - Generazione di permutazioni "valide"
Quindi, scriviamo tutti i nostri nomi e selezioniamo un nome a caso. Se qualcuno di noi finisce per avere il proprio nome scelto, quindi rimescoliamo e selezioniamo i nomi da capo (la logica è che uno non può essere il proprio Babbo Natale).
Ci sono sette di noi mentre suoniamo, quindi ho pensato alla definitiva "allocazione di Babbo Natale" come una permutazione di (1: 7) su se stessa, con alcune restrizioni.
Vorrei invitare diverse idee su come potremmo utilizzare Mathematica, in particolare, o qualsiasi altro linguaggio di programmazione o anche un algoritmo per:
- List/stampare tutti i Santa-allocazioni 'valido'
- è scalabile come il numero di amici che giocano 'Secret Santa' cresce
perdona l'ignoranza, ma non risolve solo a 7! ? Numero di possibilità che è. Non il contenuto esatto di quelli. – Sheriff
@Sheriff No, non è così. Sta chiedendo le permutazioni che non lasciano alcun elemento al suo posto. Per tre elementi, (123) (132) (321) (213) sono respinti, (231) e (312) sono a posto. – Szabolcs
@ Sheriff, sì, davvero molto. n!sarà il numero totale di permutazioni, ma alcune di esse saranno "non valide" e dovranno essere prese in considerazione. La semplice regola è che se la persona 'i' sceglie 'i', allora questa 'permutazione' non è valida. Se 1,2,3, .. n sono persone & P (1), P (2) .. P (n) sono gli slot che selezionano, quindi per ogni 1 <= i <= n, non dovrei essere uguale a P (i). So che questa è una condizione abbastanza semplice, ma sono curioso di imparare i vari 'idiomi' che possono essere 'programmati', diciamo in Mathematica ... e vediamo se possiamo trovare qualche interessante semplificazione/modello ... – fritz