ruby - 从 Ruby 中的数组中删除连续数字组

标签 ruby

我有一个数组:

[1, 2, 3, 6, 8, 9, 10, 23, 34, 35, 36, 45, 50, 51, ...]

我试图删除每组连续的数字,所以我最终得到:

[6, 23, 45, ...]

我正在寻找序列号中的异常情况。有人有什么建议吗?

我最初的尝试只检查每个元素之前的 id:

non_consecutive_ids = []
ids.each_with_index do |x, i|
  unless x == ids[i-1] + 1
    non_consecutive_ids << x
  end
end

我想我遗漏的事情是还要检查数组中的下一个元素是否比当前元素多 1。

最佳答案

其他选项:

array.chunk_while { |i, j| i + 1 == j }.select { |e| e.size == 1 }.flatten
#=> [6, 23, 45]

好的Enumerable#chunk_while是它需要两个参数。核心文档只有一个逐一递增子序列的示例。

关于ruby - 从 Ruby 中的数组中删除连续数字组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53399120/

相关文章:

ruby-on-rails - Rspec 测试属于并且有很多

javascript - 类型和 OO 耦合了吗?

ruby - Rails 记录器格式化 - 插入方法名称调用记录器方法

ruby - 无法使用 key 与 Ruby 和 net/ssh 连接

ruby - 搜索文本然后选择父元素? ( ruby )

ruby-on-rails - 使用 Ruby 或 Ruby on Rails 生成带有签名的 PDF

ruby-on-rails - $undefined 和 $end 在 Ruby 中指的是什么?

ruby - 启动 WEBrick/Jekyll 时会产生 TCPServer 错误(地址已在使用中)

ruby - 如何在 ruby​​ 模块之间共享方法

ruby-on-rails - Rails NoMethodError : undefined method `includes' for #<User:0x007f62dbbe62f8>