Functional programming 编程:检测数字变化的方向和停止

Functional programming 编程:检测数字变化的方向和停止,functional-programming,Functional Programming,任何语言,只是伪代码 我正在四处搜索一种算法,它可以检测数字的方向和变化的停止。例如: function detectChange(int number) { if number is rising return "rising" if number is dropping return "dropping" if number is unchanged return "unchanged" } main() { int number while(true) {

任何语言,只是伪代码

我正在四处搜索一种算法,它可以检测数字的方向和变化的停止。例如:

function detectChange(int number) {
  if number is rising return "rising"
  if number is dropping return "dropping"
  if number is unchanged return "unchanged"
}

main() {
  int number

  while(true) {
    //The read doesn't always happen
    if readObscure.readoccured() {
      //read the number from an obscure source
      number = readObscure()
      print(detectChange(number))
    }
  }
}
我一直在研究一种具有时间增量的方法,但收效甚微。一个问题是,例如,使用计时方法时,我总是错过最后一次更改。也许我也能解决这个问题,但它已经相当粗糙了。 因此,我很高兴有一个干净的教科书解决方案,最好不用时间,而只是逻辑。如果没有没有时间,但仍然是一个干净的解决方案,我也会很感激

解决方案可以用任何人类可读的语言编写,无需haskell please或伪代码,我不在乎

我应该提到,readUnderfuse函数也可能一次又一次地返回相同的数字,或者根本不返回数字,在这种情况下,我想假设数字是不变的

让我们用一些例子来更新这一点:

ReadUnderstance返回数字1,2,14,15,8,17,20 这应该在上升

Read晦涩返回数字1,2,14,15,17,20,20,20 这应该是上升,然后不变

所以问题也是,如何定义上升、不变、下降。我想找一个以前处理过这些问题的人来定义它。结果应该是人类排序的结果,所以我看了看数字,可以立即判断,它们没有上升,或者正在上升

我已经知道了
但就我个人而言,这是用大锤敲开一个螺母。

只要这样做,无论何时添加值:

取当前值和最后一个值,计算其增量。 然后,将它添加到你持有三角洲的任何地方。
如果您希望在每次添加值时都触发某些内容,那么最好将其绑定到容器或某种基于回调/事件的机制/结构以确保这一点。BooSt.SnulsS2C++是一个很好的处理方法,但是创建一个异步的执行线程来计算你的值,然后把你的值推到存储向量的后面就足够了。

看起来不可能测量一个时间增量,这是不可能的。但是我看到很多事情都是用纯粹的永恒的逻辑完成的我自己都没想到,这就是为什么我提出这样的问题。我根本看不到时间进入场景的位置-唯一似乎缺少的是一个你可以记住最后看到的数字的地方-所以如果你想要一个纯方法,你可以像函数detectChangeint number,int lastNumber一样传递它。。顺便说一句:你要求可读的代码和目前的javascript。。。嗯,我知道问题似乎很简单。但是再想想,我想分析一下这个数字现在发生了什么,它不像a>b那么容易。我应该提到的是,readUnderstance函数也可能一次又一次地返回相同的数字,或者根本不返回数字,在这种情况下,我想假设这个数字是不变的。它仍然只是a>b-如果你的函数没有返回一个数字,那么让它显式化,然后再使用旧的一个…也许你应该看看Rx;我一直在考虑采集多个样本,但是我需要找到一种方法来处理不同数量的样本。但我还是无法绕过时间三角洲。数字可以在100毫秒内相等,但实际上仍然在上升。@bortran然后只取多个增量之和。不应该太难。