Группировка элементов списка путем сравнения их с соседями

Каков наиболее элегантный способ группировки списка значений в группы на основе значений соседей?

В более широком контексте у меня есть список строк, которые нужно сгруппировать в абзацы. Я хочу сказать, что если вертикальная разница между двумя линиями ниже порога, они находятся в одном и том же абзаце.

В итоге я решил эту проблему по-разному, но меня интересует правильное решение здесь.

case class Box(y: Int)
val list = List(Box(y=1), Box(y=2), Box(y=5))

def group(list: List[Box], threshold: Int): List[List[Box]] = ???

val grouped = group(list, 2)
> List(List(Box(y=1), Box(y=2)), List(Box(y=5)))

Я смотрел наgroupBy(), но это может работать только с одним элементом одновременно. Я также попробовал подход, который включал различия перед вычислением, используяsliding(), но тогда становится неудобно извлекать элементы из исходной коллекции.

Ответы на вопрос(1)

Ваш ответ на вопрос