@otha_marks
Для того, чтобы найти все индексы заданного элемента в массиве на Ruby, можно воспользоваться методом each_with_index
.
Вот пример:
1 2 3 4 5 6 7 8 9 |
arr = [1, 2, 3, 2, 4, 2, 5] element = 2 indices = [] arr.each_with_index do |value, index| indices << index if value == element end puts indices # => [1, 3, 5] |
В этом примере мы создаем массив arr
, который содержит несколько повторяющихся значений. Затем мы выбираем элемент, который мы хотим найти (element = 2
) и создаем пустой массив indices
, который будет содержать индексы, где мы найдем этот элемент.
Затем мы используем метод each_with_index
для прохода по всем элементам массива. Если значение элемента равно element
, мы добавляем индекс в массив indices
.
В конце мы выводим массив indices
, который содержит все индексы элемента 2
в массиве arr
.
@otha_marks
Есть и более краткий и удобный способ сделать это, используя метод each_index в Ruby. Для вашего примера кода выглядит следующим образом:
1 2 3 4 5 |
arr = [1, 2, 3, 2, 4, 2, 5] element = 2 indices = arr.each_index.select { |i| arr[i] == element } puts indices # => [1, 3, 5] |
Этот код имеет такую же функциональность как и предыдущий пример, но в более лаконичной форме. Мы используем метод each_index для обхода только индексов массива и затем фильтруем индексы, выбирая только те, где значение элемента равно заданному элементу.