Как решать сложные задачи
Нестандартные решения сложных задач
Меня интересуют различные методы системного и творческого мышления, которое можно использовать в реальной жизни для решения сложных задач. О нескольких методах расскажу в данной статье.
Недавно прочитал книгу Торп С. — Учебник креативного мышления. Простой подход к нестандартным решениям – 2010. В ней предлагается интересный подход для развития навыков решения сложных задач.
Основная мысль автора – чтобы решать сложные задачи, нужно сворачивать с колеи шаблонного мышления, нарушать правила, которые зачастую нам не дают взглянуть на проблему шире. Вот что пишет автор:
Неспособность разрешить какую-то проблему вполне может объясняться тем, что вы застряли в «колее» правил. Мы все живем по правилам — укоренившимся в нас шаблонам мышления, которые ошибочно принимаем за истину. Наши правила формируются естественным образом в результате многократного использования одних и тех же идей. Следуя правилам, мы постепенно увязаем в глубокой «колее», и тогда любые неординарные идеи остаются вне нашего поля зрения.
Как нарушать правила, отлично показано на примере игры «Крестики-нолики».
Многие неразрешимые проблем похожи на игру в «крестики-нолики»» Выигрыш кажется невозможным, как бы ты не играл. Однако нарушив (или расширив) правила можно получить победу множеством путей.
Ход вне очереди
В «крестики-нолики» выиграть очень просто, если делать ходы вне очереди! Конечно в контексте крестиков-ноликов, нарушение правил – это обман. Однако речь идет не о моральных принципах, а о правилах, которые предписывают нам, как следует решать проблему.
Если правила не работают, то почему бы не сыграть на опережение, делая дополнительные ходы.
Мало кому приходит в голову сделать ход вне очереди в реальном мире, но, в сущности, этот прием используется с незапамятных времен. Например, после одного из сражений гражданской войны в Америке генерал Роберт Ли объявил своим офицерам, что генерал Грант двинется на Спотсильванию, так как это наилучшее для него решение. Ли разработал кратчайший маршрут к этому пункту и приказал войскам двигаться туда. Войска Ли сделали, так сказать, ход вне очереди и прибыли в Спотсильванию прежде, чем туда смогла добраться армия Гранта.
Ходы вне очереди — распространенное явление в мире бизнеса. Когда изготовители Тайленола узнали, что аналогичное обезболивающее средство Датрил будет продаваться со значительной скидкой, они сделали ход вне очереди. Они установили цену ниже стоимости Датрила еще до того, как изготовители последнего смогли объявить о своей цене. Рекламная кампания нового лекарства провалилась, и Тайленол удержал свои позиции на рынке.
Мы в компании, часто играем на опережение – ещё на предварительном изучении объекта автоматизации разрабатываем прототип системы. Такой подход нам позволяет глубже понять, что нужно сделать, а заказчику увидеть серьёзность наших намерений.
Используйте активы соперника
Выстроить в ряд три значка совсем не трудно, если к своим двум ноликам прибавить чужой крестик. Зачем ограничивать себя собственными ресурсами? )
Адмирал военно-морского флота США Гарри Ярнелл был первым, кто разработал план нападения японцев на Перл-Харбор. Он определил наиболее перспективные направления и стратегию атаки. В 1932 году он даже провел показательные учения с участием двух авианосцев США. Императорский военно-морской флот Японии превратил план американского адмирала в собственную успешную атаку на базу ВМС США. Японцы не постеснялись воспользоваться американским планом сражения. Если план эффективен, осознано используйте его, независимо от источника.
В шашках и шахматах победная комбинация основывается на расположении, как своих фигур, так и противника, причем именно использование фигур противник зачастую является ключевым элементом победного плана.
В бизнесе предприниматели часто изучают что сдали конкуренты, учитывают их ошибки и создают более прибыльную систему.
Проявите гибкость (и правильно ставьте задачи)
Вы сможете выиграть в «крестики-нолики» или разрешить другие сложные задачи, если примените гибкое определение термина «победа». Позвольте вашему ряду изогнуться, и победа у вас в кармане. Иногда определенные нами условия победы слишком строги или не соответствуют характеру сложившейся ситуации. Измените определение успеха и решение станет возможным.
Кроме того, если задача была поставлена неправильно, то возможно никому не под силу её решить. Задача должна ставиться конструктивно, в расчете на нетривиальные решения, отличные от ваших первоначальных ожиданий. Деструктивная постановка задач связана с таким количеством условий и ограничений, что достижение цели оказывается за пределами человеческих возможностей. Примером деструктивной постановки задачи может быть желание «летать, махая руками, словно крыльями».
При конструктивной постановке задачи приемлемым будет любое решение, позволяющее вам «оторваться от земли». Правильная постановка задачи расширяет диапазон возможных решений.
Сотрудничайте
Правило, ведущее к обязательному проигрышу одной стороны, может оказаться самым большим препятствием на пути к победе любого из участников игры. Сотрудничество с соперником может обеспечить выигрыш вам обоим.
Однажды я услышал фразу на всегда запавшую мне в душу: «В одного можно вырастить только супер-картошку!!». Имеется ввиду, что для решения действительно сложных задач нужна команда и желание сотрудничать.
Пробуйте решать сложные проблемы – нарушайте правила!
От сложного к простому: алгоритм гарантированного решения любой задачи
Достаточно часто люди ставят перед собой задачи, но при этом не знают, как их решить. Каждый человек пытается самостоятельно найти решение данной проблемы. Программист Дэвид Макайвер делится своими методами решения сложных задач.
По мнению Макайвера, его система позволяет освоить то, что на первый взгляд является сложным. Для того чтобы добиться успеха в чем-либо Дэвид часто использует свою систему, но не всегда придерживается всех правил. Его система является беспроигрышной в любом случае, но время на выполнение задачи зависит от многих факторов. Суть данной системы заключается в том, что вы в любом случае получите определенную выгоду, даже если не достигнете конечной цели.
Система с одинарной петлей
Эта система подойдет тем, кто знает, что такое успех, но на данный момент он его не достиг. Как это работает:
Данная система прекрасно работает благодаря отличному видению всего процесса обратной связи. Для того, чтобы становиться лучше в каком-то деле, необходимо сосредоточиться на одном аспекте, откинув все остальное. Обращая внимание сразу на несколько аспектов, вы упускаете возможность достичь успеха.
Петля двойная
В случае невозможности представления окончательного результата придется копнуть несколько глубже и провести двойную работу:
Определение сложных точек
Часто понять то, что нужно улучшить, просто, однако, бывают ситуации, когда человек не может разобраться в данном вопросе. Чтобы лучше сориентироваться и увидеть очевидное, вам потребуется:
Пример решения задачи в написании
Научиться хорошо писать сложно, ведь этот процесс подразумевает множество пунктов, среди которых:
Уже после упоминания этих основных моментов можно подумать и о менее важных. Что вам нужно:
Существует немало примеров того, что следует попробовать, однако, для начала вам нужно выбрать исходную точку и следовать к своим целям. Четко поставленные цели и осознание необходимости их достижения – залог решения даже самых сложных задач. Курс Викиум «Целеполагание» как раз эффективно обучает постановке целей.
Как решить любую сложную задачу в жизни или бизнесе. Метод ТРИЗ
Ежедневно мы сталкиваемся со множеством задач. С легкими и сложными. Сложные задачи кажутся неподъемными. Это вызывает стресс.
Любую сложную и неподъемную задачу можно осилить, когда используешь алгоритм, разбивающий ее на простые шаги. В этом поможет метод ТРИЗ (Теория Решения Изобретательских Задач).
Теория разработана ещё в советское время Генрихом Альтшуллером. Сейчас она снова набирает популярность и используется для развития креативности, умения быстро выявлять суть задачи. Эта методика сокращает время, помогает найти новые решения и справиться с противоречиями. Она решает задачи разной сложности.
Шаг №1 Запрос
Сформулировать тему своей задачи, что мы решаем. Это просто.
Возьмём самый свежий случай из моей личной практики: проблема конкуренции между двумя продюсерами. На днях два человека взялись за моё продвижение в одной социальной сети. Как сделать так, чтобы не путать целевую аудиторию, придерживаться одной маркетинговой стратегии и при этом не отказываться от выгодных партнёрств?
Шаг №2 Определить Идеальный Конечный Результат (ИКР)
На этом шаге нужна точность и честность. Для одной задачи всего один Идеальный Конечный Результат (ИКР). Он должен быть ясным и понятным. То, что мы хотим получить в итоге.
Идеальный – это значит, что он нас устраивает на все 100%.
Идеальный – в плане качества, конечный – в плане завершенности.
Мой ИКР – два продюсерских канала, работающих одновременно в одной социальной сети.
Шаг 3 Освобождение от негативных эмоций
Любая сложная проблема сопровождается негативными эмоциями. Они мешают решать задачу. Важно от них избавиться до того, как мы начнём искать решения.
На этом шаге выписываем все свои беспокойства и сомнения в произвольной форме. Когда выписываем их от руки на лист бумаги, наше внимание освобождается, приходит ясность.
В моём случае это: мои продюсеры перессорятся между собой, каждый будет «тянуть одеяло на себя» и настаивать на своей маркетинговой стратегии. Это не даст мне спокойно работать. Я не хочу отказываться ни от одного из предложений, но переживаю. что запутаем целевую аудиторию в одной социальной сети разной подачей информации, что получу негативные отзывы. Если откажусь от кого-то, буду сожалеть об упущенной возможности.
Шаг 4. Определить ключевое противоречие
Ключевое Противоречие это когда одновременно должны быть 2 противоположных фактора, как жар и холод. К примеру, хотим в механизме, чтобы деталь оставалась холодной, когда мы ее будем нагревать. Нужен парадокс.
На этом шаге мы анализируем чего у нас не хватает для достижения Идеального Конечного Результата. Составляем простую таблицу:
Важно: ни в коем случае не бороться с тем, чего нам не хватает, а решать задачу как есть.Мы хотим достичь ИКР. Это наше желание. При этом у нас по факту отсутствует какой-то ресурс: нужно понять, чего у нас нет (чего мы себе не можем позволить) и принять это как исходные данные задачи.
В моей ситуации начальные данные это невозможность двух маркетинговых стратегий в одной социальной сети, должна быть одна. При этом я хочу, чтобы там работали оба продюсера.
Формулируем парадоксальную задачу(ПЗ): как сделать так, чтобы при одной маркетинговой стратегии два продюсера приносили мне заявки из одной социальной сети?
Шаг 5. Мозговой штурм
На этом шаге после того как
мы, наконец, начинаем мозговой штурм. Важно: после того как мы задали себе вопрос (ПЗ) концентрироваться на инсайтах и быстро их записывать.
Здесь без фильтров и оценок накидываем варианты решений. Штук 15-20. Затем отбираем из них лучший. После этого составляем план со сроками реализации решений по шагам.
Краткая история: у меня сейчас есть партнер-психолог из смежной ниши, которая рекомендует меня на своих вебинарах. Получается симбиоз услуг. При чём так сложилось, что мой партнер не продвигается именно в этой социальной сети, где есть я.
После отбора решений у меня получилось следующее:
Один продюсер продвигает мою соцсеть, другой моего партнера. Партнер рекомендует меня на своих ресурсах. Я получаю два канала одновременно из одной соц.сети при одной маркетинговой стратегии.
Шаг 6. Благодарность себе
Это шаг заключительный и очень приятный.
Здесь мы благодарим себя. Это может быть праздник. Это может быть подарок себе за хорошо проделанную работу. Вознаграждение за тот дискомфорт, который пришлось пройти, решая задачу.
Подведу итог. В методе ТРИЗ есть четкий пошаговый алгоритм, который позволит решить задачу любой сложности. Из любой сферы жизни: бизнес, семья, отношения, здоровье и т.д.
Автор: Арджун Мезенцев – куратор Академии Нетворкинга, основатель «Free Attention Project». Коуч, марафонец. 13 лет проводит тренинги на тему поиска дела жизни и предназначения.
11 приемов для решения сложных задач
Коллекция ментальных инструментов, сокращающих путь к цели и подсказывающих выход из безвыходных ситуаций.
Эффективно решать задачи позволяет ряд общепризнанных стратегических приемов. Их нельзя считать универсальными, подходящими для всех случаев. Но умение применять эти приемы на практике придаст вашим действиям нужный вектор и поможет обрести уверенность. Приведем самые основные из них, которые могут стать руководством в выработке правильных решений.
1. Тщательно анализируем наши цели и средства их достижения
Простых путей при достижении целей, как правило, не бывает и быстро их достигнуть получается не всегда. Поэтому стоит найти обходные пути или же разбить каждую задачу на более мелкие подзадачи, имеющие соответственно свои цели или подцели.
2. Пытаемся решить задачу с ее конца
Такая стратегия решений иногда оказывается очень удобной. Мы начинаем обратное движение от своей конечной цели к текущему положению дел и сокращаем количество возможных вариантов решения.
Ярким тому примером служит задачка с водяными лилиями, которые удваиваются в своем росте раз в 24 часа, и нам нужно определить, какая площадь озера будет покрыта на день 59-й. Если мы не начнем решать этот вопрос с конца, то мы никогда не сделаем вывод, что на 59-й день будет покрыта лилиями лишь половина озера. То есть мы будем в состоянии решить поставленную задачу только стратегией обратного хода, минуя «прямую» стратегию, которая однозначно приведет нас в логический тупик!
3. Пытаемся максимально упростить решение
Самые трудные задачи обычно сложны по своей структуре, поэтому их следует стараться максимально упростить. При этом наглядное представление нашей задачи само собой подсказывает нам самые эффективные пути ее решения. Стратегией упрощения легко решить любую, даже самую сложную абстрактную задачу: стоит ее наглядно представить – и появляются идеи, позволяющие найти оптимальный выход.
Яркий пример тому – кошка на дереве, которую нужно снять с высоты трех метров с помощью двухметровой лестницы. Только графически изобразив (максимально упростив) эту геометрическую задачку, мы сможем найти ее правильное решение, представленное в виде гипотенузы прямоугольного треугольника и его катеты.
4. Пробуем варианты решения и выявляем ошибки
Такая стратегия хороша при явном незначительном количестве возможных вариантов решения, когда, перебирая одно за другим, мы быстро находим единственно правильный вариант. Каждая проба и каждая ошибка в такой стратегии приближают нас к желаемой цели. Таким способом хорошо решать короткие анаграммы, где задачи поставлены четко, и при этом ясно видимы возможные пути их решения – перестановка букв для получения нужного слова и тому подобное.
5. Узнаем правила решения
Определенные типы задач имеют определенные правила решения. Обычно это так называемые задачи последовательности, требующие усвоить принципы их правильного построения. В этих интеллектуальных задачах нужно просто найти закономерность – и они будут однозначно решены!
6. Ищем подсказки
Мы всегда можем отыскать нужное нам решение задачи, получив дополнительную информацию. Ведь в ней часто скрыты те важные сведения, которые и помогут найти нам то единственно правильное. Часто такие подсказки требуют от нас искать другие пути решений, но результат при этом будет неизменен. Самый удачный пример таких задачек – игра «горячо-холодно».
7. Делим имеющуюся информацию «пополам»
Такой метод представляет собой замечательную стратегию поиска, предполагающую, что уже имеющаяся у нас информация не дает нам единственно правильного варианта решения.
Пример – авария водопровода. Если в нашей квартире нет воды, мы не знаем, на каком участке между коммунальной системой и нашим краном случился засор. Как определить это место? Конечно же, исследовав всю нашу «трубу». Чтобы понять место засора, «трубу» нужно просверлить. А где это сделать эффективнее всего? Да где-то посерединке! Начать работу стоит в середине всех проложенных в квартире неработающих коммуникаций и затем разбивать проверенные участки пополам. Так мы в итоге найдем проблемное место быстрее всего.
8. Используем «мозговой штурм»
Хоть этот метод первоначально использовался для групповых задач, но он нашел свое воплощение и в индивидуальной работе. Благодаря брейнстормингу мы можем найти множество более-менее оптимальных решений для поставленной перед нами задачи. Решения подчас кажутся безумными и не совсем адекватными, но в итоге они оказываются самыми действенными изо всех возможных!
Благодаря этому методу возможно найти те самые нужные решения, когда мозги совсем уж «застоялись». Этот метод идеален в условиях различных ограничений – жестких финансовых, жестких временных, жестких этических и любых других.
9. Переформулируем условие задачи
Эта стратегия очень ценна для текущих задач, которые не имеют каких-либо четко поставленных рамок, как это часто бывает в нашей работе и в наших реалиях. Если мы не имеем четкой формулировки имеющейся задачи – ее надо постараться для себя определить, чтобы понять, как именно с ней бороться и какие методы при этом использовать.
Яркий пример такой задачи ежедневно становится практически перед каждым из нас и звучит так: «Как сделать денежные накопления?». Сколько семей задаются у нас таким вопросом? Да почти все! Как эффективно решать эту задачу? Да очень просто: давайте переформулируем нашу проблему в «как можно стать богаче». Такая формулировка дает понять: нужна не просто работа, а работа с более высокой оплатой, важно инвестировать в более прибыльное дело, сорвать джек-пот или сделать что-то другое. Главное: мы четко определились, как улучшить свою жизнь, и начинаем искать для этого самые подходящие варианты! Чем таких вариантов будет больше – тем быстрее наша жизнь будет меняться в ее лучшую сторону…
10. Используем аналогии
Нас окружает неисчислимое множество крылатых выражений и метафор, которые проверены многими сотнями лет. Что же нам мешает взять их на вооружение? Ответ вас поразит: только наша природная лень! Давайте задумаемся: а откуда все остальные черпают новаторские идеи? Да просто из многовековой мудрости! Для этого и передаются из поколения в поколение притчи, чтобы подсказывать правильные выводы из повторяющихся ситуаций.
Все аналогии, которые содержат притчи, метафоры и наши собственные фантазии, условно можно разделить на четыре группы:
11. Консультируемся со специалистами
Решать в одиночку сложные задачи бывает очень непросто. Тогда мы стараемся посоветоваться с теми, кто соображает в этом лучше нас. Мы обращаемся к бухгалтерам, когда у нас возникают сложные вопросы по «дебиторке», к врачам – при осложнении простуды, к строителям – при перепланировке квартиры. Делаем мы это потому, что эти люди могут нам посоветовать такие решения наболевших проблем, которые мы найти сами не сможем.
Обращаясь друг к другу, мы обогащаемся новыми знаниями и становимся компетентнее в каждом отдельном вопросе. Не стоит бояться обратиться к более компетентному человеку. Здесь нет абсолютно ничего зазорного. Ведь к вам он потом обратится.
Реально сложные задачи
Без шуток, мы предупредили.
Если вы любите поломать мозг над трудностями и обожаете сложности — эта подборка для вас. В каждой задаче относительно простая математика, но убийственная логика, которая, как ни странно, оказывается правильной. Если вы сможете сами решить их все без наших подсказок — напишите об этом в комментариях, IT-сфера должна знать своих героев.
Бабушка и помидоры
Бабушка решила заняться фермерским хозяйством — выращивать и продавать помидоры. Она насобирала 100 кг томатов, погрузила их на тележку и выставила с утра перед домом.
Помидоры, которые вырастила бабушка, на 99% состоят из воды, но на солнце часть воды испаряется сквозь кожуру. День выдался жарким, и к вечеру воды в помидорах стало уже 98%. Сколько теперь весят бабушкины помидоры?
Результат может оказаться неожиданным для вас, поэтому внимательно следите за расчётами.
Для начала рассчитаем состав помидоров с утра. В них было 99% воды. Это значит, что в них было 99 килограммов воды и 1 килограмм клетчатки. Эта клетчатка с утра занимала 1%:
100% — 99% = 1%.
По условию задачи, этот килограмм клетчатки не может испариться или исчезнуть, его вес всегда одинаковый. Испаряется только вода.
Теперь считаем состав помидоров вечером: воды было уже 98%. Это значит, что количество воды уменьшилось, но вся клетчатка осталась на месте: как был килограмм с утра, так и остался. Но изменилось процентное соотношение клетчатки к воде: сейчас тот же самый килограмм клетчатки занимает 2% общего веса. Давайте посчитаем, сколько тогда вечером весят все помидоры:
2% помидоров весит 1 килограмм, а значит 20% весят 10 килограмм.
Умножаем обе части на 5, чтобы получить полный вес. Получаем:
100% = 50 кг.
Оказывается, к вечеру вес снизился вдвое! Это неинтуитивно, но так работает математика. ¯\_(ツ)_¯
Странный разговор двух программистов
Встречаются два программиста, которые давно друг друга не видели. У них происходит такой диалог:
— Я слышал, у тебя дети появились.
— Ну. В сумме — тринадцать!
— Хм. Ты снова загадками говоришь? Ну ладно. Что ещё можешь сказать?
— Если возрасты перемножить, получится столько же, сколько окон вон у того дома.
Программист считает окна и прикидывает варианты.
— Но этого до сих пор недостаточно для ответа!
— Могу добавить, что мой старший сын — рыжий.
Сколько же лет им было? И как первый смог вычислить возраст?
Если вам до сих пор кажется, что эта задача — полная дичь, мы вас понимаем. И всё-таки у неё есть чёткое, логичное и точное решение.
Суть его в том, что каждый ответ второго — уточнение или подсказка для решения. И первый задавал вопросы до тех пор, пока все подсказки не привели его к правильному ответу. Давайте проследим за ходом его мыслей.
Первый ответ говорит нам о том, что всего детей — трое. Хорошо, но явно недостаточно для того, чтобы вычислить возраст.
Второй ответ говорит о том, что в сумме детям 13 лет. Давайте запишем все возможные комбинации возрастов, которые подходят под это условие:
Остальные комбинации получаются из этих простой перестановкой возрастов.
Третий ответ — произведение возрастов равно числу окон. Кажется, что это вообще никак нам не помогает, потому что мы не знаем количества окон в доме, — но это не так. Если бы этого ответа было достаточно, то первый бы сразу назвал возраст, но раз он этого не сделал, значит, информации было недостаточно.
Давайте посмотрим на произведения всех комбинаций возрастов и попробуем понять, что же с ними не так:
1 × 6 × 6 = 36
2 × 2 × 9 = 36
Раз этого ответа про количество окон оказалось недостаточно, значит в доме было столько окон, что под это число попадали сразу несколько результатов произведений. Мы выделили их в таблице. Все остальные числа давали бы однозначный ответ про возраст, а для числа 36 есть несколько вариантов, поэтому первый сказал, что этого ему недостаточно.
Четвёртый ответ — старший сын рыжий. Цвет волос нам не так важен, как количество старших сыновей. Так как «старший сын» означает, что он такой старший один, значит, вариант 1 — 6 — 6 нам не подходит, потому что в нём старших сыновей двое. Остаётся только один вариант: 2 — 2 — 9.
Ответ: старшему сыну 9 лет, двум другим — по 2 года.
Странные программисты снова разговаривают
Двоих программистов вывезли на кладбище бандиты из девяностых. Бандиты тайно выбрали 2 целых положительных числа, оба больше единицы, а их сумма меньше 100. Первому программисту бандит сказал произведение этих чисел, а второму — их сумму. После этого у программистов состоялся такой разговор.
Первый: Я понятия не имею, какая у тебя сумма.
Второй: Ха-ха, это для меня не новость! Я и так знал, что ты не знал этого.
Первый: Ага! Теперь я понял, чему равна твоя сумма!
Второй: Отлично — теперь и я тоже знаю твоё произведение!
Бандиты, конечно же, их отпустили. Потому что это загадка! А загадка в том, что это за числа и как программисты это выяснили.
В отличие от предыдущей задачи, здесь решение намного сложнее, потому что в голове нужно держать одновременно 2-3 условия, которыми надо проверять числа. Но мы справимся.
Для решения нам понадобится вспомнить, что такое простые числа и в чём их особенность. Простое число — то, которое может делиться нацело только на себя и на единицу. Например, число 5 — простое, потому что делится только на 5 и на 1. А число 6 — не простое, потому что кроме 6 и 1 оно ещё делится на 2 и 3 без остатка. Семь тоже будет простым числом, а восемь — нет, потому что кроме 8 и 1 оно делится также на 2 и 4.
Если перемножить два простых числа, то полученное произведение больше никак нельзя получить другим способом (кроме умножения этого же числа на единицу). Поясним на примере.
Возьмём два простых числа 5 и 7 и перемножим их — получится 35. Больше число 35 получить никак не получится, кроме как умножить 35 на 1. Это значит, что если произведение можно разложить на два простых множителя, то других вариантов разложения (кроме числа и единицы) у него не будет. Это нам пригодится при решении задач — и если число можно разложить на 2 простых, то и их сумму тоже легко сразу посчитать.
54 = 6 × 9, а это значит, что число 54 нельзя получить перемножением двух простых чисел и нельзя сразу сказать, чему однозначно равна сумма множителей.
Оба числа простые, поэтому произведение 21 можно получить только из них, а значит, легко посчитать сумму — она будет равна 3 + 7 = 10.
Теперь переведём их диалог на язык математики и логики и обозначим числа как n и m:
Первый: Я понял, что одно из чисел точно не простое, потому что иначе я сразу бы разложил число на произведение двух простых и легко получил сумму. А раз так, то это одно из чисел m или n можно получить перемножением двух других чисел. Поэтому общее произведение состоит не менее чем из трёх множителей, причём как минимум один из них отличается от остальных — поэтому получается несколько вариантов возможных сумм, и я не знаю, какая из них правильная (пометим это как Правило 1).
Второй: Сумму, которая у меня есть, нельзя получить из двух простых чисел, поэтому и твоё произведение тоже нельзя разложить на два простых множителя. Это значит, что у меня нечётная сумма, потому что, по гипотезе Гольдбаха, в нашем случае можно получить любое чётное число, сложив два простых. А раз это не два простых числа, значит, и сумма будет нечётная. А ещё эта сумма точно не равна сумме двух и простого числа, потому что два — тоже простое, ха! Поэтому есть несколько вариантов суммы m и n, которые подходят под твои условия, но я не могу пока определить, какие именно (пометим это как Правило 2).
Первый: Из всех множителей моего произведения я могу составить только один вариант пары, сумма которой подойдёт под твоё ограничение — не будет разбиваться на сумму двух простых или сумму чисел одного множителя (Правило 3).
Второй: Ах вот как! Из всех вариантов пар, на которые можно разбить сумму и подходящих под твои условия, есть только одна, которая позволила бы тебе определить это (Правило 4). Теперь и мне понятно, что это за числа!
Теперь подберём варианты суммы, которая была у второго. Ограничения такие:
1 — не подходит, потому что оба числа больше единицы.
2, 4, 6, 8… — нет, потому что чётные.
3 — нет, потому что это сумма двойки и простого числа.
5 — нет, по той же причине (2 + 3).
9 — тоже нет (2 + 7, а 7 — простое число).
11 — подходит.
13 — нет, потому что 13 = 2 + 11 (11 — простое число).
15 — нет, потому что 15 = 2 + 13 (13 — тоже простое число).
17 — подходит.
19 — нет, потому что 19 = 2 + 17 (17 — простое число).
Способ подбора суммы понятен, дальше можно продолжать по тому же алгоритму. Мы же выберем те, которые нам уже подошли, и на их примере покажем, что нужно делать дальше, чтобы получить правильный ответ. Наши числа, которые нам подходят уже сейчас: 11 и 17. Начнём с 11.
Сумма = 11.
Найдём все слагаемые, которые могут давать эту сумму:
Для каждого из них запишем произведение и проверим, выполняется ли Правило 3, которое сказал первый программист.
Смотрим на произведение 2 × 9 = 18 и как ещё его можно получить.
18 = 2 × 9 → Да (Правило 3 выполняется).
18 = 3 × 6 → Нет (Правило 3 не работает, потому что 3 + 6 = 9, а 9 можно получить из простых чисел 2 и 7).
Смотрим на произведение 3 × 8 = 24.
24 = 2 × 12 → Нет (чётная сумма, Правило 2 не работает).
24 = 3 × 8 → Да (выполняется Правило 3).
24 = 6 × 4 → Нет (чётная сумма).
Смотрим на произведение 4 × 7 = 28.
28 = 2 × 14 → Нет (чётная сумма).
28 = 4 × 7 → Да (выполняется Правило 3).
Смотрим на произведение 5 × 6 = 30.
30 = 2 × 15 → Да.
30 = 3 × 10 → Нет (Правило 3 не работает, потому что 3 + 10 = 13, а 13 можно получить суммой простых чисел 2 и 11).
30 = 5 × 6 → Да.
Тут мы вообще не можем выбрать одну пару, потому что Правило 3 выполняется 2 раза, а значит, этот вариант отбрасываем.
Получается, что для суммы 11 могут быть три варианта произведений, для которых выполняется Правило 3: 2 и 9, 3 и 8, 4 и 7. Но тогда Правило 4 не выполняется, потому что нужно, чтобы для одной суммы была только одна пара, которая подходит под правило 3. Продолжаем искать.
Сумма = 17.
Найдём все слагаемые, которые могут давать эту сумму:
Для каждого из них запишем произведение и проверим, выполняется ли Правило 3, которое сказал первый программист.
Смотрим на произведение 2 × 15 = 30 и как ещё его можно получить.
30 = 2 × 15 → Да.
30 = 3 × 10 → Нет (Правило 3 не работает, потому что 3 + 10 = 13, а 13 можно получить суммой простых чисел 2 и 11).
30 = 5 × 6 → Да.
Тут мы вообще не можем выбрать одну пару, потому что Правило 3 выполняется 2 раза, а значит, этот вариант отбрасываем.
Смотрим на произведение 3 × 14 = 42 и как ещё его можно получить:
42 = 2 × 21 → Да.
42 = 3 × 14 → Да.
Два раза выполняется Правило 3 — отбрасываем пару.
Смотрим на произведение 4 × 13 = 52 и как ещё его можно получить.
52 = 4 × 13 → Да.
Смотрим на произведение 5 × 12 = 60 и как ещё его можно получить.
60 = 3 × 20 → Да.
60 = 5 × 12 → Да.
Два раза выполняется Правило 3 — отбрасываем пару.
Смотрим на произведение 6 × 11 = 66 и как ещё его можно получить.
66 = 2 × 33 → Да.
66 = 6 × 11 → Да.
Два раза выполняется Правило 3 — отбрасываем пару.
Смотрим на произведение 7 × 10 = 70 и как ещё его можно получить.
70 = 2 × 35 → Да.
70 = 7 × 10 → Да.
Два раза выполняется Правило 3 — отбрасываем пару.
Смотрим на произведение 8 × 9 = 72 и как ещё его можно получить.
72 = 3 × 24 → Да.
72 = 8 × 9 → Да.
Два раза выполняется Правило 3 — отбрасываем пару.
Получается, что для суммы 17 может быть только один вариант произведения, для которого выполняется Правило 3: это 4 и 13. А значит, что Правило 4 тоже выполняется и мы нашли нужные числа!
Если вы дочитали досюда и всё поняли — снимаем шляпу. Вы не из тех, кого могут испугать вычисления и логический подход!
Программисты и странное знакомство
Два джуна, Аркадий и Борис, только что познакомились с Катей и спрашивают, когда у неё день рождения. Катя — технический директор и не любит отвечать прямо, поэтому предложила им десять возможных дат:
Затем она сказала Аркадию месяц своего рождения, а Борису — день. После этого состоялся диалог:
Аркадий: Я не знаю, когда у Кати день рождения, но я знаю, что Борис тоже не знает.
Борис: Хе-хе, сначала я тоже не знал, когда у неё день рождения, но теперь знаю.
Аркадий: А, ну теперь и я знаю.
Как они снова это сделали?
Оставим за скобками, что они могли просто сообщить друг другу день и месяц.
Аркадий: я не знаю, когда у Кати день рождения, но я знаю, что Борис тоже не знает
Аркадий знал только месяц, но был уверен, что Борис про месяц не догадается — рассмотрим это подробнее.
Если бы Катя назвала Борису 18-е или 19-е число, Борис бы сразу понял, что это 19 мая или 18 июня, потому что эти числа встречаются только один раз. Но Аркадий мог гарантировать, что Борис не знает точной даты, только в одном случае — если бы день рождения был в июле или в августе. Иначе есть риск, что Борису назвали 19-е число из мая или 18-е из июня.
Получается, что это не может быть май или июнь, иначе нет стопроцентной гарантии, что Борису не назовут 18-е или 19-е число. Остаются июль и август.
Борис: хе-хе, сначала я тоже не знал, когда у неё день рождения, но теперь знаю
На этом моменте у нас остались такие даты: 14 июля, 14 августа, 16 июля, 15 августа, 17 августа. Борис понял, что Аркадий исключил май и июнь, и это дало ему нужную подсказку по месяцу. Получается, что это было точно не 14 число, потому что оно встречается по одному разу в каждом оставшемся месяце, и ответ Аркадия ничего бы Борису не дал.
Остаются 16 июля, 15 августа и 17 августа. Именно среди них и есть день рождения Кати, месяц которого Борис однозначно определил по числу. Мы с вами пока его ещё не знаем, но Борис в этот момент его уже вычислил.
Аркадий: А, ну теперь и я знаю
После ответа Бориса Аркадий понял, что Борис оставил себе эти три даты и по числу догадался о месяце. Нам же вместе с Аркадием нужно сделать наоборот — по месяцу догадаться о числе.
16 июля, 15 августа, 17 августа.
По условию, Аркадий знает месяц, и раз он после ответа Бориса догадался о точной дате, то это был июль. Дело в том, что если бы Аркадию назвали август, то он бы не смог однозначно выбрать, 15 или 17 августа отмечается день рождения. А раз так, то остаётся июль, а единственное оставшееся число в июле — 16-е.
Получается, что день рождения Кати — 16 июля, а Борис и Аркадий снова получают приз за самые странные диалоги.
Но пошла ли она с кем-то из них на свидание?
Самая сложная задача в мире
Имеются три разработчика: бэкенд (А), фронтенд (В) и фулстек (С). Первый всегда говорит правду, второй всегда лжёт, а третий всегда отвечает случайным образом, то есть может как соврать, так и сказать правду. Нужно за три вопроса выяснить, кто из них кто.
Ограничения и условия:
Наша задача — однозначно определить бэкенда и фронтенда, чтобы методом исключения найти фулстека.
Сложность задачи в том, что мы не знаем, что означают их ответы. Если мы что-то спросим и нам ответят «Надо подумать», то как мы поймём, это «Да» или «Нет»? Получается, что нам нужно задавать такие вопросы, чтобы уже с первого ответа понять, что на самом деле означает их «Зависит от ситуации» или «Надо подумать».
Но тратить один вопрос из трёх только чтобы выяснить это — глупо. Надо ещё получить какую-то информацию о том, кто перед нами (или кого перед нами точно нет). Значит, первый вопрос должен состоять из двух частей: дать нам новую информацию о разработчике и одновременно с этим установить, что у них означает «Зависит от ситуации» и «Надо подумать».
Например, сформулируем вопрос так: «Если я спрошу у тебя „Программист В — это фулстек?“, ты ответишь мне „Зависит от ситуации“?»
Общая схема составления подобных вопросов такая: мы формулируем какой-то вопрос про другого программиста и спрашиваем, если бы ответ был верным, ты бы ответил вот так-то? Такие вопросы помогут понять, что за программист стоит перед нами, и, что самое важное, даст нам дополнительную информацию про второго программиста.
Чтобы понять, как работают такие вопросы и почему их нужно использовать, давайте разберём, как на них отвечают бэкенд и фронтенд. Фулстека пока разбирать смысла нет: он отвечает абсолютно рандомно, и как трактовать его ответы, расскажем позже.
Например, вот вопрос: «Если я спрошу у тебя „Разработчик В — это фулстек?“, ты ответишь мне „Зависит от ситуации“?»
Если правильный ответ на заданный нами вопрос — «Да», то нам ответят «Зависит от ситуации», а если правильный ответ — «Нет», то нам ответят «Надо подумать».
Автор задачи понимал, что это утверждение нужно чем-то доказать, поэтому он сразу после текста задачи привёл доказательства своей правоты. Следите внимательно за логикой ответов.
1. Допустим, что «Зависит от ситуации» означает «Да», а «Надо подумать» означает «Нет»:
2. Представим обратное: «Зависит от ситуации» означает «Нет», а «Надо подумать» означает «Да»:
Это безумно сложное на первый взгляд доказательство математически верное. Мы к нему ещё вернёмся, когда будем рассказывать про математическую логику и про то, как она работает в жизни.
Если вы три раза прочитали это, но так ничего и не поняли — это нормально, тогда просто поверьте, что доказательство верное 🙂
Теперь мы можем это использовать для того, чтобы выяснить, кто из них кто.
1. Сначала зададим второму разработчику вопрос: «Если я спрошу у тебя „Первый разработчик — это фулстек?“, ты ответишь мне „Зависит от ситуации“?»
Если второй разработчик отвечает «Зависит от ситуации», значит, либо он фулстек и отвечает абсолютно рандомно, либо он не фулстек, а на самом деле первый разработчик — фулстек. В любом варианте, третий оставшийся разработчик — это не фулстек.
Если же второй отвечает «Надо подумать», то либо он фулстек и отвечает случайным образом, либо он не фулстек, а это означает, что первый разработчик — тоже не фулстек. В любом варианте, первый разработчик — это не фулстек.
2. По первому вопросу нам стало понятно, кто из них НЕ фулстек. Спросим у него: «Если я спрошу у тебя: „Ты — фронтенд?“, ты ответишь мне „Зависит от ситуации“?» Поскольку он не фулстек, ответ «Надо подумать» означает, что он бэкенд, а ответ «Зависит от ситуации» означает, что он фронтенд.
3. Спросим у этого же разработчика «Если я у тебя спрошу: „Программист, которому я задавал свой первый вопрос — фулстек?“, ответишь ли ты „Зависит от ситуации“?» Если ответят «Зависит от ситуации» — то первый, у кого мы спрашивали, будет фулстеком, а если нам ответят «Надо подумать», то фулстеком будет программист, с которым ещё не говорили.
Последний разработчик определяется методом исключения.
Монти Холл и три шкатулки
Перед вами стоят три одинаковых закрытых шкатулки, в одной из них лежит много денег, а две других — пустые. Можно выбрать любую шкатулку, но сразу открывать нельзя. Затем ведущий игры берёт одну из оставшихся шкатулок, открывает и показывает, что она пустая.
Теперь у вас есть выбор: оставить себе ту шкатулку, которую вы выбрали с самого начала, или поменять её на оставшуюся неоткрытую. Как лучше поступить?
Отбросим в сторону эмоции, интуицию и прочую эзотерику и начнём решать эту задачу как программисты — дадим нашим шкатулкам имена:
Изначально вероятность того, что вы выбрали сразу шкатулку с деньгами — 33%, потому что в самом начале у каждой шкатулки одинаковые шансы. Но теперь всё зависит от того, случайно ли ведущий открыл Пустую шкатулку, или знал заранее, что в ней ничего нет. Именно от этого будет зависеть, как нужно поступить.
Если пустую шкатулку открыли случайно
Допустим, ведущий игры не знал ничего о содержании шкатулки. То есть, открывая одну из невыбранных, он мог открыть и шкатулку с деньгами.
Раз этого не произошло и никто действительно заранее не знал, в какой из шкатулок деньги, то у них теперь равные шансы на победу: вместо ⅓ они стали равны ½. У обеих шкатулок теперь одинаковая вероятность оказаться с деньгами, поэтому менять шкатулки смысла нет: математически это никак не увеличит ваши шансы. Всё, что будет дальше, уже эзотерика.
Итого. Если Пустую шкатулку открыли случайно и никто не знал заранее, что она пустая, то верная стратегия будет такой: оставить себе Выбранную шкатулку.
Пустую шкатулку выбрали специально
Теперь рассмотрим ситуацию: ведущий знал, что открытая шкатулка окажется пустой. Он изначально знал, где лежат деньги, и специально выбрал пустую шкатулку, чтобы её открыть.
Это совсем другая ситуация, хотя может показаться, что она такая же, как и в первом случае. На самом деле нет. Там у нас появлялась новая информация, потому что никто не знал, где лежат деньги. Новая информация заставила пересчитать шансы.
В этом случае новой информации нет, потому что шкатулка с деньгами известна заранее. А раз новой информации нет, то у Выбранной шкатулки, шансы на победу как были ⅓, так и остались. А теперь начинается магия теории вероятности: шансы на победу у Неизвестной шкатулки выросли вдвое!
Дело тут вот в чём. Раз изначально у всех шкатулок шансы были равны, то для каждой шкатулки они составляли ⅓. Когда нам умышленно открыли Пустую шкатулку, то вероятность Выбранной шкатулки не поменялась (так как новой информации нет), а вероятность Неизвестной шкатулки выросла вдвое:
⅓, которая была изначально + ⅓, которая перешла от Пустой шкатулки к Неизвестной = ⅔.
Нет новой информации — шансы не пересчитываются, а перераспределяются между теми шкатулками, содержимое которых заранее известно. Раз открывающий шкатулки знает, где деньги, значит, шансы перераспределяются между ними. А у вашей шкатулки как был шанс на победу ⅓, так и остался.
Итого. Если Пустую шкатулку открыли специально, правильная стратегия будет такой: поменять Выбранную шкатулку на Неизвестную. Это повысит ваши шансы на победу в 2 раза.
Важно понимать, что мы говорим о шансах и вероятностях, а не о конкретном единичном случае. Иначе говоря, эта стратегия будет иметь смысл, если сыграть много игр с одинаковыми условиями: сто, триста, тысячу. На одной конкретной игре эффект вероятностей не будет заметен. Поэтому вместо азартных игр мы рекомендуем коммерческое программирование.