Как заменить в руби два цикла на один?

Рейтинг: 0Ответов: 1Опубликовано: 11.03.2023
a = [0,1,4,8,0,10,30,50,0]

b = []

zero_indexes = []

a.each_with_index do |e,i|

    zero_indexes << i if e == 0 
end

b = a.select.with_index do |e,i|

  i > zero_indexes[0] && i < zero_indexes[1]

end

p b.sum

Ответы

▲ 0

Так будет один проход, а не два.

a = [0,1,4,8,0,10,30,50,0]

b = a.drop_while{ |e| e != 0 }.
      drop(1).
      take_while{ |e| e != 0 }

p b.sum