воскресенье, 24 июня 2012 г.

Русская рулетка

Вас привязали к стулу в тёмном подвале и заставляют сыграть в русскую рулетку. В шестизарядный револьвер вставили два боевых патрона в соседних ячейках, а остальные 4 ячейки оставили пустыми. Прокрутили барабан, выстрелили в потолок - пусто. Перед тем как приставлять дуло к Вашему виску, бандит участливо предлагает либо покрутить барабан ещё раз, либо оставить как есть. Что Вам выбрать?

воскресенье, 17 июня 2012 г.

Два кубика

Я бросил два одинаковых игральных кубика. На одном из них выпала шестёрка, а другой укатился под стол, и я его не вижу. Какова вероятность того, что на кубике под столом тоже выпала шестёрка? Ответы "1/6" и "1/36" неправильные.

Бонусный вопрос: что нужно изменить в условии задачи, чтобы ответ "1/6" стал правильным?

воскресенье, 10 июня 2012 г.

Игла на плоскости

Бесконечную плоскость расчертили параллельными прямыми, расположенными на расстоянии H друг от друга. На эту плоскость наудачу бросают иголку длины L < H. Какова верятность того, что иголка, упав на плоскость, пересечёт одну из прямых?

воскресенье, 3 июня 2012 г.

Несимметричная монета

Дмитрий Медведев и Владимир Путин должны решить, кому из них ехать в скучную командировку в далёкий Кэмп-Дэвид, пропуская целую неделю тренировок по бадминтону. Обычно они решали это простым броском монетки: едет тот, кому выпадает решка. Однако недавно Дмитрий Медведев прочитал в Твиттере, что в реальном мире все монетки несимметричные: на некоторых чаще выпадает орёл, на некоторых - решка. Поэтому говорить о честном выборе с шансами 50/50 для каждого не приходится.

Как можно модифицировать процесс принятия решения при помощи монетки так, чтобы вероятности исходов были бы равны, даже если монетка несимметричная?

воскресенье, 27 мая 2012 г.

Волейбол

5 волейболистов встали в круг и по очереди перебрасывают мяч друг другу. Каждый раз игрок, владеющий мячом, случайным образом выбирает, кому сделать передачу. Сколько в среднем передач они должны сделать, чтобы все хотя бы раз коснулись мяча?

воскресенье, 20 мая 2012 г.

4 мухи

4 мухи сидят на 4-х соседних по горизонтали клетках тетрадного листа. В каждый ход все 4 мухи одновременно переползают на соседние по горизонтали или вертикали клетки. Каждая муха выбирает направление независимо от других, причём остаться на месте, пропустив ход, она не может.

Могут ли мухи после определённой последовательности ходов расположиться в ряд по диагонали?

воскресенье, 13 мая 2012 г.

Примитивы синхронизации

Представьте, что Вы должны написать многопоточную программу на языке, в котором почти нет примитивов синхронизации. Единственное средство - функция TSL (test, set and lock), которая выглядит следующим образом:
int tsl(int* value) {
   int oldValue = *value;
   *value = 1;
   return oldValue;
}
При этом среда гарантирует, что функция атомарна. Например, что компилятор транслирует её в атомарную машинную инструкцию.

Как реализовать с помощью этого примитива критическую секцию? Оптимально было бы получить реализацию двух функций: lock() и unlock().