Pertimbangkan versi ASCII ini dari mekanisme yang mirip dengan mesin bean atau game plinko / pachinko :
O
^
\ ^
^ ^ \
\ ^ / ^
U U U U U
1 2 3 4 5
The O
adalah bola yang jatuh ke bawah.
- Ketika itu mengenai
^
, ada kemungkinan 50-50 itu akan ke kiri atau kanan. - Ketika itu mengenai
/
, itu selalu pergi ke kiri. - Ketika hits
\
, itu selalu berjalan dengan benar.
Bola akhirnya jatuh ke salah satu U
palung bernomor di bagian bawah. Pertanyaannya adalah, berapa probabilitasnya pada setiap palung?
Untuk kasus ini, probabilitas yang 0.0
, 0.1875
, 0.5625
, 0.125
, dan 0.125
, untuk palung 1 sampai 5 masing-masing.
Berikut contoh lain dengan 3 palung bukannya 5. Probabilitas adalah 0.5
, 0.5
, dan 0.0
:
O
/
^ ^
U U U
1 2 3
Dalam tantangan ini kami akan menggeneralisasikan masalah ini ke suatu mekanisme dengan sejumlah lapisan yang diatur dengan cara apa pun.
Tantangan
Tulis program atau fungsi yang mengambil representasi ASCII dari struktur piramida mekanisme. (Input melalui stdin / baris perintah / fungsi arg.)
Anda dapat mengasumsikan itu datang dengan spasi yang menempatkannya dalam bentuk yang tepat, misalnya
^
\ ^
^ ^ \
\ ^ / ^
Atau Anda dapat menganggapnya masuk tanpa spasi sama sekali, misalnya
^
\^
^^\
\^/^
(Jika diinginkan, Anda dapat mengasumsikan ada garis baru dan / atau beberapa pola spasi yang konsisten.)
Struktur piramida input dapat memiliki sejumlah level (alias garis), termasuk nol. Setiap level memiliki satu lagi ^
,, /
atau \
dari yang terakhir, dan ada levels + 1
palung di bagian bawah (yang bukan bagian dari input).
Program / fungsi Anda harus mencetak / mengembalikan daftar probabilitas bahwa bola mendarat di setiap palung (dalam urutan palung paling kiri ke palung paling kanan). Ini harus berupa nilai titik apung yang, ketika dicetak, memiliki setidaknya 3 tempat desimal (nol berlebihan atau titik desimal tidak diperlukan; 1
baik untuk 1.000
, .5
baik untuk 0.500
, dll.). Jika Anda menulis suatu fungsi, Anda dapat mencetak nilai atau mengembalikan daftar / larik float.
Format daftar cetak yang masuk akal baik-baik saja. misalnya 0.5 0.5 0.0
, [0.5 0.5 0.0]
, [0.5, 0.5, 0.0]
, {0.5, 0.5, 0.0}
, atau 0.5\n0.5\n0.0
semua akan baik-baik saja.
Contohnya
0 Level: (bermuara pada satu hal sepele U
)
Input: [no input/empty string given]
Keluaran:1.0
1 Tingkat:
Input: ^
Keluaran:0.5 0.5
Input: /
Keluaran:1.0 0.0
Input: \
Keluaran:0.0 1.0
2 Tingkat: (contoh kedua di atas)
Memasukkan:
/
^ ^
Keluaran: 0.5 0.5 0.0
3 Tingkat:
Memasukkan:
^
^ ^
^ ^ ^
Keluaran: 0.125 0.375 0.375 0.125
Memasukkan:
\
/ \
/ / \
Keluaran: 0.0 0.0 0.0 1.0
4 Tingkat: (contoh pertama di atas)
Memasukkan:
^
\ ^
^ ^ \
\ ^ / ^
Keluaran: 0.0 0.1875 0.5625 0.125 0.125
7 Tingkat:
Memasukkan:
^
/ ^
^ ^ /
/ \ / \
^ ^ / ^ \
^ \ ^ \ / ^
\ ^ ^ ^ \ ^ /
Keluaran: 0.0 0.09375 0.28125 0.4375 0.1875 0.0 0.0 0.0
Mencetak gol
Jawaban terpendek dalam byte menang. Tiebreaker adalah posting sebelumnya.