Bạn đang chèo xuồng xuống một dòng sông nước trắng khá nhanh. Đột nhiên, mái chèo của bạn nổ tung, và bạn thấy mình trong một tình huống nguy hiểm đang xuôi dòng sông một cách nhanh chóng mà không có mái chèo nào. May mắn thay, bạn vẫn có kỹ năng lập trình của mình, vì vậy bạn quyết định khắc một chương trình bên cạnh chiếc xuồng của mình để giúp bạn sống sót qua ghềnh. Tuy nhiên, không có nhiều diện tích bề mặt bên cạnh xuồng để viết chương trình của bạn, vì vậy bạn phải làm cho chương trình càng ngắn càng tốt.
Sông có thể được biểu diễn dưới dạng lưới 8 x 16. Chúng tôi sẽ gắn nhãn các cột với các số 0
đến 7
và các hàng với các số 0
đến 15
.
y
--------15
--------14
--------13
--------12
--------11
--------10
--------9
--------8
--------7
--------6
--------5
--------4
--------3
--------2
--------1
--------0
01234567
x
Trên: Một dòng sông hoàn toàn bình tĩnh, bình thường không có vật cản. Đương nhiên, đây không phải là dòng sông bạn đang ở.
Bạn bắt đầu tại tọa độ (4, 0) và từ đó di chuyển không kiểm soát lên sông (tức là vectơ (0,1)
) cho đến khi bạn va vào một tảng đá (đại diện bởi một o
trong các ví dụ này). Khi bạn va vào tảng đá, bạn sẽ có 55% cơ hội di chuyển qua tảng đá sang trái (tức là vectơ (-1,1)
) và 45% cơ hội di chuyển qua tảng đá sang phải (tức là vectơ (1,1)
). Nếu ca nô nằm ở cột ngoài cùng bên trái hoặc bên phải, nó sẽ luôn di chuyển về phía trung tâm. Nếu không có đá, nó sẽ di chuyển thẳng lên trên.
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
Hình trên: Một lộ trình khả dĩ mà ca nô có thể đi, được biểu diễn bằng ký tự x
Đưa ra bản đồ của dòng sông, viết một chương trình sẽ đưa ra xác suất hoàn thành ca nô tại một cột nhất định.
Chấp nhận đầu vào theo bất kỳ phương thức nào thuận tiện cho chương trình của bạn (ví dụ STDIN, đối số dòng lệnh raw_input()
, đọc từ tệp, v.v.). Phần đầu tiên của đầu vào là một số nguyên duy nhất từ 0 đến 7, đại diện cho cột mà chương trình sẽ tìm xác suất cho. Tiếp theo đó là danh sách các bộ dữ liệu ở dạng x,y
đại diện cho vị trí của các viên đá.
Một ví dụ:
Đầu vào:
4 4,1 5,5 3,5
Điều này sẽ chỉ ra một dòng sông có đá ở các vị trí (4,1), (5,5) và (3,5) và hỏi xác suất của ca nô kết thúc ở cột thứ 4.
Đầu ra:
0.495
Lưu ý rằng trong ví dụ này, vị trí của các tảng đá là đối xứng, cho phép giải quyết vấn đề bằng phân phối nhị thức. Điều này sẽ không luôn luôn như vậy!
Ngoài ra, dòng sông sẽ luôn luôn có thể vượt qua. Đó là, sẽ không bao giờ có hai tảng đá được đặt liền kề nhau theo chiều ngang. Xem bình luận của Glenn để biết ví dụ về trường hợp không thể.
Đây là mã golf, vì vậy số lượng nhân vật thấp nhất sẽ thắng. Vui lòng đặt câu hỏi trong các nhận xét nếu thông số kỹ thuật không rõ ràng.