Решаем тремя способами: как математик, инженер и программист.
На одном секретном объекте у начальника охраны была задача: установить по периметру высоковольтный забор, чтобы никто не пробрался внутрь. Но объект был настолько секретным, что даже длина забора на всех участках оставалась тайной. Всё, что было у начальника охраны, — это вот такая схема.
Как начальнику охраны вычислить периметр объекта и возможно ли такое в принципе с такими неполными данными? У этой задачи три решения, и если не хотите пробовать сами — читайте наше.
Решаем как математик
На самом деле все данные для решения у нас уже есть — того, что на рисунке, вполне достаточно.
Сначала находим длину правой стенки — она равна длине левой:
Из рисунка видно, что Х = 50, а значит и длина правой стенки тоже 50 метров.
Теперь посчитаем общую длину нижней стенки и двух стен в вырезе. Начнём с нижней:
Получается, что длина нижних стен забора будет равна 50 + (30 × 2) = 110 метров.
Тогда общий периметр будет равен: 50 (известно) + 50 (известно) + 50 (правая стенка) + 110 (нижние стенки) = 260 метров. Задача решена!
Решаем как инженер
Чтобы решить задачу инженерным методом, нам понадобится рулетка и допуск начальства для обхода периметра (объект же секретный). Как только получили и то и другое — берём рулетку и измеряем те стены, длина которых нам неизвестна. Как только измерили — складываем результат и получаем нужную длину.
Иногда можно просто взять и измерить 🙂
Вероятно, изначально выданный нам план неточный, и только прямое измерение даст достоверный результат.
Решаем как программист
Обозначим все длины, которые нам неизвестны:
Вот правила, по которым мы будем проверять, соответствует ли наше решение исходным данным:
a + c + d = 50
e – 30 + b = 50
Найдём эти значения и весь периметр методом полного перебора: проверим в циклах все значения, и если они подойдут под наши условия — выводим результат. Если результатов будет несколько — выведем все, пусть дальше с ними разбирается начальник охраны.
Исходя из рисунка, пусть наши переменные не будут больше 50 — этого хватит, чтобы перебрать все доступные значения.
Вот код на JavaScript, простой и рабочий. Вы удивитесь, как много вариантов он найдёт: