mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-11 23:16:07 +00:00
Migrate to Zensical (#1869)
* Fix Russian Ruby code extraction. * Add zensical configs.
This commit is contained in:
@@ -4,7 +4,7 @@ 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)
|
||||
@@ -14,9 +14,9 @@ def random_access(nums)
|
||||
end
|
||||
|
||||
|
||||
# ## Увеличить длину массива ###
|
||||
# Обратите внимание: Array в Ruby является динамическим массивом и может быть расширен напрямую
|
||||
# Для удобства обучения эта функция рассматривает Array как массив неизменяемой длины
|
||||
### Увеличить длину массива ###
|
||||
# Обратите внимание: Array в Ruby является динамическим массивом и может расширяться напрямую
|
||||
# Для удобства обучения в этой функции Array рассматривается как массив неизменяемой длины
|
||||
def extend(nums, enlarge)
|
||||
# Инициализировать массив увеличенной длины
|
||||
res = Array.new(nums.length + enlarge, 0)
|
||||
@@ -30,7 +30,7 @@ def extend(nums, enlarge)
|
||||
res
|
||||
end
|
||||
|
||||
# ## Вставка элемента num по индексу index в массив ###
|
||||
### Вставка элемента num по индексу index в массив ###
|
||||
def insert(nums, num, index)
|
||||
# Сдвинуть элемент с индексом index и все последующие элементы на одну позицию назад
|
||||
for i in (nums.length - 1).downto(index + 1)
|
||||
@@ -42,7 +42,7 @@ def insert(nums, num, index)
|
||||
end
|
||||
|
||||
|
||||
# ## Удаление элемента по индексу index ###
|
||||
### Удаление элемента по индексу index ###
|
||||
def remove(nums, index)
|
||||
# Сдвинуть все элементы после индекса index на одну позицию вперед
|
||||
for i in index...(nums.length - 1)
|
||||
@@ -50,7 +50,7 @@ def remove(nums, index)
|
||||
end
|
||||
end
|
||||
|
||||
# ## Обход массива ###
|
||||
### Обход массива ###
|
||||
def traverse(nums)
|
||||
count = 0
|
||||
|
||||
@@ -65,7 +65,7 @@ def traverse(nums)
|
||||
end
|
||||
end
|
||||
|
||||
# ## Поиск заданного элемента в массиве ###
|
||||
### Поиск заданного элемента в массиве ###
|
||||
def find(nums, target)
|
||||
for i in 0...nums.length
|
||||
return i if nums[i] == target
|
||||
|
||||
@@ -7,15 +7,15 @@ Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
|
||||
require_relative '../utils/list_node'
|
||||
require_relative '../utils/print_util'
|
||||
|
||||
# ## Вставка узла _p после узла n0 в связном списке ###
|
||||
# В Ruby `p` — встроенная функция, а `P` — константа, поэтому вместо этого можно использовать `_p`
|
||||
### Вставка узла _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?
|
||||
|
||||
@@ -25,7 +25,7 @@ def remove(n0)
|
||||
n0.next = n1
|
||||
end
|
||||
|
||||
# ## Доступ к узлу связного списка по индексу index ###
|
||||
### Доступ к узлу связного списка по индексу index ###
|
||||
def access(head, index)
|
||||
for i in 0...index
|
||||
return nil if head.nil?
|
||||
@@ -35,7 +35,7 @@ def access(head, index)
|
||||
head
|
||||
end
|
||||
|
||||
# ## Поиск первого узла со значением target в связном списке ###
|
||||
### Поиск первого узла со значением target в связном списке ###
|
||||
def find(head, target)
|
||||
index = 0
|
||||
while head
|
||||
|
||||
@@ -4,12 +4,12 @@ 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
|
||||
@@ -17,20 +17,20 @@ class MyList
|
||||
@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
|
||||
@@ -40,7 +40,7 @@ class MyList
|
||||
@size += 1
|
||||
end
|
||||
|
||||
# ## Вставка элемента в середину ###
|
||||
### Вставка элемента в середину ###
|
||||
def insert(index, num)
|
||||
raise IndexError, "индекс выходит за границы" if index < 0 || index >= size
|
||||
|
||||
@@ -57,7 +57,7 @@ class MyList
|
||||
@size += 1
|
||||
end
|
||||
|
||||
# ## Удаление элемента ###
|
||||
### Удаление элемента ###
|
||||
def remove(index)
|
||||
raise IndexError, "индекс выходит за границы" if index < 0 || index >= size
|
||||
num = @arr[index]
|
||||
@@ -74,7 +74,7 @@ class MyList
|
||||
num
|
||||
end
|
||||
|
||||
# ## Расширение списка ###
|
||||
### Расширение списка ###
|
||||
def extend_capacity
|
||||
# Создать новый массив длиной в extend_ratio раз больше исходного и скопировать в него исходный массив
|
||||
arr = @arr.dup + Array.new(capacity * (@extend_ratio - 1))
|
||||
@@ -82,7 +82,7 @@ class MyList
|
||||
@capacity = arr.length
|
||||
end
|
||||
|
||||
# ## Преобразование списка в массив ###
|
||||
### Преобразование списка в массив ###
|
||||
def to_array
|
||||
sz = size
|
||||
# Преобразовывать только элементы списка в пределах фактической длины
|
||||
|
||||
Reference in New Issue
Block a user