Sequences and Lazy Views
Sliding Windows
Look at fixed-size windows across a sequence.
sliding-window
`sliding` walks a fixed-size window across the sequence one step at a time. Summing each window turns the chunks into scalar values.
Sliding Windows
SlidingWindow.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val size = 2
val nums = List(1, 2, 3, 4)
val windows = nums.sliding(size).toList
val sums = windows.map(w => w.sum)
println("count=" + windows.length)
println("sums=" + sums.mkString(","))
}
}
object Main {
def main(args: Array[String]): Unit = {
val size = 1
val nums = List(1, 2, 3, 4)
val windows = nums.sliding(size).toList
val sums = windows.map(w => w.sum)
println("count=" + windows.length)
println("sums=" + sums.mkString(","))
}
}
object Main {
def main(args: Array[String]): Unit = {
val size = 3
val nums = List(1, 2, 3, 4)
val windows = nums.sliding(size).toList
val sums = windows.map(w => w.sum)
println("count=" + windows.length)
println("sums=" + sums.mkString(","))
}
}
size ← 2, nums ← List(1, 2, 3, 4), windows ← List(List(1, 2), List(2, 3), List(3, 4))
1object Main {2 def main(args: Array[String]): Unit = {3 val size→ 2 = 2 //@size=1, 34 val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5 val windows→ List(List(1, 2), List(2, 3), List(3, 4)) = numsList(1, 2, 3, 4).sliding(size2).toList6 val sums→ List(3, 5, 7) = windowsList(List(1, 2), List(2, 3), List(3, 4)).map(w => w.sum)78 println("count=" + windows.length3)9 println("sums=" + sumsList(3, 5, 7).mkString(","))10 }11}outputcount=3 sums=3,5,7
size ← 1, nums ← List(1, 2, 3, 4), windows ← List(List(1), List(2), List(3), List(4))
1object Main {2 def main(args: Array[String]): Unit = {3 val size→ 1 = 14 val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5 val windows→ List(List(1), List(2), List(3), List(4)) = numsList(1, 2, 3, 4).sliding(size1).toList6 val sums→ List(1, 2, 3, 4) = windowsList(List(1), List(2), List(3), List(4)).map(w => w.sum)78 println("count=" + windows.length4)9 println("sums=" + sumsList(1, 2, 3, 4).mkString(","))10 }11}outputcount=4 sums=1,2,3,4
size ← 3, nums ← List(1, 2, 3, 4), windows ← List(List(1, 2, 3), List(2, 3, 4))
1object Main {2 def main(args: Array[String]): Unit = {3 val size→ 3 = 34 val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5 val windows→ List(List(1, 2, 3), List(2, 3, 4)) = numsList(1, 2, 3, 4).sliding(size3).toList6 val sums→ List(6, 9) = windowsList(List(1, 2, 3), List(2, 3, 4)).map(w => w.sum)78 println("count=" + windows.length2)9 println("sums=" + sumsList(6, 9).mkString(","))10 }11}outputcount=2 sums=6,9