Я новичок в Scala и функциональном программировании.У меня есть задача, которую я хочу разделить список Scala на список подсписков, где расстояние между каждым элементом в любом подсписке меньше 2. Я нашел код где-то в сети, может сделать это, но я не понимаю, какэтот код работает внутри, кто-то может дать подробное объяснение?
def partition(input: List[Int], prev: Int,
splits: List[List[Int]]): List[List[Int]] = {
input match {
case Nil => splits
case h :: t if h-prev < 2 => partition(t, h, (h :: splits.head) :: splits.tail)
case h :: t => partition(t, h, List(h) :: splits)
}
}
val input = List(1,2,3,5,6,7,10)
partition(input,input.head,List(List.empty[Int]))
Результат выглядит следующим образом:
List [List [Int]] = List (List (10), List (7, 6, 5), Список (3, 2, 1))
, который является желаемым результатом.