Um físico preguiçoso tem o trabalho de realizar o experimento de fenda dupla. No entanto, eles são preguiçosos e não podem se incomodar em montar todo o equipamento e simular os efeitos. Eles não podem programar, portanto, precisarão de ajuda. Como eles são preguiçosos, seu programa deve ser o mais curto possível.
Dado um número inteiro positivo ímpar n
( n >= 1
e n % 2 == 1
), execute a simulação.
Como funciona
Você começará com uma tela vazia e em cada quadro uma única partícula de luz atravessará as fendas e pousará na tela. A partícula aterrará no máximo com uma chance de:
n = 1
:
+-----+
| |
| 1/2 |
| |
+-----+
n = 3
:
+-----+ +-----+ +-----+
| | | | | |
| 1/4 | | 1/2 | | 1/4 |
| | | | | |
+-----+ +-----+ +-----+
n = 5
:
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| 1/8 | | 1/4 | | 1/2 | | 1/4 | | 1/8 |
| | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
etc.
Por exemplo, para n=5
marcar a caixa do meio, há 50% de chance de cair nela. Se cair no final do quadro, se não passar para os próximos dois, há 25% de chance de cair neles. Se cair no final do quadro, se não passar para os próximos dois, há uma chance de 12,5% de cair nesses. Se não cair, não importa, ainda é o fim do quadro.
Houve alguma confusão sobre como calcular as chances, a maior parte disso se deve ao fato de as pessoas pensarem nelas como probabilidades que devem somar 1. Retire essa ideia da sua mente e ela deve esclarecer um pouco para você.
- No máximo, uma partícula será concedida por quadro, isso significa que uma partícula pode não pousar nesse quadro.
- Uma partícula pode ser representada por qualquer caractere imprimível.
- A partícula pousará em qualquer lugar da caixa com uma chance aleatória.
- A largura das caixas deve ser
2n-1
do tamanho da tela. Portanto,n=5
eles devem ter1/9
a largura da tela. - A altura das caixas deve ser a altura da tela.
- A partícula não deve pousar fora das caixas.
- Se uma partícula já pousou em um local escolhido, não importa, ela pode pousar lá novamente.
- As caixas ascii acima são para maior clareza, não devem ser desenhadas.
- Você pode escolher seu próprio tamanho de tela, desde que seja razoável. Por exemplo, não deve ter apenas alguns pixels de altura. Ele também deve ser capaz de encaixar todas as caixas nele.
- Se o seu código dorme entre os quadros, você não precisa adicioná-lo à sua contagem de bytes.
Deve haver espaços entre cada um dos máximos, um mínimo. Essa deve ter a mesma largura de uma caixa, mas nenhuma partícula cairá lá. Veja o seguinte diagrama:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
O programa deve ser executado até que seja parado manualmente.
Regras
- Um gerador de números pseudo-aleatórios (pRNG) é bom.
- As brechas padrão são proibidas.
- A entrada pode ser obtida por qualquer formato razoável.
- Você deve enviar para STDOUT.
- Isso é código-golfe, então a resposta mais curta vence.
Exemplo
O GIF a seguir é um exemplo de execução n = 5
. Eu só bati rápido, então as chances podem ser um pouco menores.