fun productsNConsecutiveItems(lst: List<Int>, n: Int): List<Int> {
if (n <= 0 || lst.size < n) return emptyList()
return lst.windowed(n).map { window ->
window.reduce { acc, x -> acc * x }
}
}
fun main() {
val lst = listOf(2, 3, 4, 5, 6, 7, 8, 9, 10)
val n = 3
val products = productsNConsecutiveItems(lst, n)
println(products)
}
/*
* Example for n_consecutive_items = 3:
* 2 * 3 * 4 = 24
* 3 * 4 * 5 = 60
* 4 * 5 * 6 = 120
* 5 * 6 * 7 = 210
* 6 * 7 * 8 = 336
* 7 * 8 * 9 = 504
* 8 * 9 * 10 = 720
*/
/*
run:
[24, 60, 120, 210, 336, 504, 720]
*/