【问题标题】:Flip array in chunks分块翻转数组
【发布时间】:2013-07-18 01:23:12
【问题描述】:

我需要以指定大小的块反转数组。以下是需要发生的事情的示例:

chunk = 2
arr = [1,2,3,4,5]

我怎样才能建立一个数组,其中块是这样反转的:

[2, 1, 4, 3, 5]

我的代码:

arr.each_slice(chunk) { |a| p a }

输出:

[1,2]
[3,4]
[5]

上面的每个块都需要反转并附加到一个最终数组,如上所示。

【问题讨论】:

  • @sawa 为什么要编辑然后投票关闭?

标签: ruby arrays


【解决方案1】:
arr = [1,2,3,4,5]
arr.each_slice(2).flat_map(&:reverse)
# => [2, 1, 4, 3, 5]

【讨论】:

  • 你可以用flat_map(&:reverse)优化
  • @tadman 是的..完成!!我暂时忘记了那件事。谢谢你提醒我。
  • 啊,酷。我以为我必须使用reduce,但这似乎太过分了。
  • @squiguy:Reduce 是通用的,你可以用它做一切。如果有更专业的东西,你并不总是需要。 (为了“证明”它的普遍性,我实际上写了一次 Ruby 的 Enumerable mixin 的替代品,其中所有方法都基于 reduce 而不是 each。有些有点令人费解,但大多数都很简单。)
  • @JörgWMittag 这很有趣。可能在 Github 上? :)
猜你喜欢
  • 1970-01-01
  • 2012-11-11
  • 2016-11-16
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
相关资源
最近更新 更多