Функция sliding
Функция sliding создает последовательность подсписков
фиксированного размера, которые перемещаются по исходной
коллекции с заданным шагом. В первый параметр передается
размер окна, во второй параметр - шаг перемещения окна,
в третий параметр - флаг частичных окон.
Импорт
import kotlin.collections.sliding
Синтаксис
fun <T> Iterable<T>.sliding(
size: Int,
step: Int = 1,
partialWindows: Boolean = false
): List<List<T>>
Пример
Создадим скользящие окна размера 3
с шагом 1 для списка чисел:
val numbers = listOf(1, 2, 3, 4, 5, 6, 7)
val windows = numbers.sliding(3, 1)
println(windows)
Результат выполнения кода:
List<List<Int>> [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7]]
Пример
Создадим скользящие окна размера 2
с шагом 2 для списка символов:
val chars = listOf('a', 'b', 'c', 'd', 'e')
val windows = chars.sliding(2, 2)
println(windows)
Результат выполнения кода:
List<List<Char>> [['a', 'b'], ['c', 'd'], ['e']]
Пример
Создадим скользящие окна размера 3
с шагом 2 и отключенными частичными окнами:
val data = listOf(10, 20, 30, 40, 50)
val windows = data.sliding(3, 2, false)
println(windows)
Результат выполнения кода:
List<List<Int>> [[10, 20, 30], [30, 40, 50]]
Пример
Создадим скользящие окна размера 3
с шагом 2 и включенными частичными окнами:
val data = listOf(10, 20, 30, 40, 50)
val windows = data.sliding(3, 2, true)
println(windows)
Результат выполнения кода:
List<List<Int>> [[10, 20, 30], [30, 40, 50], [50]]
Пример
Использование функции sliding
для вычисления скользящего среднего:
val values = listOf(5.0, 7.0, 3.0, 8.0, 2.0)
val movingAverages = values.sliding(3, 1)
.map { window -> window.average() }
println(movingAverages)
Результат выполнения кода:
List<Double> [5.0, 6.0, 6.0, 4.333333333333333]