【问题标题】:Decompress delta compressed sequence of numbers in Scala在Scala中解压缩delta压缩的数字序列
【发布时间】:2016-06-22 03:50:54
【问题描述】:

昨天问了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))

就像我之前的问题一样,问题是:是否可以使用更实用的方式来实现此功能?

代码最后一行中的示例输入数据和预期输出,作为断言。

【问题讨论】:

    标签: algorithm scala functional-programming


    【解决方案1】:

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

    【讨论】:

    • 再次。你很棒 :) 但是有一个错误:类型*Int,Long)=>Long 的表达式不符合预期的类型 (Int,Long)=>Int
    • 是的......我会留给你自己弄清楚,作为练习;)
    • tail 可能看起来更干净
    • @VictorMoroz 不确定我是否理解您对drop 感到特别“肮脏”的地方:)
    • @Dima 一小时找到响应:初始值是一个Int,所以函数中的预期响应是一个Int。那么:compressed.scanLeft(0L) { _ + _ }.drop(1) 对吗?
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多