Size: a a a

2019 July 07

Э

Эдем in RubyRush
@theknightwhosaynil ну нет, это другое, см. пример Павла. Ты сгруппировал все значения
источник

Э

Эдем in RubyRush
Попробуй сравнить  для такого массива %w[a a b b a a]
источник

Э

Эдем in RubyRush
Andrey Anikin
Всё равно не догоняю, что b означает(
Вот такое понятно?
a,b = [1,2]

Усложним:
[[1,2], [3,4]].map { |a,b| a * b}
источник

А

Андрей in RubyRush
Павлу надо индекс сохранить
источник

Э

Эдем in RubyRush
Индекс сохранить и одновременно склеить не получится. Я думаю, речь о том, чтоб относительно друг друга порядок не менялся
источник

b

bratela in RubyRush
ary = %w[tt tt t i t t t t i i]

arr2 = ary.chunk { |a| a }.map { |a, b| a * b.size }
=> ["tttt", "t", "i", "tttt", "ii"]
источник

b

bratela in RubyRush
arr2.map.with_index { |ch, idx| [ch, idx] }
=> [["tttt", 0], ["t", 1], ["i", 2], ["tttt", 3], ["ii", 4]]
источник

b

bratela in RubyRush
может так?
источник

Э

Эдем in RubyRush
Вроде задачи не было делать вложенный массив с индексами
источник

Э

Эдем in RubyRush
@darkintentions придёт, прояснит, что он в итоге получить хотел
источник

PP

Pavel Protchenko in RubyRush
Эдем
@darkintentions придёт, прояснит, что он в итоге получить хотел
Да все верно, чтоб относительно друг друга не менялся порядок, я про индекс зря упомянул, главное это расположение элементов также как в первом массиве, а повтор элемента чтоб склеивался друг с другом [‘t’, ‘t’, ‘i’, ‘t’, ‘t’, ‘t’] => [‘tt’, ‘i’, ‘ttt’]
источник

Э

Эдем in RubyRush
Тогда мой вариант норм
источник

и

игорь in RubyRush
Pavel Protchenko
Да все верно, чтоб относительно друг друга не менялся порядок, я про индекс зря упомянул, главное это расположение элементов также как в первом массиве, а повтор элемента чтоб склеивался друг с другом [‘t’, ‘t’, ‘i’, ‘t’, ‘t’, ‘t’] => [‘tt’, ‘i’, ‘ttt’]
array.chunk_while { |b,a| b == a }.map(&:join)
источник

PP

Pavel Protchenko in RubyRush
Эдем
Тогда мой вариант норм
Я так и сделал - работает норм) 👍
источник

AA

Andrey Anikin in RubyRush
Эдем
ary = %w[tt tt t i t t t t i i]
ary.chunk { |a| a }.map { |a, b| a * b.size }
# => ["tttt", "t", "i", "tttt", "ii"]
Разбираясь с этим примером понял, что не понимаю как работает chunk)
источник

AA

Andrey Anikin in RubyRush
Из документации не совсем ясно
источник

AA

Andrey Anikin in RubyRush
Enumerates over the items, chunking them together based on the return value of the block.
источник

AA

Andrey Anikin in RubyRush
То есть пробегается по элементам, разбивая их, основываясь на результате работы блока
источник

AA

Andrey Anikin in RubyRush
То есть мы пробегаемся по массиву, начинаем с первого значения tt, и chunk сравнивает его со следующим. Здесь видно, что они одинаковые. И что после этого? Он выделяет их в отдельный массив [tt, tt]?
источник

Э

Эдем in RubyRush
Да. Попробуй прогнать в irb
ary = [1, 2, 2, 2, 6, 3, 3, 2]
ary.chunk { |a| a.even? }.to_a
ary.chunk { |a| a }.to_a
источник