Un physicien paresseux a pour tâche de réaliser l'expérience à double fente. Cependant, ils sont paresseux et ne peuvent pas se soucier de configurer tous les équipements eux-mêmes et vont donc simuler les effets. Cependant, ils ne peuvent pas programmer et vont avoir besoin d'aide. Comme ils sont paresseux, votre programme doit être aussi court que possible.
Étant donné un entier positif impair n
( n >= 1
et n % 2 == 1
), effectuez la simulation.
Comment ça fonctionne
Vous commencerez avec une toile vide et chaque image une seule particule de lumière passera par les fentes et atterrira sur la toile. La particule atterrira à un maximum avec une chance de:
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.
Par exemple, pour n=5
nous cochons la case du milieu, il y a 50% de chances de tomber dedans. S'il tombe en fin de trame, sinon passe aux deux suivants, il y a 25% de chances de tomber dans ceux-ci. S'il tombe en fin de trame, sinon passe aux deux suivants, il y a 12,5% de chances de tomber dans ceux-ci. S'il ne tombe pas, cela n'a pas d'importance, c'est quand même la fin du cadre.
Il y a eu une certaine confusion sur la façon de calculer les chances, la plupart de cela est dû au fait que les gens les considèrent comme des probabilités qui devraient s'additionner à 1. Retirez cette idée de votre esprit et cela devrait l'éclaircir un peu pour vous.
- Au plus, une particule gisera par image, cela signifie qu'une particule ne peut pas du tout atterrir sur cette image.
- Une particule peut être représentée par n'importe quel caractère imprimable.
- La particule atterrira n'importe où dans la boîte avec une chance aléatoire.
- La largeur des boîtes doit être
2n-1
la taille de la toile. Donc,n=5
ils devraient être1/9
th de la largeur de la toile. - La hauteur des boîtes doit être la hauteur de la toile.
- La particule ne doit pas du tout atterrir à l'extérieur des boîtes.
- Si une particule a déjà atterri à un endroit choisi peu importe, elle peut y atterrir à nouveau.
- Les cases ascii ci-dessus sont pour plus de clarté, elles ne doivent pas être dessinées.
- Vous pouvez choisir votre propre taille de toile tant qu'elle est raisonnable. Par exemple, il ne doit pas seulement faire quelques pixels de haut. Il devrait également pouvoir contenir toutes les boîtes dessus.
- Si votre code dort entre les trames, vous n'avez pas besoin d'ajouter cela dans votre nombre d'octets.
Il devrait y avoir des écarts entre chacun des maxima, un minimum. Cela devrait avoir la même largeur qu'une boîte mais aucune particule n'y atterrira. Voir le schéma suivant:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
Le programme doit s'exécuter jusqu'à ce qu'il soit arrêté manuellement.
Règles
- Un générateur de nombres pseudo aléatoires (pRNG) est très bien.
- Les failles standard sont interdites.
- L'entrée peut être prise par n'importe quel format raisonnable.
- Vous devez sortir vers STDOUT.
- C'est le code-golf, donc la réponse la plus courte l'emporte.
Exemple
Le GIF suivant est un exemple exécuté pour n = 5
. Je ne l'ai fait que rapidement, donc les chances peuvent être légèrement réduites.