Anda mengayuh sampan menyusuri sungai arung yang cukup cepat. Tiba-tiba, dayung Anda meledak, dan Anda mendapati diri Anda dalam situasi berbahaya yang melaju cepat di sungai tanpa dayung. Untungnya, Anda masih memiliki keterampilan pemrograman, sehingga Anda memutuskan untuk mengukir program di samping sampan untuk membantu Anda selamat dari jeram. Namun, tidak banyak area permukaan di samping sampan untuk menulis program Anda, jadi Anda harus membuat program sesingkat mungkin.
Sungai dapat direpresentasikan sebagai grid 8 x 16. Kami akan label kolom dengan angka 0
untuk 7
dan baris dengan nomor 0
untuk 15
.
y
--------15
--------14
--------13
--------12
--------11
--------10
--------9
--------8
--------7
--------6
--------5
--------4
--------3
--------2
--------1
--------0
01234567
x
Atas: Sungai yang tenang dan biasa-biasa saja tanpa penghalang. Secara alami, ini bukan sungai tempat Anda berada.
Anda mulai pada koordinat (4, 0) dan dari sana bergerak tak terkendali ke atas sungai (yaitu vektor (0,1)
) sampai Anda menabrak batu (diwakili oleh o
dalam contoh-contoh ini). Ketika Anda menabrak batu, Anda akan memiliki peluang 55% untuk bergerak melewati batu ke kiri (yaitu vektor (-1,1)
) dan 45% peluang untuk bergerak melewati batu ke kanan (yaitu vektor (1,1)
). Jika sampan ada di kolom paling kiri atau kanan, sampan akan selalu bergerak ke tengah. Jika tidak ada batu, itu akan bergerak lurus ke atas.
y
----x---15
----xo--14
-o--x---13
----x---12
---ox---11
---x----10
---xo---9
---ox---8
----xo--7
-----x--6
----ox--5
-o--x---4
----x---3
----xo--2
----x---1
----x---0
01234567
Atas: Rute yang mungkin diambil kano, direpresentasikan menggunakan karakter x
Mengingat peta sungai, tulislah sebuah program yang akan menampilkan kemungkinan sampan di kolom yang diberikan.
Terima input dengan metode apa pun yang sesuai untuk program Anda (mis. STDIN, argumen baris perintah raw_input()
, membaca dari file, dll). Bagian pertama dari input adalah bilangan bulat tunggal dari 0 hingga 7, mewakili kolom yang akan dicari probabilitas programnya. Berikut ini adalah daftar tupel dalam bentuk yang x,y
mewakili posisi batu.
Sebuah contoh:
Memasukkan:
4 4,1 5,5 3,5
Ini akan menunjukkan sungai dengan batu di posisi (4,1), (5,5), dan (3,5), dan menanyakan kemungkinan sampan berakhir di kolom ke-4.
Keluaran:
0.495
Perhatikan bahwa dalam contoh ini, posisi batuan simetris, yang memungkinkan masalah diselesaikan dengan distribusi binomial. Ini tidak selalu terjadi!
Selain itu, sungai akan selalu bisa dilintasi. Artinya, tidak akan pernah ada dua batu yang diposisikan berdekatan satu sama lain secara horizontal. Lihat komentar Glenn untuk contoh kasus yang tidak mungkin.
Ini adalah kode golf, sehingga jumlah karakter yang paling rendah menang. Jangan ragu untuk bertanya di komentar jika spesifikasinya tidak jelas.