状態遷移の記録をしたいとき、例えばこういうリストがあるときに
@ val l = List(List(1, 2, 3, 4, 5), List(3, 4, 5), List(5))
5個あった要素が、3個になり、1個になった、という遷移を、
- 2番目の処理で1と2が落ち、
- 3番目の処理で3と4が落ちた
というように表現したいとき。
@ (l(0) :: l, l).zipped.map(_ diff _) res3: List[List[Int]] = List(List(), List(1, 2), List(3, 4))
要素を一個ずつずらしたリストと元のリストをタプルにして、zipしてそのdiffをとる。 もっとうまい方法があるかも。
参考:
How to map a list of numbers to the list of their deltas in Scala? - Stack Overflow