https://kotlinlang.org logo
#russian-kotlinasfirst
Title
# russian-kotlinasfirst
a

Asdzendo

02/16/2020, 5:30 PM
Есть идеи по красивее?
Copy code
**
 * Простая
 *
 * Треугольник задан длинами своих сторон a, b, c.
 * Проверить, является ли данный треугольник остроугольным (вернуть 0),
 * прямоугольным (вернуть 1) или тупоугольным (вернуть 2).
 * Если такой треугольник не существует, вернуть -1.
 */
//Ок
fun triangleKind(a: Double, b: Double, c: Double): Int =
    when {
        a > b + c || b > a + c || c > a + b -> -1    // это не треугольник
        (c * c < a * a + b * b) && (a * a < b * b + c * c) && (b * b < a * a + c * c) -> 0  // остро
        c * c > a * a + b * b || a * a > b * b + c * c || b * b > a * a + c * c -> 2  // тупо
        else -> 1  // прямо
    }

fun triangleKind1(a: Double, b: Double, c: Double): Int =
    if ((a > b + c) || (b > a + c) || (c > a + b)) -1
    else if ((c * c < a * a + b * b) && (a * a < b * b + c * c) && (b * b < a * a + c * c)) 0
    else if ((c * c > a * a + b * b) || (a * a > b * b + c * c) || (b * b > a * a + c * c)) 2
    else 1
m

mglukhikh

02/17/2020, 7:19 AM
Можно в начале функции определить самую длинную
maxOf
, самую короткую
minOf
и третью сторону. Сильно короче не станет, но троекратное повторение одинаковых условий уберётся.
9 Views