Arrays 如何在Ruby中拆分重复元素上的数组

Arrays 如何在Ruby中拆分重复元素上的数组,arrays,ruby,Arrays,Ruby,假设可以使用具有连续重复元素的数组,我正在寻找一种方法来转换此数组: ['A',B',C',C',D',D',F'] 为此: ['A',B','C',['C','D',['D','F']] 请注意,对于我的特殊情况,一个数组不能有超过2个连续的重复元素。这样做 arr = ['A', 'B', 'C', 'C', 'D', 'D', 'F'] p arr.slice_when{|a,b| a==b}.to_a # =>[["A", "B", &

假设可以使用具有连续重复元素的数组,我正在寻找一种方法来转换此数组:

['A',B',C',C',D',D',F']
为此:

['A',B','C',['C','D',['D','F']]
请注意,对于我的特殊情况,一个数组不能有超过2个连续的重复元素。

这样做

arr = ['A', 'B', 'C', 'C', 'D', 'D', 'F']
p arr.slice_when{|a,b| a==b}.to_a

# =>[["A", "B", "C"], ["C", "D"], ["D", "F"]]

老式的方式:

arr.each_with_object([[]]) do |s,a|
  if s == a.last.last
    a << [s]
  else
    a.last << s
  end
end
  #=> [["A", "B", "C"], ["C", "D"], ["D", "F"]]
arr.each_with_object([[])do|s,a|
如果s==a.last.last

a你的问题不清楚。您将如何拆分
%w[a b b c]
?你试过什么,为什么对你不起作用?对。对请假设您不能有超过2个连续的重复元素。措辞固定。您应该编辑您的答案,并在其中包含备选表格。:)
arr.each_with_object([[]]) do |s,a|
  if s == a.last.last
    a << [s]
  else
    a.last << s
  end
end
  #=> [["A", "B", "C"], ["C", "D"], ["D", "F"]]