Редактировать: добавлен тот факт, что список отсортирован, а реализация «дубликата» вводит в заблуждение, заменив его на «избыточный» в заголовке.
У меня есть отсортированный список записей, в которых указана производственная стоимость за указанный интервал. Записи с указанием того же значения в более позднее время не добавляют никакой информации и могут быть безопасно пропущены.
case class Entry(minute:Int, production:Double)
val entries = List(Entry(0, 100.0), Entry(5, 100.0), Entry(10, 100.0), Entry(20, 120.0), Entry(30, 100.0), Entry(180, 0.0))
Экспериментируя с функциями коллекции scala 2.8, пока у меня есть эта рабочая реализация:
entries.foldRight(List[Entry]()) {
(entry, list) => list match {
case head :: tail if (entry.production == head.production) => entry :: tail
case head :: tail => entry :: list
case List() => entry :: List()
}
}
res0: List[Entry] = List(Entry(0,100.0), Entry(20,120.0), Entry(30,100.0), Entry(180,0.0))
Есть комментарии? Я пропускаю магию скалы?