Hãy xem xét phiên bản ASCII này của một cơ chế tương tự như máy đậu hoặc trò chơi plinko / pachinko :
O
^
\ ^
^ ^ \
\ ^ / ^
U U U U U
1 2 3 4 5
Các O
là một quả bóng rơi xuống.
- Khi nó chạm a
^
, có khả năng 50-50 nó sẽ sang trái hoặc phải. - Khi nó chạm a
/
, nó luôn đi bên trái. - Khi nó chạm a
\
, nó luôn luôn đi đúng.
Quả bóng cuối cùng rơi vào một trong những U
máng được đánh số ở phía dưới. Câu hỏi là, xác suất cuối cùng trong mỗi máng là bao nhiêu?
Đối với trường hợp đặc biệt này, các xác suất là 0.0
, 0.1875
, 0.5625
, 0.125
, và 0.125
, đối với máng từ 1 đến 5 tương ứng.
Dưới đây là một ví dụ khác với 3 máng thay vì 5. Các xác suất 0.5
, 0.5
và 0.0
:
O
/
^ ^
U U U
1 2 3
Trong thử thách này, chúng tôi sẽ khái quát vấn đề này thành một cơ chế với bất kỳ số lớp nào được thiết lập theo bất kỳ kiểu nào.
Thử thách
Viết chương trình hoặc hàm lấy biểu diễn ASCII của cấu trúc kim tự tháp của cơ chế. (Nhập qua stdin / dòng lệnh / hàm arg.)
Bạn có thể cho rằng nó đi kèm với các không gian đặt nó trong hình dạng phù hợp, ví dụ:
^
\ ^
^ ^ \
\ ^ / ^
Hoặc bạn có thể cho rằng nó không có chỗ trống, vd
^
\^
^^\
\^/^
(Nếu muốn, bạn có thể giả sử có một dòng mới và / hoặc một số mẫu không gian theo dõi nhất quán.)
Cấu trúc kim tự tháp đầu vào có thể có bất kỳ số cấp nào (còn gọi là dòng), bao gồm 0. Mỗi cấp độ có thêm một ^
, /
hoặc \
so với trước, và có levels + 1
máng ở phía dưới (mà không phải là một phần của đầu vào).
Chương trình / chức năng của bạn phải in / trả về danh sách các xác suất mà quả bóng rơi vào từng máng (theo thứ tự máng ngoài cùng bên trái đến máng ngoài cùng bên phải). Đây phải là các giá trị dấu phẩy động, khi được in, có ít nhất 3 vị trí thập phân (không cần số 0 hoặc dấu thập phân không cần thiết; 1
tốt cho 1.000
, .5
là tốt cho 0.500
, v.v.). Nếu bạn đã viết một hàm, bạn có thể in các giá trị hoặc trả về một danh sách / mảng của các float.
Bất kỳ định dạng danh sách in hợp lý là tốt. ví dụ như 0.5 0.5 0.0
, [0.5 0.5 0.0]
, [0.5, 0.5, 0.0]
, {0.5, 0.5, 0.0}
, hoặc 0.5\n0.5\n0.0
sẽ tất cả sẽ ổn thôi.
Ví dụ
0 Cấp độ: (sôi xuống một tầm thường U
)
Đầu vào: [no input/empty string given]
Đầu ra:1.0
1 cấp độ:
Đầu vào: ^
Đầu ra:0.5 0.5
Đầu vào: /
Đầu ra:1.0 0.0
Đầu vào: \
Đầu ra:0.0 1.0
2 cấp độ: (ví dụ thứ hai ở trên)
Đầu vào:
/
^ ^
Đầu ra: 0.5 0.5 0.0
3 cấp độ:
Đầu vào:
^
^ ^
^ ^ ^
Đầu ra: 0.125 0.375 0.375 0.125
Đầu vào:
\
/ \
/ / \
Đầu ra: 0.0 0.0 0.0 1.0
4 cấp độ: (ví dụ đầu tiên ở trên)
Đầu vào:
^
\ ^
^ ^ \
\ ^ / ^
Đầu ra: 0.0 0.1875 0.5625 0.125 0.125
7 cấp độ:
Đầu vào:
^
/ ^
^ ^ /
/ \ / \
^ ^ / ^ \
^ \ ^ \ / ^
\ ^ ^ ^ \ ^ /
Đầu ra: 0.0 0.09375 0.28125 0.4375 0.1875 0.0 0.0 0.0
Chấm điểm
Câu trả lời ngắn nhất trong byte thắng. Tiebreaker là bài trước.