Ви катаєтеся на каное по досить швидкій річці біловодних. Раптом ваші весла вибухають, і ви потрапляєте в небезпечну ситуацію, що впадає в річку швидкої, без жодних весла. На щастя, у вас все ще є навички програмування, тому ви вирішили вирізати програму на боці свого каное, щоб допомогти вам пережити пороги. Однак з боку каное не має великої площі поверхні для написання вашої програми, тому ви повинні зробити програму якомога коротшою.
Річка може бути представлена як сітка 8 на 16. Позначимо стовпці цифрами 0
до, 7
а рядки цифрами 0
до 15
.
y
--------15
--------14
--------13
--------12
--------11
--------10
--------9
--------8
--------7
--------6
--------5
--------4
--------3
--------2
--------1
--------0
01234567
x
Вгорі: Цілком спокійна звичайна річка без перешкод. Природно, це не річка, на якій ти йдеш.
Ви починаєте з координати (4, 0) і звідти безконтрольно рухаєтесь вгору по річці (тобто вектору (0,1)
), поки не потрапите на скелю (представлену o
в цих прикладах). Якщо ви потрапите в скелю, у вас буде 55% шансів пройти повз скелю вліво (тобто вектор (-1,1)
) і 45% шанс пройти повз скелі праворуч (тобто вектор (1,1)
). Якщо каное знаходиться в крайній лівій або правій колонці, воно завжди рухатиметься до центру. Якщо скелі немає, вона рухатиметься прямо вгору.
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
Вище: можливий маршрут, який може пройти каное, представлене символом x
Давши карту річки, напишіть програму, яка виведе ймовірність закінчення каное в заданій колонці.
Прийміть введення будь-яким способом, зручним для вашої програми (наприклад, STDIN, аргумент командного рядка raw_input()
, читання з файлу тощо). Перша частина вводу - це одне ціле число від 0 до 7, що представляє стовпець, програма знайде ймовірність. Далі йде список кортежів у формі, що x,y
представляє положення каменів.
Приклад:
Вхід:
4 4,1 5,5 3,5
Це вказувало б на річку зі скелями в положеннях (4,1), (5,5) та (3,5), і просить імовірність того, що каное закінчиться у 4-й колоні.
Вихід:
0.495
Зауважимо, що в цьому прикладі положення гірських порід були симетричними, що дозволяло вирішити задачу з біноміальним розподілом. Це не завжди так!
Також річка завжди буде пересічною. Тобто ніколи не буде двох скель, розташованих поруч один з одним по горизонталі. Дивіться коментар Глена на прикладі неможливої справи.
Це код гольфу, тому виграє найменша кількість символів. Ви можете задавати питання в коментарях, якщо специфікація не є чіткою.