Migrate to Zensical (#1869)

* Fix Russian Ruby code extraction.

* Add zensical configs.
This commit is contained in:
Yudong Jin
2026-03-29 05:41:25 +08:00
committed by GitHub
parent bc4c5ec414
commit 7a78369e4c
84 changed files with 1302 additions and 445 deletions
@@ -4,29 +4,29 @@ Created Time: 2024-04-05
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Двусторонняя очередь на основе кольцевого массива ###
### Двусторонняя очередь на основе кольцевого массива ###
class ArrayDeque
# ## Получение длины двусторонней очереди ###
### Получение длины двусторонней очереди ###
attr_reader :size
# ## Конструктор ###
### Конструктор ###
def initialize(capacity)
@nums = Array.new(capacity, 0)
@front = 0
@size = 0
end
# ## Получить вместимость двусторонней очереди ###
### Получить вместимость двусторонней очереди ###
def capacity
@nums.length
end
# ## Проверка, пуста ли двусторонняя очередь ###
### Проверка, пуста ли двусторонняя очередь ###
def is_empty?
size.zero?
end
# ## Добавление в голову очереди ###
### Добавление в голову очереди ###
def push_first(num)
if size == capacity
puts 'Двусторонняя очередь заполнена'
@@ -41,7 +41,7 @@ class ArrayDeque
@size += 1
end
# ## Добавление в хвост очереди ###
### Добавление в хвост очереди ###
def push_last(num)
if size == capacity
puts 'Двусторонняя очередь заполнена'
@@ -55,7 +55,7 @@ class ArrayDeque
@size += 1
end
# ## Извлечение из головы очереди ###
### Извлечение из головы очереди ###
def pop_first
num = peek_first
# Указатель головы сдвигается на одну позицию назад
@@ -64,21 +64,21 @@ class ArrayDeque
num
end
# ## Извлечение из хвоста очереди ###
### Извлечение из хвоста очереди ###
def pop_last
num = peek_last
@size -= 1
num
end
# ## Доступ к элементу в начале очереди ###
### Доступ к элементу в начале очереди ###
def peek_first
raise IndexError, 'двусторонняя очередь пуста' if is_empty?
@nums[@front]
end
# ## Доступ к элементу в хвосте очереди ###
### Доступ к элементу в хвосте очереди ###
def peek_last
raise IndexError, 'двусторонняя очередь пуста' if is_empty?
@@ -87,7 +87,7 @@ class ArrayDeque
@nums[last]
end
# ## Вернуть массив для вывода ###
### Вернуть массив для вывода ###
def to_array
# Преобразовывать только элементы списка в пределах фактической длины
res = []
@@ -99,7 +99,7 @@ class ArrayDeque
private
# ## Вычислить индекс в кольцевом массиве ###
### Вычислить индекс в кольцевом массиве ###
def index(i)
# С помощью операции взятия по модулю соединить начало и конец массива
# Когда i выходит за конец массива, он возвращается в начало
@@ -4,29 +4,29 @@ Created Time: 2024-04-05
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Очередь на основе кольцевого массива ###
### Очередь на основе кольцевого массива ###
class ArrayQueue
# ## Получение длины очереди ###
### Получение длины очереди ###
attr_reader :size
# ## Конструктор ###
### Конструктор ###
def initialize(size)
@nums = Array.new(size, 0) # Массив для хранения элементов очереди
@front = 0 # Указатель head, указывающий на первый элемент очереди
@size = 0 # Длина очереди
end
# ## Получить вместимость очереди ###
### Получить вместимость очереди ###
def capacity
@nums.length
end
# ## Проверка, пуста ли очередь ###
### Проверка, пуста ли очередь ###
def is_empty?
size.zero?
end
# ## Добавление в очередь ###
### Добавление в очередь ###
def push(num)
raise IndexError, 'очередь заполнена' if size == capacity
@@ -38,7 +38,7 @@ class ArrayQueue
@size += 1
end
# ## Извлечение из очереди ###
### Извлечение из очереди ###
def pop
num = peek
# Указатель head сдвигается на одну позицию назад; если он выходит за конец, то возвращается в начало массива
@@ -47,14 +47,14 @@ class ArrayQueue
num
end
# ## Доступ к элементу в начале очереди ###
### Доступ к элементу в начале очереди ###
def peek
raise IndexError, 'очередь пуста' if is_empty?
@nums[@front]
end
# ## Вернуть список для вывода ###
### Вернуть список для вывода ###
def to_array
res = Array.new(size, 0)
j = @front
@@ -4,43 +4,43 @@ Created Time: 2024-04-06
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Стек на основе массива ###
### Стек на основе массива ###
class ArrayStack
# ## Конструктор ###
### Конструктор ###
def initialize
@stack = []
end
# ## Получить длину стека ###
### Получить длину стека ###
def size
@stack.length
end
# ## Проверка, пуст ли стек ###
### Проверка, пуст ли стек ###
def is_empty?
@stack.empty?
end
# ## Помещение в стек ###
### Помещение в стек ###
def push(item)
@stack << item
end
# ## Извлечение из стека ###
### Извлечение из стека ###
def pop
raise IndexError, 'стек пуст' if is_empty?
@stack.pop
end
# ## Доступ к верхнему элементу стека ###
### Доступ к верхнему элементу стека ###
def peek
raise IndexError, 'стек пуст' if is_empty?
@stack.last
end
# ## Вернуть список для вывода ###
### Вернуть список для вывода ###
def to_array
@stack
end
@@ -10,30 +10,30 @@ class ListNode
attr_accessor :next # Ссылка на узел-преемник
attr_accessor :prev # Ссылка на узел-предшественник
# ## Конструктор ###
### Конструктор ###
def initialize(val)
@val = val
end
end
# ## Двусторонняя очередь на основе двусвязного списка ###
### Двусторонняя очередь на основе двусвязного списка ###
class LinkedListDeque
# ## Получение длины двусторонней очереди ###
### Получение длины двусторонней очереди ###
attr_reader :size
# ## Конструктор ###
### Конструктор ###
def initialize
@front = nil # Головной узел front
@rear = nil # Хвостовой узел rear
@size = 0 # Длина двусторонней очереди
end
# ## Проверка, пуста ли двусторонняя очередь ###
### Проверка, пуста ли двусторонняя очередь ###
def is_empty?
size.zero?
end
# ## Операция добавления в очередь ###
### Операция добавления в очередь ###
def push(num, is_front)
node = ListNode.new(num)
# Если связный список пуст, пусть front и rear оба указывают на node
@@ -55,17 +55,17 @@ class LinkedListDeque
@size += 1 # Обновить длину очереди
end
# ## Добавление в голову очереди ###
### Добавление в голову очереди ###
def push_first(num)
push(num, true)
end
# ## Добавление в хвост очереди ###
### Добавление в хвост очереди ###
def push_last(num)
push(num, false)
end
# ## Операция извлечения из очереди ###
### Операция извлечения из очереди ###
def pop(is_front)
raise IndexError, 'двусторонняя очередь пуста' if is_empty?
@@ -95,31 +95,31 @@ class LinkedListDeque
val
end
# ## Извлечение из головы очереди ###
### Извлечение из головы очереди ###
def pop_first
pop(true)
end
# ## Извлечение из головы очереди ###
### Извлечение из головы очереди ###
def pop_last
pop(false)
end
# ## Доступ к элементу в начале очереди ###
### Доступ к элементу в начале очереди ###
def peek_first
raise IndexError, 'двусторонняя очередь пуста' if is_empty?
@front.val
end
# ## Доступ к элементу в хвосте очереди ###
### Доступ к элементу в хвосте очереди ###
def peek_last
raise IndexError, 'двусторонняя очередь пуста' if is_empty?
@rear.val
end
# ## Вернуть массив для вывода ###
### Вернуть массив для вывода ###
def to_array
node = @front
res = Array.new(size, 0)
@@ -6,24 +6,24 @@ Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
require_relative '../utils/list_node'
# ## Очередь на основе связного списка ###
### Очередь на основе связного списка ###
class LinkedListQueue
# ## Получение длины очереди ###
### Получение длины очереди ###
attr_reader :size
# ## Конструктор ###
### Конструктор ###
def initialize
@front = nil # Головной узел front
@rear = nil # Хвостовой узел rear
@size = 0
end
# ## Проверка, пуста ли очередь ###
### Проверка, пуста ли очередь ###
def is_empty?
@front.nil?
end
# ## Добавление в очередь ###
### Добавление в очередь ###
def push(num)
# Добавить num после хвостового узла
node = ListNode.new(num)
@@ -41,7 +41,7 @@ class LinkedListQueue
@size += 1
end
# ## Извлечение из очереди ###
### Извлечение из очереди ###
def pop
num = peek
# Удалить головной узел
@@ -50,14 +50,14 @@ class LinkedListQueue
num
end
# ## Доступ к элементу в начале очереди ###
### Доступ к элементу в начале очереди ###
def peek
raise IndexError, 'очередь пуста' if is_empty?
@front.val
end
# ## Преобразовать связный список в Array и вернуть ###
### Преобразовать связный список в Array и вернуть ###
def to_array
queue = []
temp = @front
@@ -6,21 +6,21 @@ Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
require_relative '../utils/list_node'
# ## Стек на основе связного списка ###
### Стек на основе связного списка ###
class LinkedListStack
attr_reader :size
# ## Конструктор ###
### Конструктор ###
def initialize
@size = 0
end
# ## Проверка, пуст ли стек ###
### Проверка, пуст ли стек ###
def is_empty?
@peek.nil?
end
# ## Помещение в стек ###
### Помещение в стек ###
def push(val)
node = ListNode.new(val)
node.next = @peek
@@ -28,7 +28,7 @@ class LinkedListStack
@size += 1
end
# ## Извлечение из стека ###
### Извлечение из стека ###
def pop
num = peek
@peek = @peek.next
@@ -36,14 +36,14 @@ class LinkedListStack
num
end
# ## Доступ к верхнему элементу стека ###
### Доступ к верхнему элементу стека ###
def peek
raise IndexError, 'стек пуст' if is_empty?
@peek.val
end
# ## Преобразовать связный список в Array и вернуть ###
### Преобразовать связный список в Array и вернуть ###
def to_array
arr = []
node = @peek