У ленивого физика есть задача провести эксперимент с двумя щелями. Тем не менее, они ленивы и не могут быть обеспокоены настройкой всего оборудования самостоятельно, поэтому имитируют эффекты. Хотя они не могут программировать, поэтому им понадобится помощь. Поскольку они ленивы, ваша программа должна быть максимально короткой.
Учитывая нечетное положительное целое число 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
шириной холста. - Высота ящиков должна быть высотой холста.
- Частица вообще не должна попадать за пределы коробок.
- Если частица уже приземлилась в выбранном месте, которое не имеет значения, она может снова приземлиться там.
- Вышеуказанные поля ascii для ясности не должны быть нарисованы.
- Вы можете выбрать свой собственный размер холста, если это разумно. Например, он должен иметь высоту не более нескольких пикселей. Это также должно быть в состоянии соответствовать всем коробкам на этом.
- Если ваш код спит между кадрами, вам не нужно добавлять его в счетчик байтов.
Должны быть промежутки между каждым из максимумов, минимумов. Это должно быть той же ширины, что и коробка, но частицы там не будут приземляться. Смотрите следующую диаграмму:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
Программа должна работать до тех пор, пока она не будет остановлена вручную.
правила
- Генератор псевдослучайных чисел (pRNG) в порядке.
- Стандартные лазейки запрещены.
- Входные данные могут быть приняты в любом разумном формате.
- Вы должны вывести на STDOUT.
- Это код-гольф, поэтому выигрывает самый короткий ответ.
пример
Следующий GIF является примером запуска для n = 5
. Я только быстро его подобрал, так что шансы могут быть немного ниже.