Имея коллекцию кортежей, я хотел бы проверить, имеет ли данный целочисленный элемент во всех кортежах значения в последовательном порядке.Для простоты можно предположить, что кортежи отсортированы в порядке возрастания по этому элементу.
Например, при рассмотрении первого элемента всех кортежей в этом массиве должно возвращаться false
(4, 8, 9, 10,13):
val a = List((4,2), (8,1), (9,4), (10,2), (13,1))
При рассмотрении первого элемента из всех кортежей в этом массиве должно возвращаться true
(8, 9, 10, 11, 12):
val b = List((8,2), (9,1), (10,4), (11,2), (12,1))
Используя List
как коллекцию с сопоставлением с образцом, я могу выполнить проверку, используя сопоставление с образцом, как показано ниже:
def consecutive(l: List[(Int, Int)], last: Option[Int] = Option.empty): Boolean =
l match {
case h :: t => {
if (last.isEmpty || (last.isDefined && h._1 == last.get + 1))
consecutive(t, Option(h._1))
else false
}
case Nil => true
}
Есть ли более простой способ сделать это?