ruby - 从Ruby中的数组中删除连续数字组
问题描述
我有一个数组:
[1, 2, 3, 6, 8, 9, 10, 23, 34, 35, 36, 45, 50, 51, ...]
我正在尝试删除每组连续数字,所以我最终得到:
[6, 23, 45, ...]
我正在寻找序列 ID 中的异常情况。有人有建议吗?
我最初的尝试只检查每个元素之前的 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的好处是它需要两个参数。核心文档只是一个一一递增子序列的示例。
推荐阅读
- c# - 实体框架 6 将 0 传递给可为空的 int
- scala - 二维数组中的scala array.product函数
- css - 如何在不同页面上使用 Wordpress 对内部内容设置不同的不透明度级别?
- python - 在 Python 中使用 RegExp 将文本拆分为句子
- reactjs - React Js 新手关于样式的问题
- github - GitHub 转移存储库 - 到新组织并更改存储库名称
- c# - Swagger/Swashbuckle .Net 4.5 C# - 动态对象未列出
- javascript - 为什么这个应用程序代码只能从右侧工作,否则 ReactDOM.findDOMNode querySelector 无法找到 className
- docker - 尝试使用 docker 映像在 Gitlab CI 管道运行器中运行 Webdriver IO(端到端)测试时出现问题
- c# - 如何使用 timer_tick 定期播放声音?