vault backup: 2026-05-26 21:21:43
This commit is contained in:
@@ -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)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user