列表中浮动列表的每个成员都小于前一个

Each memeber of a list of floats in a list is smaller than previous

我有一长串 (1000+) 混合了整数和浮点数的数字(所以 1.3 和 2.5 还有 3 或 5)。

一般来说,他们应该遵循从大到小的递减模式。

但是有一些黑羊违反了这个规则,我想找到他们。

这是我列表的一部分:

list = [100.242, 95, 94.3, 96, 65.5, 67.7, 51.25, 43, 23.99] # 96 and 67.7 are bad actors

现在,我需要创建一个函数来挑选出那些错误的数字并将它们放入我可以打印的列表中。

知道怎么做吗?

Enum.reduce/3 总能解决这类问题

Enum.reduce(list, {[], []}, fn
  e, {[], []} -> {[e], []}
  e, {[h|t], ko} when e > h -> {[h|t], [e|ko]}
  e, {ok, ko} -> {[e|ok], ko}
end)
#⇒ {[23.99, 43, 51.25, 65.5, 94.3, 95, 100.242], [67.7, 96]}

普通递归也可以完美工作。