Un fisico pigro ha il compito di eseguire l'esperimento a doppia fenditura. Tuttavia, sono pigri e non possono preoccuparsi di installare tutto l'equipaggiamento da soli e quindi simuleranno gli effetti. Non possono programmare, quindi avranno bisogno di aiuto. Dato che sono pigri, il programma dovrebbe essere il più breve possibile.
Dato un numero intero dispari positivo n
( n >= 1
e n % 2 == 1
), eseguire la simulazione.
Come funziona
Inizierai con una tela vuota e ogni cornice una singola particella di luce attraverserà le fessure e atterrerà sulla tela. La particella atterrerà ai massimi con una possibilità di:
n = 1
:
+-----+
| |
| 1/2 |
| |
+-----+
n = 3
:
+-----+ +-----+ +-----+
| | | | | |
| 1/4 | | 1/2 | | 1/4 |
| | | | | |
+-----+ +-----+ +-----+
n = 5
:
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| 1/8 | | 1/4 | | 1/2 | | 1/4 | | 1/8 |
| | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
eccetera.
Ad esempio, n=5
se selezioniamo la casella centrale, c'è una probabilità del 50% di cadere al suo interno. Se cade alla fine del frame, se non passa ai due successivi, c'è una probabilità del 25% di cadere in quelli. Se cade alla fine del fotogramma, se non passa ai due successivi, c'è una probabilità del 12,5% di cadere in quelli. Se non cade, non importa, è comunque la fine del fotogramma.
C'è stata una certa confusione su come calcolare le possibilità, la maggior parte di ciò è dovuto al fatto che le persone le considerano come probabilità che dovrebbero sommare a 1. Rimuovi quell'idea dalla tua mente e dovrebbe chiarirla un po 'per te.
- Al massimo una particella verrà caricata per frame, questo significa che una particella potrebbe non atterrare affatto su quel frame.
- Una particella può essere rappresentata da qualsiasi carattere stampabile.
- La particella atterrerà ovunque nella scatola con una possibilità casuale.
- La larghezza delle scatole dovrebbe essere
2n-1
la dimensione della tela. Quindin=5
dovrebbero essere1/9
la larghezza della tela. - L'altezza delle scatole dovrebbe essere l'altezza della tela.
- La particella non dovrebbe atterrare al di fuori delle scatole.
- Se una particella è già atterrata in un punto scelto, non importa, può atterrare di nuovo lì.
- Le caselle ASCII sopra sono per chiarezza, non devono essere disegnate.
- Puoi scegliere la tua dimensione di tela purché sia ragionevole. Ad esempio, non deve essere alto solo pochi pixel. Dovrebbe anche essere in grado di adattare tutte le scatole su di esso.
- Se il codice si trova tra i frame, non è necessario aggiungerlo nel conteggio dei byte.
Dovrebbero esserci degli spazi tra ciascuno dei massimi, un minimo. Dovrebbe avere la stessa larghezza di una scatola ma nessuna particella atterrerà lì. Vedi il diagramma seguente:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
Il programma dovrebbe essere eseguito fino a quando non viene arrestato manualmente.
Regole
- Un generatore di numeri pseudo casuali (pRNG) va bene.
- Sono vietate le scappatoie standard .
- L'input può essere preso in qualsiasi formato ragionevole.
- È necessario eseguire l'output su STDOUT.
- Questo è code-golf, quindi vince la risposta più breve.
Esempio
La seguente GIF è un esempio eseguito per n = 5
. L'ho rovesciato rapidamente, quindi le possibilità potrebbero essere leggermente ridotte.