This commit is contained in:
krahets
2026-03-29 05:06:58 +08:00
parent 37523d4ceb
commit 967293c421
51 changed files with 288 additions and 5073 deletions
+6 -223
View File
@@ -307,13 +307,7 @@ comments: true
=== "Ruby"
```ruby title="array.rb"
=begin
File: array.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Случайный доступ к элементу ###
### Случайный доступ к элементу ###
def random_access(nums)
# Случайным образом выбрать число из интервала [0, nums.length)
random_index = Random.rand(0...nums.length)
@@ -507,39 +501,7 @@ comments: true
=== "Ruby"
```ruby title="array.rb"
=begin
File: array.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Случайный доступ к элементу ###
def random_access(nums)
# Случайным образом выбрать число из интервала [0, nums.length)
random_index = Random.rand(0...nums.length)
# Получить и вернуть случайный элемент
nums[random_index]
end
# ## Увеличить длину массива ###
# Обратите внимание: Array в Ruby является динамическим массивом и может быть расширен напрямую
# Для удобства обучения эта функция рассматривает Array как массив неизменяемой длины
def extend(nums, enlarge)
# Инициализировать массив увеличенной длины
res = Array.new(nums.length + enlarge, 0)
# Скопировать все элементы исходного массива в новый массив
for i in 0...nums.length
res[i] = nums[i]
end
# Вернуть новый массив после расширения
res
end
# ## Вставка элемента num по индексу index в массив ###
### Вставка элемента num по индексу index в массив ###
def insert(nums, num, index)
# Сдвинуть элемент с индексом index и все последующие элементы на одну позицию назад
for i in (nums.length - 1).downto(index + 1)
@@ -712,51 +674,7 @@ comments: true
=== "Ruby"
```ruby title="array.rb"
=begin
File: array.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Случайный доступ к элементу ###
def random_access(nums)
# Случайным образом выбрать число из интервала [0, nums.length)
random_index = Random.rand(0...nums.length)
# Получить и вернуть случайный элемент
nums[random_index]
end
# ## Увеличить длину массива ###
# Обратите внимание: Array в Ruby является динамическим массивом и может быть расширен напрямую
# Для удобства обучения эта функция рассматривает Array как массив неизменяемой длины
def extend(nums, enlarge)
# Инициализировать массив увеличенной длины
res = Array.new(nums.length + enlarge, 0)
# Скопировать все элементы исходного массива в новый массив
for i in 0...nums.length
res[i] = nums[i]
end
# Вернуть новый массив после расширения
res
end
# ## Вставка элемента num по индексу index в массив ###
def insert(nums, num, index)
# Сдвинуть элемент с индексом index и все последующие элементы на одну позицию назад
for i in (nums.length - 1).downto(index + 1)
nums[i] = nums[i - 1]
end
# Присвоить num элементу по индексу index
nums[index] = num
end
# ## Удаление элемента по индексу index ###
### Удаление элемента по индексу index ###
def remove(nums, index)
# Сдвинуть все элементы после индекса index на одну позицию вперед
for i in index...(nums.length - 1)
@@ -996,59 +914,7 @@ comments: true
=== "Ruby"
```ruby title="array.rb"
=begin
File: array.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Случайный доступ к элементу ###
def random_access(nums)
# Случайным образом выбрать число из интервала [0, nums.length)
random_index = Random.rand(0...nums.length)
# Получить и вернуть случайный элемент
nums[random_index]
end
# ## Увеличить длину массива ###
# Обратите внимание: Array в Ruby является динамическим массивом и может быть расширен напрямую
# Для удобства обучения эта функция рассматривает Array как массив неизменяемой длины
def extend(nums, enlarge)
# Инициализировать массив увеличенной длины
res = Array.new(nums.length + enlarge, 0)
# Скопировать все элементы исходного массива в новый массив
for i in 0...nums.length
res[i] = nums[i]
end
# Вернуть новый массив после расширения
res
end
# ## Вставка элемента num по индексу index в массив ###
def insert(nums, num, index)
# Сдвинуть элемент с индексом index и все последующие элементы на одну позицию назад
for i in (nums.length - 1).downto(index + 1)
nums[i] = nums[i - 1]
end
# Присвоить num элементу по индексу index
nums[index] = num
end
# ## Удаление элемента по индексу index ###
def remove(nums, index)
# Сдвинуть все элементы после индекса index на одну позицию вперед
for i in index...(nums.length - 1)
nums[i] = nums[i + 1]
end
end
# ## Обход массива ###
### Обход массива ###
def traverse(nums)
count = 0
@@ -1236,74 +1102,7 @@ comments: true
=== "Ruby"
```ruby title="array.rb"
=begin
File: array.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Случайный доступ к элементу ###
def random_access(nums)
# Случайным образом выбрать число из интервала [0, nums.length)
random_index = Random.rand(0...nums.length)
# Получить и вернуть случайный элемент
nums[random_index]
end
# ## Увеличить длину массива ###
# Обратите внимание: Array в Ruby является динамическим массивом и может быть расширен напрямую
# Для удобства обучения эта функция рассматривает Array как массив неизменяемой длины
def extend(nums, enlarge)
# Инициализировать массив увеличенной длины
res = Array.new(nums.length + enlarge, 0)
# Скопировать все элементы исходного массива в новый массив
for i in 0...nums.length
res[i] = nums[i]
end
# Вернуть новый массив после расширения
res
end
# ## Вставка элемента num по индексу index в массив ###
def insert(nums, num, index)
# Сдвинуть элемент с индексом index и все последующие элементы на одну позицию назад
for i in (nums.length - 1).downto(index + 1)
nums[i] = nums[i - 1]
end
# Присвоить num элементу по индексу index
nums[index] = num
end
# ## Удаление элемента по индексу index ###
def remove(nums, index)
# Сдвинуть все элементы после индекса index на одну позицию вперед
for i in index...(nums.length - 1)
nums[i] = nums[i + 1]
end
end
# ## Обход массива ###
def traverse(nums)
count = 0
# Обход массива по индексам
for i in 0...nums.length
count += nums[i]
end
# Непосредственно обходить элементы массива
for num in nums
count += num
end
end
# ## Поиск заданного элемента в массиве ###
### Поиск заданного элемента в массиве ###
def find(nums, target)
for i in 0...nums.length
return i if nums[i] == target
@@ -1526,23 +1325,7 @@ comments: true
=== "Ruby"
```ruby title="array.rb"
=begin
File: array.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Случайный доступ к элементу ###
def random_access(nums)
# Случайным образом выбрать число из интервала [0, nums.length)
random_index = Random.rand(0...nums.length)
# Получить и вернуть случайный элемент
nums[random_index]
end
# ## Увеличить длину массива ###
### Увеличить длину массива ###
# Обратите внимание: Array в Ruby является динамическим массивом и может быть расширен напрямую
# Для удобства обучения эта функция рассматривает Array как массив неизменяемой длины
def extend(nums, enlarge)
@@ -570,16 +570,7 @@ comments: true
=== "Ruby"
```ruby title="linked_list.rb"
=begin
File: linked_list.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
require_relative '../utils/list_node'
require_relative '../utils/print_util'
# ## Вставка узла _p после узла n0 в связном списке ###
### Вставка узла _p после узла n0 в связном списке ###
# В Ruby `p` — встроенная функция, а `P` — константа, поэтому вместо этого можно использовать `_p`
def insert(n0, _p)
n1 = n0.next
@@ -780,24 +771,7 @@ comments: true
=== "Ruby"
```ruby title="linked_list.rb"
=begin
File: linked_list.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
require_relative '../utils/list_node'
require_relative '../utils/print_util'
# ## Вставка узла _p после узла n0 в связном списке ###
# В Ruby `p` — встроенная функция, а `P` — константа, поэтому вместо этого можно использовать `_p`
def insert(n0, _p)
n1 = n0.next
_p.next = n1
n0.next = _p
end
# ## Удаление первого узла после узла n0 в связном списке ###
### Удаление первого узла после узла n0 в связном списке ###
def remove(n0)
return if n0.next.nil?
@@ -1001,34 +975,7 @@ comments: true
=== "Ruby"
```ruby title="linked_list.rb"
=begin
File: linked_list.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
require_relative '../utils/list_node'
require_relative '../utils/print_util'
# ## Вставка узла _p после узла n0 в связном списке ###
# В Ruby `p` — встроенная функция, а `P` — константа, поэтому вместо этого можно использовать `_p`
def insert(n0, _p)
n1 = n0.next
_p.next = n1
n0.next = _p
end
# ## Удаление первого узла после узла n0 в связном списке ###
def remove(n0)
return if n0.next.nil?
# n0 -> remove_node -> n1
remove_node = n0.next
n1 = remove_node.next
n0.next = n1
end
# ## Доступ к узлу связного списка по индексу index ###
### Доступ к узлу связного списка по индексу index ###
def access(head, index)
for i in 0...index
return nil if head.nil?
@@ -1252,44 +1199,7 @@ comments: true
=== "Ruby"
```ruby title="linked_list.rb"
=begin
File: linked_list.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
require_relative '../utils/list_node'
require_relative '../utils/print_util'
# ## Вставка узла _p после узла n0 в связном списке ###
# В Ruby `p` — встроенная функция, а `P` — константа, поэтому вместо этого можно использовать `_p`
def insert(n0, _p)
n1 = n0.next
_p.next = n1
n0.next = _p
end
# ## Удаление первого узла после узла n0 в связном списке ###
def remove(n0)
return if n0.next.nil?
# n0 -> remove_node -> n1
remove_node = n0.next
n1 = remove_node.next
n0.next = n1
end
# ## Доступ к узлу связного списка по индексу index ###
def access(head, index)
for i in 0...index
return nil if head.nil?
head = head.next
end
head
end
# ## Поиск первого узла со значением target в связном списке ###
### Поиск первого узла со значением target в связном списке ###
def find(head, target)
index = 0
while head
+9 -15
View File
@@ -2198,18 +2198,12 @@ comments: true
=== "Ruby"
```ruby title="my_list.rb"
=begin
File: my_list.rb
Created Time: 2024-03-18
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Класс списка ###
### Класс списка ###
class MyList
attr_reader :size # Получить длину списка (текущее число элементов)
attr_reader :capacity # Получить вместимость списка
# ## Конструктор ###
### Конструктор ###
def initialize
@capacity = 10
@size = 0
@@ -2217,20 +2211,20 @@ comments: true
@arr = Array.new(capacity)
end
# ## Доступ к элементу ###
### Доступ к элементу ###
def get(index)
# Если индекс выходит за границы, выбрасывается исключение; далее аналогично
raise IndexError, "индекс выходит за границы" if index < 0 || index >= size
@arr[index]
end
# ## Доступ к элементу ###
### Доступ к элементу ###
def set(index, num)
raise IndexError, "индекс выходит за границы" if index < 0 || index >= size
@arr[index] = num
end
# ## Добавление элемента в конец ###
### Добавление элемента в конец ###
def add(num)
# При превышении вместимости по числу элементов запускается расширение
extend_capacity if size == capacity
@@ -2240,7 +2234,7 @@ comments: true
@size += 1
end
# ## Вставка элемента в середину ###
### Вставка элемента в середину ###
def insert(index, num)
raise IndexError, "индекс выходит за границы" if index < 0 || index >= size
@@ -2257,7 +2251,7 @@ comments: true
@size += 1
end
# ## Удаление элемента ###
### Удаление элемента ###
def remove(index)
raise IndexError, "индекс выходит за границы" if index < 0 || index >= size
num = @arr[index]
@@ -2274,7 +2268,7 @@ comments: true
num
end
# ## Расширение списка ###
### Расширение списка ###
def extend_capacity
# Создать новый массив длиной в extend_ratio раз больше исходного и скопировать в него исходный массив
arr = @arr.dup + Array.new(capacity * (@extend_ratio - 1))
@@ -2282,7 +2276,7 @@ comments: true
@capacity = arr.length
end
# ## Преобразование списка в массив ###
### Преобразование списка в массив ###
def to_array
sz = size
# Преобразовывать только элементы списка в пределах фактической длины