Leniwy fizyk ma za zadanie przeprowadzić eksperyment podwójnej szczeliny. Są jednak leniwi i nie można sobie pozwolić na samodzielne konfigurowanie całego sprzętu, dlatego też będą symulować efekty. Nie mogą jednak programować, więc będą potrzebować pomocy. Ponieważ są leniwi, twój program powinien być jak najkrótszy.
Biorąc pod uwagę nieparzystą liczbę całkowitą dodatnią n
( n >= 1
i n % 2 == 1
), wykonaj symulację.
Jak to działa
Zaczniesz od pustego płótna, a każda klatka pojedynczej cząsteczki światła przejdzie przez szczeliny i wyląduje na płótnie. Cząstka wyląduje na maksimach z szansą:
n = 1
:
+-----+
| |
| 1/2 |
| |
+-----+
n = 3
:
+-----+ +-----+ +-----+
| | | | | |
| 1/4 | | 1/2 | | 1/4 |
| | | | | |
+-----+ +-----+ +-----+
n = 5
:
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| 1/8 | | 1/4 | | 1/2 | | 1/4 | | 1/8 |
| | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
itp.
Na przykład, ponieważ n=5
zaznaczamy środkowe pole, istnieje 50% szansy na upadek. Jeśli spadnie na koniec kadru, jeśli nie przejdzie do następnych dwóch, istnieje 25% szansy na upadek. Jeśli spadnie na koniec kadru, jeśli nie przejdzie do następnych dwóch, istnieje 12,5% szansy na upadek. Jeśli nie spadnie, nie ma znaczenia, to wciąż koniec kadru.
Pojawiło się pewne zamieszanie dotyczące sposobu obliczania szans, większość z nich wynika z tego, że ludzie myślą o nich jako o prawdopodobieństwach, które powinny się sumować do 1. Usuń ten pomysł z twojego umysłu i powinien on trochę ci wyjaśnić.
- Co najwyżej jedna cząstka będzie ładować na ramkę, co oznacza, że cząstka może wcale nie wylądować na tej ramce.
- Cząstka może być reprezentowana przez dowolny znak do wydrukowania.
- Cząstka wyląduje w dowolnym miejscu pudełka z losową szansą.
- Szerokość skrzynek powinna być
2n-1
wielkością płótna. Dlategon=5
powinny być one1/9
szerokości płótna. - Wysokość skrzynek powinna odpowiadać wysokości płótna.
- Cząstka nie powinna w ogóle wylądować poza pudełkami.
- Jeśli cząstka już wylądowała w wybranym miejscu, co nie ma znaczenia, może tam ponownie wylądować.
- Powyższe pola ascii służą przejrzystości, nie należy ich rysować.
- Możesz wybrać własny rozmiar płótna, o ile jest to uzasadnione. Na przykład nie może mieć tylko kilku pikseli wysokości. Powinien też być w stanie zmieścić wszystkie znajdujące się na nim pudełka.
- Jeśli twój kod śpi między ramkami, nie musisz dodawać go do swojej liczby bajtów.
Pomiędzy każdą z maksimów powinny być luki, minima. Powinna mieć taką samą szerokość jak pudełko, ale żadne cząstki tam nie wylądują. Zobacz poniższy schemat:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
Program powinien działać, dopóki nie zostanie zatrzymany ręcznie.
Zasady
- Generator liczb pseudolosowych (pRNG) jest w porządku.
- Standardowe luki są zabronione.
- Dane wejściowe mogą być pobierane w dowolnym rozsądnym formacie.
- Powinieneś wyprowadzać dane do STDOUT.
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź.
Przykład
Poniższy plik GIF jest przykładem uruchomienia dla n = 5
. Podrzuciłem go tylko szybko, więc szanse mogą być nieznaczne.