vault backup: 2026-05-26 21:21:43

This commit is contained in:
Dmitry
2026-05-26 21:21:43 +03:00
parent 614c8d5d1b
commit a30d83cb2d
8 changed files with 324 additions and 45 deletions
@@ -1,13 +1,15 @@
---
status: seed
status: processing
type: knowledge
tags:
- programming
- ruby
created: 2026-05-17
updated: 2026-05-17
updated: 2026-05-26
title: Ruby - массивы
source: "[[Ruby - массивы]]"
source:
- "[[Ruby - массивы]]"
- "[[Итераторы для обработки массивов Ruby]]"
---
# Ruby — массивы
@@ -95,3 +97,76 @@ a.sample(n) # n случайных элементов
a.select { |x| block } # массив элементов, для которых block == true
```
## Итераторы
`each` перебирает элементы массива:
```ruby
ary.each { |item| block }
```
Пример:
```ruby
arr.each do |x|
if x > 0 && x % 5 == 0
arr_out << x
end
end
```
`each_index` перебирает индексы:
```ruby
ary.each_index { |index| block }
```
Похожий проход по индексам:
```ruby
(0...arr.size).each do |i|
if arr[i] > 0 && arr[i] % 5 == 0
arr_out << arr[i]
end
end
```
### Поиск минимума, максимума и индексов
Императивный вариант:
```ruby
a = gets.chomp.split.map { |i| i.to_i }
p a
max = min = a[0]
maxi = mini = 0
for i in 1...a.size
if a[i] > max
max = a[i]
maxi = i
end
if a[i] < min
min = a[i]
mini = i
end
end
puts "Максимальное число: #{max}, индекс: #{maxi}"
puts "Минимальное число: #{min}, индекс: #{mini}"
```
Через методы массива:
```ruby
a = gets.chomp.split.map { |i| i.to_i }
p a
max = a.max
min = a.min
maxi = a.index(max)
mini = a.index(min)
```