Ein fauler Physiker hat die Aufgabe, das Doppelspaltexperiment durchzuführen. Sie sind jedoch faul und können nicht die Mühe machen, alle Geräte selbst einzurichten, und werden daher die Auswirkungen simulieren. Sie können jedoch nicht programmieren und brauchen Hilfe. Da sie faul sind, sollte Ihr Programm so kurz wie möglich sein.
Führen Sie bei einer ungeraden positiven Ganzzahl n
( n >= 1
und n % 2 == 1
) die Simulation durch.
Wie es funktioniert
Sie beginnen mit einer leeren Leinwand, und in jedem Rahmen geht ein einzelnes Lichtteilchen durch die Schlitze und landet auf der Leinwand. Das Partikel landet mit einer Wahrscheinlichkeit von:
n = 1
:
+-----+
| |
| 1/2 |
| |
+-----+
n = 3
:
+-----+ +-----+ +-----+
| | | | | |
| 1/4 | | 1/2 | | 1/4 |
| | | | | |
+-----+ +-----+ +-----+
n = 5
:
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| 1/8 | | 1/4 | | 1/2 | | 1/4 | | 1/8 |
| | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
etc.
Zum Beispiel, wenn n=5
wir das mittlere Kästchen überprüfen, besteht eine 50% ige Wahrscheinlichkeit, dass wir hineinfallen. Wenn es das Ende des Frames erreicht, oder wenn es nicht zu den nächsten beiden wechselt, besteht eine 25% ige Chance, dass es in diese fällt. Wenn es das Ende des Frames erreicht, wenn es nicht zu den nächsten beiden wechselt, besteht eine Wahrscheinlichkeit von 12,5%, dass es in diese fällt. Wenn es nicht fällt, spielt es keine Rolle, es ist immer noch das Ende des Rahmens.
Es gab einige Unklarheiten darüber, wie man die Chancen berechnet. Die meisten davon sind darauf zurückzuführen, dass die Leute sie als Wahrscheinlichkeiten ansehen, die sich zu 1 addieren sollten. Entfernen Sie diese Idee aus Ihrem Kopf und sie sollte für Sie ein wenig klarer werden.
- Es wird höchstens ein Partikel pro Frame geladen. Dies bedeutet, dass ein Partikel möglicherweise überhaupt nicht auf diesem Frame landet.
- Ein Partikel kann durch ein beliebiges druckbares Zeichen dargestellt werden.
- Das Partikel landet irgendwo in der Box mit einer zufälligen Chance.
- Die Breite der Kästchen sollte
2n-1
der Größe der Leinwand entsprechen. Also fürn=5
sie sein sollten1/9
th der Leinwand Breite. - Die Höhe der Kästchen sollte der Höhe der Leinwand entsprechen.
- Das Partikel sollte überhaupt nicht außerhalb der Boxen landen.
- Wenn ein Partikel bereits an einer Stelle gelandet ist, die ausgewählt wurde und keine Rolle spielt, kann es dort erneut landen.
- Die obigen ASCII-Felder dienen der Übersichtlichkeit und sollten nicht gezeichnet werden.
- Sie können Ihre eigene Leinwandgröße wählen, solange dies angemessen ist. Zum Beispiel darf es nicht nur ein paar Pixel hoch sein. Es sollte auch in der Lage sein, alle Kästen darauf zu passen.
- Wenn Ihr Code zwischen Frames ruht, müssen Sie dies nicht zu Ihrer Byteanzahl hinzufügen.
Zwischen jedem der Maxima und Minima sollten Lücken bestehen. Dies sollte die gleiche Breite wie eine Kiste haben, aber dort werden keine Partikel landen. Siehe folgendes Diagramm:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
Das Programm sollte so lange ausgeführt werden, bis es manuell gestoppt wird.
Regeln
- Ein Pseudozufallszahlengenerator (pRNG) ist in Ordnung.
- Standardlücken sind verboten.
- Die Eingabe kann in jedem vernünftigen Format erfolgen.
- Sie sollten auf STDOUT ausgeben.
- Das ist Code-Golf, also gewinnt die kürzeste Antwort.
Beispiel
Das folgende GIF ist ein Beispiellauf für n = 5
. Ich habe es nur schnell geklopft, damit die Chancen etwas nachlassen.