object ShortestRunProgram {
def shortest_identical_consecutive_subarray(arr: Array[Int]): Array[Int] = {
if (arr.isEmpty) return Array.empty[Int]
var bestStart = 0
var bestLen = arr.length
var currentStart = 0
var currentLen = 1
for (i <- 1 until arr.length) {
if (arr(i) == arr(i - 1)) {
currentLen += 1
} else {
if (currentLen < bestLen) {
bestLen = currentLen
bestStart = currentStart
}
currentStart = i
currentLen = 1
}
}
if (currentLen < bestLen) {
bestLen = currentLen
bestStart = currentStart
}
arr.slice(bestStart, bestStart + bestLen)
}
// ------------------------------------------------------------
// MAIN PROGRAM
// ------------------------------------------------------------
def main(args: Array[String]): Unit = {
val arr = Array(
3,3,3,
7,7,7,7,7,
2,2,
5,5,5,5,
9,9,9,9,9,9
)
val resultArr = shortest_identical_consecutive_subarray(arr)
print("Array result: ")
resultArr.foreach(x => print(s"$x "))
}
}
/*
run:
Array result: 2 2
*/