Найти в Дзене
dvkab python

Задача: как определить, можно ли из заданных трех отрезков сформировать треугольник?

Задача: нам даны три отрезка a, b, c (в данных переменных указаны длины отрезков).

Как определить, можно ли из отрезков a, b, c составить треугольник?

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

a + b > c

b + c > a

c + a > b

Исходные данные для примеров:

Пример №1 (можно сформировать треугольник):

a1 = 4

b1 = 5

c1 = 3

Пример №2 (нельзя сформировать треугольник):

a2 = 1

b2 = 5

c2 = 3

Решение №1

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

Код для решения №1
Код для решения №1

Решение №2

Отсортировать отрезки и сравнить наибольший отрезок с суммой двух наименьших отрезков. Если наибольший отрезок меньше суммы двух наименьших, то это треугольник. В проверке оставшихся двух комбинаций уже нет необходимости, т.к. новый проверяемый отрезок однозначно не может быть больше двух оставшихся отрезков, среди которых уже есть отрезок максимальной длины. Если наибольший отрезок больше суммы двух наименьших, то это НЕ треугольник. В проверке других комбинаций уже нет необходимости, т.к. для треугольника необходимо выполнение общего правила для всех комбинаций отрезков (а у нас уже одна комбинация не соответствует правилу).

Код для решения №2
Код для решения №2

Решение №3.

Найти наибольший отрезок и сделать сравнение: сумма всех отрезков больше, чем 2 * наибольший отрезок. В целом проверка практически такая же , как и в решении №2, т.к., если из выражения min1 + min2 + max > max * 2 вычесть один раз max слева и справа от знака сравнения, то получим такую же проверку, как и в решении №2 (min1 + min2 > max).

Код для решения №3
Код для решения №3