object FloorCeilFinder {
// Finds the floor and ceiling of N in the given list
def findFloorAndCeil(lst: List[Int], N: Int): (Int, Int) = {
var floorval = Int.MinValue // Initialize to the smallest possible value
var ceilval = Int.MaxValue // Initialize to the largest possible value
for (num <- lst) {
if (num <= N && num > floorval) {
floorval = num // Update floorval if num is closer to N
}
if (num >= N && num < ceilval) {
ceilval = num // Update ceilval if num is closer to N
}
}
// If no valid floorval or ceilval is found, set them to a special value
if (floorval == Int.MinValue) floorval = -1
if (ceilval == Int.MaxValue) ceilval = -1
(floorval, ceilval)
}
def main(args: Array[String]): Unit = {
val lst = List(4, 10, 8, 2, 6, 9, 1)
val N = 5
val (floorval, ceilval) = findFloorAndCeil(lst, N)
println("floor: " + (if (floorval == -1) "None" else floorval.toString))
println("ceil: " + (if (ceilval == -1) "None" else ceilval.toString))
}
}
/*
run:
floor: 4
ceil: 6
*/