I am not sure how to call this but I want something like this.
val x = List(1,2,3,...)
val y = List(4,5,6,...)
//want a result of List(1+4, 5+6, 7+8,...)
Is there an easy way to do this in scala ? My current implementation involving using looping from 0 to x.lenght which is pretty ugly. And if it is possible, I would like the solution that could use over nth number of list and maybe with other type of operator beside +.
Thanks !
In response to "what if I have more than 3 list?":
def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) =
xss reduceLeft ((_,_).zipped map f)
Use like this:
scala> combineAll(List(1,2,3), List(2,2,2), List(4,5,6), List(10,10,10))(_+_)
res5: Seq[Int] = List(17, 19, 21)
edit: alternatively
def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) =
xss.transpose map (_ reduceLeft f)
does the same and is probably more efficient.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With