Pull to refresh

Слепой программист и фальшивая монета

Reading time3 min
Views29K
20 лет назад я был сильно близорук -7 vs -14. Врачи того времени не могли подобрать правильные очки, которые я бы брал в кинотеатр. Чудо спасло меня. Я стал одним из первых пациентов московского центра глазной хирургии ЭКСИМЕР, где в 1999 году мне сделали операцию по коррекции зрения с использованием лазерной технологии ЛАСИК. Каждый глаз стоил чуть более 1000 долларов. После операции я забыл про очки и стал счастливым человеком.
И оставался счастлив, как вдруг зрение начало портиться. В 2013 году я стал плохо видеть шайбу, к 2015 — футбольный мяч (я играю в футбол и хоккей 6 раз в неделю) и наконец я перестал встречать некрасивых женщин. В мозгу вырисовывался вопрос — что, опять?

Несмотря на совет местного хабра-доктора, которого мы все знаем и уважаем, я решил сделать повторную операцию по коррекции зрения.

Разумеется, я вновь выбрал ЭКСИМЕР, но не московский, а поближе нижегородский.

Мне сделали операцию в пятницу 13-ого. 350 евро за глаз. Как и 17 лет назад, я стал временно дальнозорким; дело в том что после операции ближнее зрение возвращается в обычный режим не сразу. Отеки и туманы могут исчезнуть за 2 дня, а могут и за месяц — все зависит от индивидуума, которому порезали глаза.

Что же такое дальнозоркость? Когда не можешь читать и писать и образ жизни меняется. В основном слушаешь, щупаешь и размышляешь. В голову лезет всякая чушь, в том числе математические загадки, которые достаточно сложно решить в уме.

Одна из таких головоломок неожиданно надолго застряла в голове. Это ребус про фальшивую монету. Напомню условие задачи —
Дано 12 монет и весы разновесы. Известно, что одна из монет фальшивая, то есть либо легче, либо тяжелее прочих.
Как найти фальшивую монету при помощи трех взвешиваний?


Когда-то я успешно решал эту задачу с карандашом на бумаге, но не в уме. Теперь же мне не хватало терпения перебрать в темноте сознания все варианты.

И я решил написать простое приложение под iOS, моделируя условия задачи. Программировать вслепую — это квест. Как и писать эту статью. Но я справился благодаря двум клавишам CMD и +. В данный момент времени я могу распознать текст на 27- дюймовом мониторе, если на экране вмещается не более 18-20 строк. Нечетко. С клавиатурой также непросто — пальцы помнят, но довольно часто сбиваются с привычных позиций. Сами клавиши я, вообще говоря, не вижу, но Ж от i отличаю.

Было довольно много смешных и трагикомичных моментов, Вы и сами можете догадаться; но важно, что я смог отвлечься от сумеречного состояния души.

Приложение, конечно, совершенно безумное, а пользу оно мне принесло. В том числе в интеллектуальном плане. Задачу про фальшивую монету теперь могу решать с закрытыми глазами, в разных модификациях, с продолжениями, слева направо и сверху вниз. Кстати, её до сих пор задают на собеседованиях при приеме на работу.

Несколько слов про жизненный цикл разработки. Изначально я сделал один оригинальный уровень, повторяющий условия задачи. Вдоволь нарешавшись, добавил уровни с 2-мя, 3-мя, 4-мя и так далее, 11-ти монетами. Даже дошкольники научились решать упрощенные задачи.

Я подумал, что неплохо бы добавить уровни, в которых можно решить задачу с вероятностью не менее 0.5 и добавил еще 5 уровней с 13,14,15,16,17-ю монетами. Быстро пройдя новые рубежи, я добавил бесконечное число уровней в рамках 5 бит и успокоился. Да успокойся ты!

Специально для читателей Хабра игра бесплатна и переведена на русский язык.
Фальшивовомонетчик

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

Разумеется, в статье есть математическая умышленная ошибка, кто её обнаружил — тот настоящий программист, не то что я.

Надеюсь, скоро увидимся!
Tags:
Hubs:
Total votes 46: ↑30 and ↓16+14
Comments70

Articles