2016-06-21 16 views
0

昨日Scalaで数字の列を圧縮私は約From a List representation of a Map, to a real Map in Scala解凍デルタは、

少数本当にスマートな応答の後、私はそれが私の心はScalaで働くために必要な変更があることを知っていると私はstackoverflowのが道であることを確信して尋ねました。

この場合、デルタ圧縮を使用して格納された一連の数値を解凍します。 私の実装は本当にシンプルだと思いますが、皆さんはもっと機能的な方法を見つけるつもりです。

def deltaDecompression(compressed : Seq[Long]) = { 
    var previous = 0L 
    compressed.map(current => { 
    previous += current 
    previous 
    }) 
} 

assert(deltaDecompression(Seq(100,1,2,3)) == Seq(100,101,103,106)) 

だから私の前の質問のように、質問です:は、より機能的な方法を使用してこの機能を実装することは可能ですか?

コードの最後の行の入力データと期待される出力をアサーションとして示します。

答えて

1

compressed.scanLeft(0l) { _ + _ }.drop(1)

+0

である。あなたは素晴らしいです:)しかし、エラーがあります: タイプの表現* Int、Long)=>ロングは予想されるタイプに適合しません(Int、Long)=> Int – angelcervera

+0

ええ...私はあなたのために去ります) – Dima

+0

'tail'がきれいに見えるかもしれません。 –