Sfida
Nella quantità più breve di codice:
- Calcola la lunghezza del ciclo di permutazione di un mescolamento perfetto su un mazzo di carte di qualsiasi dimensione n (dove n ≥ 2 e n è pari).
- Stampa una tabella di tutte le lunghezze del ciclo per 2 ≤ n ≤ 1000 ( n pari).
Nota che ci sono due modi di base per definire un shuffle perfetto. C'è il riordino , che mantiene la prima carta in cima e l'ultima in fondo, e c'è il mischiato , che sposta la prima e l'ultima carta di una posizione verso il centro. Puoi scegliere se stai eseguendo un riordino o un rimescolamento; l'algoritmo è quasi identico tra i due.
- mazzo casuale di 10 carte: [1,2,3,4,5,6,7,8,9,10] ↦ [1,6,2,7,3,8,4,9,5, 10].
- mescolata del mazzo da 10 carte: [1,2,3,4,5,6,7,8,9,10] ↦ [6,1,7,2,8,3,9,4,10, 5].
Esempio grafico
Qui, vediamo che uno shuffle su un mazzo da 20 carte ha una durata del ciclo di 18 passi. (Questo è solo a scopo illustrativo; la tua soluzione non è richiesta per generare cicli graficamente.) Il classico mazzo da 52 carte, d'altra parte, ha una durata del ciclo di riordino casuale di soli 8 passaggi (non mostrato).
Un mischiato su un mazzo da 20 carte ha una durata del ciclo di soli 6 passi.
Esempio tabellare di output
Il tuo programma dovrebbe produrre qualcosa di simile a questo, anche se puoi scegliere qualsiasi formato tabulare che ti piace di più. Questo è per un riordino:
2 1
4 2
6 4
8 3
10 6
12 10
14 12
16 4
18 8
20 18
22 6
24 11
26 20
28 18
30 28
32 5
34 10
36 12
38 36
40 12
...many lines omitted...
1000 36
Domande
- Sembra esserci qualche connessione tra l'ingresso numerico n e il suo conteggio dei cicli, quando n è una potenza di 2?
- Che ne dici di quando n non è una potenza di 2?
- Curiosamente, un mazzo da 1000 carte ha un conteggio dei cicli di riordino di solo 36, mentre un mazzo da 500 carte ha un conteggio dei cicli di riordino di 166. Perché potrebbe essere?
- Qual è il numero più grande che puoi trovare il cui conteggio dei cicli c è notevolmente più piccolo di n , il che significa che il rapporto n / c è massimizzato?