Читаем Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов полностью

И мы только что выяснили, что тройка в минус двоичной системе — 111.

С четверкой все просто. Третья позиция — это 4, как и в обычной двоичной системе.

Четыре записывается как 100.

Если вы поставите единицу в крайней справа позиции, то получится пятерка в минус двоичной системе, или 101.

Для того чтобы получилось шесть, не стоит ставить 1 во второй или четвертой позициях справа, так это дает негативные числа (соответственно —2 и —8). Вам нужно перепрыгнуть на пятую позицию, единица в которой обозначает +16. Таким образом, 10 000 — это 16. Это слишком много, но 11 000 — это 16 + (-8) = 8. Отнимите от этого числа двойку — для этого нужно поставить 1 во второй справа позиции (11 010), и вы запишете шестерку в минус двоичной системе.

Семерка получается, если добавить 1 в крайней правой позиции

(11011).

Мы уже раньше узнали, что 11 000 — это восемь.

Добавьте единицу в первой справа позиции — получите девять (11001).

С десяткой придется повозиться. Начните с восьмерки (11 000). Добавьте к этому числу четыре, поставив 1 в третьей позиции (11 100). Теперь вычтите два, поставив 1 во второй позиции (11 110). Это и есть десять.

Итак, первые десять чисел в позиционной системе счисления с основанием минус 2 — это: 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 и 11110.

У вас два сосуда и 100 шариков…

На первый взгляд кажется, что изменить вероятность в ту или иную сторону невозможно. Количество красных и синих шариков абсолютно одинаково. Вам нужно все их использовать — нельзя «потерять» несколько синих шариков. Шарики достают абсолютно случайным образом. Разве шансы достать красный шарик не должны быть 50 на 50?

Так и будет, если вы положите 25 шариков каждого цвета в оба сосуда. Более того, вероятность будет 50 на 50, когда в каждом из сосудов по пятьдесят шариков независимо от того, в какой пропорции в каждом из них перемешаны цвета. Положите все красные шарики в сосуд А, а все синие — в сосуд В. И в том случае вероятность вытащить красный шарик в точности 50 %, потому что такова вероятность выбора сосуда А (а любой случайно выбранный из него шарик, как мы знаем, окажется красным).

Вот что может подсказать ответ на задачу. Вам не нужно класть все 50 красных шариков в сосуд А. Достаточно положить туда всего один красный шарик: ведь и в этом случае вероятность того, что будет выбран сосуд А, остается 50 процентов. Тогда и в этом случае из него случайным образом будет «выбран» только красный шарик — учитывая, что выбирать-то там нечего.

Таким образом, уже только за счет сосуда А вероятность выбора красного шарика составит 50 процентов. Но у вас еще осталось 49 красных шариков, которые вы должны положить в сосуд вместе с 50 синими. В этом случае, если будет выбран сосуд В, шансы выбрать красный шарик из этого сосуда также будут почти 50 на 50 (в действительности эта вероятность равна 49 из 99). Таким образом, вероятность выбора красного шарика в целом (когда шарик случайным образом берется из одного из двух сосудов) будет чуть меньше 75 процентов (50 % + 1/2 от 49/99, а если сосчитать точно — 74,74 %).

Вот такой трюк используется при определении избирательных округов.

У вас есть два ведра емкостью 3 литра и 5 литров и неограниченный запас воды. Как можно отмерить точно 4 литра воды?

Давайте подумаем о том, какое количество воды вы можете отмерить. Опустите 3-литровое ведро в колодец с неисчерпаемым запасом воды и вытащите его с водой: вот вам 3 литра воды. Проделайте то же самое с другим ведром — вот и еще 5 литров.

Для того чтобы отмерить любое другое количество, вам нужно разрешить неопределенность в формулировке условия задачи. Какие действия разрешается совершать, чтобы «точно отмерять нужное количество воды?»

Если бы у вас был «не глаз, а алмаз», вы могли бы на глазок отлить точно один 1 воды из 5-литрового ведра. Это и было бы решением задачи. Очевидно, так вы поступить не можете — иначе вам бы не задавали эту задачу.

Конечно, вы можете добавлять воду. Если бы вам удалось каким-то образом налить по 2 литра воды в 3-литровое ведро и в 5-литровое, то, перелив содержимое 3-литрового ведра в 5-литровое, вы бы получили ровно 4 литра воды.

Но, похоже, что эта операция ничего вам не дает. Вам даже никак не получить 3 + 3 = 6 литров воды, потому что в 5-литровом ведре 6 литров воды не поместится. Вы можете подумать о том, чтобы переливать отмеренное количество воды в ванну, пустой плавательный бассейн, пересохшее озеро — да куда угодно. Интервьюер не разрешит вам делать это. Вы можете представить, что находитесь на планете, которая вся покрыта океаном, и ваши два ведра — это единственные сосуды в этом мире.

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT