怠zyな物理学者は、二重スリット実験を実行する仕事を持っています。ただし、それらは怠け者であり、すべての機器をセットアップすることに煩わされることはないため、エフェクトをシミュレートします。彼らはプログラムできないので、いくつかの助けが必要になります。怠laなので、プログラムはできるだけ短くする必要があります。
奇数の正の整数n
(n >= 1
およびn % 2 == 1
)を指定して、シミュレーションを実行します。
使い方
空のキャンバスから始めて、各フレームの光の粒子がスリットを通過してキャンバスに着地します。パーティクルは次の機会に最大値に到達します:
n = 1
:
+-----+
| |
| 1/2 |
| |
+-----+
n = 3
:
+-----+ +-----+ +-----+
| | | | | |
| 1/4 | | 1/2 | | 1/4 |
| | | | | |
+-----+ +-----+ +-----+
n = 5
:
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| 1/8 | | 1/4 | | 1/2 | | 1/4 | | 1/8 |
| | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
等
たとえばn=5
、中央のボックスをチェックすると、50%の確率でその中に落ちます。フレームの終わりに落ちた場合、次の2つに移動しないと、25%の確率でそれらに落ちます。フレームの終わりに落ちた場合、次の2つに移動しなければ、それらに落ちる可能性は12.5%です。それが落ちなければ、それは重要ではありません、それはまだフレームの終わりです。
チャンスを計算する方法については混乱がありました。これは、ほとんどの場合、1になる可能性があると考えている人々によるものです。その考えを心から取り除き、それを少しクリアする必要があります。
- フレームごとに最大で1つのパーティクルがロードされます。これは、パーティクルがそのフレームにまったく着弾しないことを意味します。
- 粒子は、印刷可能な任意の文字で表すことができます。
- パーティクルは、ランダムなチャンスでボックス内のどこにでも着弾します。
- ボックスの幅は
2n-1
キャンバスのサイズにする必要があります。そのため、n=5
それらは1/9
キャンバスの幅のthでなければなりません。 - ボックスの高さは、キャンバスの高さでなければなりません。
- 粒子は箱の外に全く着地してはいけません。
- パーティクルが、問題ではない選択されたスポットに既に着陸している場合、再び着陸することができます。
- 上記のASCIIボックスは明確にするためのものであり、描画しないでください。
- 妥当な範囲で、独自のキャンバスサイズを選択できます。たとえば、数ピクセルの高さだけではいけません。また、その上のすべてのボックスに適合することができるはずです。
- コードがフレーム間でスリープする場合、それをバイトカウントに追加する必要はありません。
それぞれの最大値、最小値の間にギャップがあるはずです。これはボックスと同じ幅にする必要がありますが、パーティクルはそこに着地しません。次の図を参照してください。
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
プログラムは、手動で停止するまで実行する必要があります。
ルール
- 擬似乱数ジェネレーター(pRNG)は問題ありません。
- 標準的な抜け穴は禁止されています。
- 入力は、合理的な形式で行われます。
- STDOUTに出力する必要があります。
- これはコードゴルフなので、最短の答えが勝ちます。
例
次のGIFは、の実行例ですn = 5
。私はそれをすぐにノックしたので、チャンスはわずかにずれます。