Ледачий фізик має завдання виконати експеримент з подвійною щілиною. Однак вони ледачі і не можуть заважати самостійно налаштовувати все обладнання, і тому збираються імітувати наслідки. Вони не можуть програмувати, хоча їм знадобиться допомога. Оскільки вони ліниві, ваша програма повинна бути якомога коротшою.
Давши непарне додатне ціле число 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
. Я лише швидко збив його, щоб шанси трохи знизилися.