How to check if an array contains the Pythagorean triplet numbers (a*a+b*b=c*c) in Kotlin

1 Answer

0 votes
fun containsPythagoreanTriplet(arr: IntArray): Boolean {
    val squares = arr.map { it * it }.sorted()

    for (i in squares.size - 1 downTo 2) {
        var a = 0
        var b = i - 1

        while (a < b) {
            val sum = squares[a] + squares[b]
            when {
                sum == squares[i] -> return true
                sum < squares[i] -> a++
                else -> b--
            }
        }
    }

    return false
}

fun main() {
    val input = intArrayOf(4, 7, 3, 1, 5) // 3*3 + 4*4 = 5*5 // 9 + 16 = 25
    
    if (containsPythagoreanTriplet(input)) {
        println("The array contains a Pythagorean triplet.")
    } else {
        println("The array does not contain a Pythagorean triplet.")
    }
}


 
  
/*
run:
 
The array contains a Pythagorean triplet.

*/

 



answered Jul 25, 2025 by avibootz
...