Seorang fisikawan yang malas memiliki tugas untuk melakukan eksperimen celah ganda. Namun, mereka malas dan tidak mau repot untuk mengatur semua peralatan sendiri dan akan mensimulasikan efeknya. Mereka tidak dapat memprogram meskipun begitu akan membutuhkan bantuan. Karena mereka malas, program Anda harus sesingkat mungkin.
Diberikan bilangan bulat positif ganjil n
( n >= 1
dan n % 2 == 1
), lakukan simulasi.
Bagaimana itu bekerja
Anda akan mulai dengan kanvas kosong dan setiap frame satu partikel cahaya akan melewati celah dan mendarat di kanvas. Partikel akan mendarat pada maksimum dengan kemungkinan:
n = 1
:
+-----+
| |
| 1/2 |
| |
+-----+
n = 3
:
+-----+ +-----+ +-----+
| | | | | |
| 1/4 | | 1/2 | | 1/4 |
| | | | | |
+-----+ +-----+ +-----+
n = 5
:
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| 1/8 | | 1/4 | | 1/2 | | 1/4 | | 1/8 |
| | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
dll.
Misalnya untuk n=5
kami memeriksa kotak tengah, ada kemungkinan 50% untuk jatuh di dalamnya. Jika jatuh dari frame, jika tidak pindah ke dua berikutnya, ada kemungkinan 25% jatuh pada mereka. Jika jatuh di akhir frame, jika tidak pindah ke dua berikutnya, ada kemungkinan 12,5% jatuh pada mereka. Jika tidak jatuh itu tidak masalah, itu masih merupakan akhir dari frame.
Ada beberapa kebingungan tentang bagaimana cara menghitung peluang, sebagian besar karena orang-orang menganggapnya sebagai probabilitas yang seharusnya bertambah hingga 1. Hapus ide itu dari pikiran Anda dan itu harus menjernihkannya sedikit untuk Anda.
- Paling banyak satu partikel akan lad per frame, ini berarti sebuah partikel mungkin tidak mendarat sama sekali pada frame itu.
- Sebuah partikel dapat diwakili oleh karakter yang dapat dicetak.
- Partikel akan mendarat di mana saja di dalam kotak dengan peluang acak.
- Lebar kotak harus
2n-1
seukuran kanvas. Jadi untukn=5
mereka harus1/9
th dari lebar kanvas. - Ketinggian kotak harus setinggi kanvas.
- Partikel tidak boleh mendarat di luar kotak sama sekali.
- Jika sebuah partikel telah mendarat di tempat yang dipilih, tidak masalah ia bisa mendarat di sana lagi.
- Kotak ascii di atas adalah untuk kejelasan, mereka tidak boleh ditarik.
- Anda dapat memilih ukuran kanvas sendiri selama itu wajar. Misalnya, tingginya tidak boleh beberapa piksel. Itu juga harus dapat memenuhi semua kotak di atasnya.
- Jika kode Anda tidur di antara frame, Anda tidak perlu menambahkannya ke jumlah byte Anda.
Harus ada celah di antara masing-masing maxima, minima. Ini harus sama lebar dengan kotak tetapi tidak ada partikel yang akan mendarat di sana. Lihat diagram berikut:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
Program harus berjalan sampai dihentikan secara manual.
Aturan
- Generator nomor acak semu (pRNG) baik-baik saja.
- Celah standar dilarang.
- Input dapat diambil dengan format apa pun yang wajar.
- Anda harus output ke STDOUT.
- Ini adalah kode-golf sehingga jawaban terpendek menang.
Contoh
GIF berikut adalah contoh dijalankan untuk n = 5
. Saya hanya mengetuknya dengan cepat sehingga peluangnya mungkin sedikit.