作者:五洋顽石_449 | 来源:互联网 | 2023-02-05 18:50
如果格式中至少有两个相邻的数字相同,我需要打包
.
这是我的意见:
[2,2,2,3,4,3,3,2,4,4,5]
和预期的产量:
"2:3,3,4,3:2,2,4:2,5"
到目前为止我试过:
a = [1, 1, 1, 2, 2, 3, 2, 3, 4, 4, 5]
a.each_cons(2).any? do |s , t|
if s == t
如果它是相同的尝试一个计数器可能,但那不起作用.
1> Andrey Deine..:
您可以使用Enumerable#chunk_while
(如果您使用的是Ruby> = 2.3):
a.chunk_while { |a, b| a == b }
.flat_map { |chunk| chunk.one? ? chunk.first : "#{chunk.first}:#{chunk.size}" }
.join(',')
#=> "2:3,3,4,3:2,2,4:2,5"
你也可以使用Enumerable#chunk
(Ruby~1.9.3,也许更早):
a.chunk(&:itself)
.flat_map { |_, chunk| chunk.one? ? chunk.first : "#{chunk.first}:#{chunk.size}" }
.join(',')
#=> "2:3,3,4,3:2,2,4:2,5"