Как решить задачу 5 5 2 и подобные

Как решить задачу 5 5 2 и подобные

Существует несколько способов найти ответ на эту головоломку. Вот их все.

В интернете часто встречаются загадки вроде этой — вычисляйте или нет? А вот так выглядит самая известная из них: «Задача 1978 года». На первый взгляд она кажется простой, но многие не могут её решить. Попробуем разобраться в ней вместе! 

Задачу можно решать разными способами

  • Ответ = 1 + ( 1 / ( 5 − 2 )) × ( 5 ÷ 5) = 1 + 1 × 1 = 2;
  • ( 5 − 2 ) × 5 – 5 = 15;
  • 5 + 5 ÷ 2 = 7,5;
  • 5 + 5 × 2 = 20;
  • 5 − 5 + 5 = 5;
  • отсюда следует, что правильный вариант для задачи № 5:
  • 5 − 5 + 5 = 5;
  • Список:
  • Умножение выполняется слева направо без приоритета скобок:
  • «Задача» → 5 * 5 = 25;
  • деление происходит после умножения:
  • 25 / 2 = 12,5;
  • сложение идёт дальше:
  • 12,5 + 1 = 13,5;
  • вычитание заканчивает расчёты:
  • 13,5 − 5 = 8,5;
  • Так как это число больше трёх, то оно считается решённой задачей. Значит верный ответ к задаче № 5:
  • 8,5;
  • и к задаче № 6 тоже этот же ответ. Но если бы он был меньше трёх, то его нужно было бы округлить вверх до ближайшего целого числа:
  • задача № 6 решается таким образом:
  • |−∞, 5|, [5, ∞). Так как результат находится в диапазоне |−∞, 5], то ответом будет «решено», а в случае, когда значение попадает во второй диапазон, то мы получаем:
  • |5, ∞), поэтому ответим «ожидается завершение»;
  • для остальных случаев:
  • ответ «ничего неизвестно о статусе задания».

Решим другие похожие задачи по аналогии

Если смотреть на эти задачи внимательно, то становится понятно, что тут есть общая структура. Для этого приведём ещё два варианта таких примеров. И посмотрим, насколько они соответствуют нашим выводам выше.

Сначала разберёмся со структурой. Мы видим три блока данных. Два первых нам ничего сказать не дают о том, чем занят программист. Третий блок представляет собой номер задачи. Учитывая наш вывод про статус выполнения работы, у нас получается следующее:

  • если третий блок равен нулю, то работа не началась, значит ответ “в ожидании”;
  • первый элемент массива всегда один, либо минус единицы. Второй элемент может принимать значения от одного до бесконечности. Таким образом, чтобы определить состояние задачи достаточно проверить только величину второго элемента массива. Это позволяет сделать следующий вывод:
  • принимая вторую переменную равным нулю получим, что задание выполнено. Поэтому отвечаем “завершено”. Все остальные варианты отрицательных значений третьего параметра означают наличие проблем, следовательно, ставим знак вопроса. Как правило, всё остальное зависит от того, какие элементы будут присутствовать в массиве. Например, если в нём присутствует индекс одной конкретной задачи, тогда очевидно, что эта задача требует внимания. Аналогично, отсутствие индекса означает, что проблема еще предстоит возникнуть. Однако стоит помнить, что данный метод работает исключительно для простых ситуаций. Когда необходимо учесть множество факторов лучше воспользоваться более сложными методами анализа. Проще говоря, иногда нужного результата достичь поможет даже обычная здравая интуиция.

Теперь попробуем разрешить проблему методом аналогичного моделирования. То есть будем использовать наши предыдущие выводы про структуру запроса и данные, которые содержатся в нем. Итак, перепишем запрос следующим образом:

  • статус_работы(“номер задачи”, массив[значения]);
  • Теперь рассмотрим возможные состояния задач. Стандартные обозначения обозначаются буквами S (Start) и E (End). Они говорят о начале и окончании операций соответственно. Модификаторы P и I указывают на то, является ли операция прогрессирующей, то есть длительной и зависящей от внешних условий, например загрузка файла через сеть интернет. Здесь также важно знать начало операции. Нужна специальная метка R