게으른 물리학자는 이중 슬릿 실험을 수행해야합니다. 그러나 그들은 게으르고 모든 장비를 스스로 설정하기 위해 귀찮게 할 수 없으므로 효과를 시뮬레이트 할 것입니다. 그들은 프로그래밍을 할 수 없지만 도움이 필요할 것입니다. 그들이 게 으르므로 프로그램은 가능한 짧아야합니다.
홀수 양의 정수 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 %의 확률로 떨어질 수 있습니다. 만약 프레임의 끝이 떨어지면 다음 2 개로 넘어 가지 않으면 12.5 %의 확률로 떨어질 것입니다. 떨어지지 않아도 문제가되지 않지만 여전히 프레임의 끝입니다.
확률을 계산하는 방법에 대해 약간의 혼동이 있었으며,이 중 대부분은 확률을 1로 더해야하는 확률로 생각하는 사람들에 의한 것입니다. 마음에서 그 아이디어를 제거하고 약간 정리해야합니다.
- 프레임 당 최대 하나의 파티클이 사라집니다. 이는 파티클이 해당 프레임에 전혀 도달하지 않을 수 있음을 의미합니다.
- 입자는 인쇄 가능한 문자로 나타낼 수 있습니다.
- 파티클은 상자의 임의의 위치에 임의의 확률로 도달합니다.
- 상자의 너비
2n-1
는 캔버스의 크기 여야합니다 . 그러므로n=5
그것들은1/9
캔버스 너비의 일이어야합니다 . - 상자의 높이는 캔버스의 높이 여야합니다.
- 입자가 상자 외부로 떨어지지 않아야합니다.
- 입자가 이미 선택된 지점에 착륙 한 경우 문제가되지 않습니다.
- 위의 ASCII 상자는 명확성을 위해 그려 졌으므로 그려서는 안됩니다.
- 합리적인 경우 자신의 캔버스 크기를 선택할 수 있습니다. 예를 들어 높이가 몇 픽셀에 불과해서는 안됩니다. 또한 모든 상자를 넣을 수 있어야합니다.
- 코드가 프레임 사이에서 휴면 상태 인 경우이를 바이트 수에 추가 할 필요가 없습니다.
각 최대 값, 최소값 사이에 간격이 있어야합니다. 상자와 너비는 같아야하지만 입자가 떨어지지 않습니다. 다음 다이어그램을 참조하십시오.
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
프로그램은 수동으로 중지 될 때까지 실행해야합니다.
규칙
- pRNG (의사 난수 생성기)는 괜찮습니다.
- 표준 허점 은 금지되어 있습니다.
- 적절한 형식으로 입력 할 수 있습니다.
- STDOUT으로 출력해야합니다.
- 이것은 코드 골프 이므로 가장 짧은 대답이 이깁니다.
예
다음 GIF는에 대한 예제입니다 n = 5
. 나는 그것을 빨리 두드려서 기회가 약간 벗어날 수 있습니다.