懒惰的物理学家有工作要做双狭缝实验。但是,它们很懒惰,不会麻烦自己设置所有设备,因此将模拟效果。他们无法编程,因此需要一些帮助。由于它们很懒,因此您的程序应尽可能短。
给定一个奇数正整数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%的机会掉入其中。如果它落到帧尾,或者不移到下两个,则有25%的机会掉入其中。如果它落到帧末,如果不移到下两个,则有12.5%的机会掉入其中。如果不跌倒也没关系,那仍然是框架的尽头。
关于如何计算机会一直存在一些困惑,这主要是由于人们认为它们是应该加起来为1的概率。
- 每帧最多只能拉出一个粒子,这意味着粒子可能根本不会落在该帧上。
- 粒子可以用任何可打印的字符表示。
- 粒子将随机降落在盒子中的任何位置。
- 盒子的宽度应该是
2n-1
画布的大小。因此,n=5
它们应该是1/9
画布宽度的th。 - 盒子的高度应该是画布的高度。
- 粒子完全不应落在盒子外面。
- 如果一个粒子已经降落在一个选定的位置上,那么它可以再次降落在那里。
- 上面的ascii框是为了清楚起见,因此不应绘制它们。
- 您可以选择自己的画布大小,只要合理即可。例如,它不能只是几个像素高。它还应该能够适合其上的所有盒子。
- 如果您的代码在帧之间休眠,则无需将其添加到字节数中。
每个最大值(最小值)之间应该有间隙。该宽度应与盒子的宽度相同,但没有颗粒会落在该盒子上。请参见下图:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
该程序应运行,直到手动停止为止。
规则
例
以下GIF是针对的示例n = 5
。我只是很快把它敲了一下,所以机会可能会略有减少。