user6123723
user6123723

Reputation: 11106

How to get max and min values of an Array of Tuples

Say I have a List of Tuples of Integers

var i = Array(1->3, 5->9, 15->18)

How can I return a Tuple of the highest and lowest values from the above?

So for the above input, 1-> 18 should be returned as 1 is the lowest and 18 is the highest value. Here's the skeleton of the function that takes an Array of Tuples and returns the highest & the lowest values as a Tuple.

    def returnHighest(i: Array[(Int, Int)]): (Int, Int)={

      ....

  }

Upvotes: 1

Views: 1234

Answers (2)

yǝsʞǝla
yǝsʞǝla

Reputation: 16412

Lot's of ways to do this of course. Here is one:

val i = Array(1->3, 5->9, 15->18)
i: Array[(Int, Int)] = Array((1,3), (5,9), (15,18))

scala> val flatI = i.flatMap{case(a,b) => List(a, b)}
flatI: Array[Int] = Array(1, 3, 5, 9, 15, 18)

scala> flatI.min -> flatI.max
res3: (Int, Int) = (1,18)

Upvotes: 1

Stephen
Stephen

Reputation: 4296

You could use foldLeft, but you need to be careful about the start value. What if the array is empty ?

val res4 = Array(1->3, 5->9, 15->18)
res4.foldLeft(res4(0))({
    case (acc, i) =>
      Math.min(acc._1, i._1) -> Math.max(acc._2, i._2)
  }) 
res6: (Int, Int) = (1, 18)

Upvotes: 0

Related Questions