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,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Бэктрекинг ###
### Бэктрекинг ###
def backtrack(choices, state, n, res)
# Когда подъем достигает n-й ступени, число вариантов увеличивается на 1
res[0] += 1 if state == n
@@ -19,7 +19,7 @@ def backtrack(choices, state, n, res)
# Откат
end
# ## Подъем по лестнице: бэктрекинг ###
### Подъем по лестнице: бэктрекинг ###
def climbing_stairs_backtrack(n)
choices = [1, 2] # Можно подняться на 1 или 2 ступени
state = 0 # Начать подъем с 0-й ступени
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Подъем по лестнице с ограничениями: динамическое программирование ###
### Подъем по лестнице с ограничениями: динамическое программирование ###
def climbing_stairs_constraint_dp(n)
return 1 if n == 1 || n == 2
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Поиск ###
### Поиск ###
def dfs(i)
# dp[1] и dp[2] уже известны, вернуть их
return i if i == 1 || i == 2
@@ -12,7 +12,7 @@ def dfs(i)
dfs(i - 1) + dfs(i - 2)
end
# ## Подъем по лестнице: поиск ###
### Подъем по лестнице: поиск ###
def climbing_stairs_dfs(n)
dfs(n)
end
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Поиск с мемоизацией ###
### Поиск с мемоизацией ###
def dfs(i, mem)
# dp[1] и dp[2] уже известны, вернуть их
return i if i == 1 || i == 2
@@ -17,7 +17,7 @@ def dfs(i, mem)
mem[i] = count
end
# ## Подъем по лестнице: поиск с мемоизацией ###
### Подъем по лестнице: поиск с мемоизацией ###
def climbing_stairs_dfs_mem(n)
# mem[i] хранит число способов подняться на i-ю ступень, -1 означает отсутствие записи
mem = Array.new(n + 1, -1)
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Подъем по лестнице: динамическое программирование ###
### Подъем по лестнице: динамическое программирование ###
def climbing_stairs_dp(n)
return n if n == 1 || n == 2
@@ -18,7 +18,7 @@ def climbing_stairs_dp(n)
dp[n]
end
# ## Подъем по лестнице: динамическое программирование с оптимизацией памяти ###
### Подъем по лестнице: динамическое программирование с оптимизацией памяти ###
def climbing_stairs_dp_comp(n)
return n if n == 1 || n == 2
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Размен монет: динамическое программирование ###
### Размен монет: динамическое программирование ###
def coin_change_dp(coins, amt)
n = coins.length
_MAX = amt + 1
@@ -27,7 +27,7 @@ def coin_change_dp(coins, amt)
dp[n][amt] != _MAX ? dp[n][amt] : -1
end
# ## Размен монет: динамическое программирование с оптимизацией памяти ###
### Размен монет: динамическое программирование с оптимизацией памяти ###
def coin_change_dp_comp(coins, amt)
n = coins.length
_MAX = amt + 1
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Размен монет II: динамическое программирование ###
### Размен монет II: динамическое программирование ###
def coin_change_ii_dp(coins, amt)
n = coins.length
# Инициализация таблицы dp
@@ -26,7 +26,7 @@ def coin_change_ii_dp(coins, amt)
dp[n][amt]
end
# ## Размен монет II: динамическое программирование с оптимизацией памяти ###
### Размен монет II: динамическое программирование с оптимизацией памяти ###
def coin_change_ii_dp_comp(coins, amt)
n = coins.length
# Инициализация таблицы dp
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Редакционное расстояние: полный перебор ###
### Редакционное расстояние: полный перебор ###
def edit_distance_dfs(s, t, i, j)
# Если s и t пусты, вернуть 0
return 0 if i == 0 && j == 0
@@ -41,7 +41,7 @@ def edit_distance_dfs_mem(s, t, mem, i, j)
mem[i][j] = [insert, delete, replace].min + 1
end
# ## Редакционное расстояние: динамическое программирование ###
### Редакционное расстояние: динамическое программирование ###
def edit_distance_dp(s, t)
n, m = s.length, t.length
dp = Array.new(n + 1) { Array.new(m + 1, 0) }
@@ -63,7 +63,7 @@ def edit_distance_dp(s, t)
dp[n][m]
end
# ## Редакционное расстояние: динамическое программирование с оптимизацией памяти ###
### Редакционное расстояние: динамическое программирование с оптимизацией памяти ###
def edit_distance_dp_comp(s, t)
n, m = s.length, t.length
dp = Array.new(m + 1, 0)
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Рюкзак 0-1: полный перебор ###
### Рюкзак 0-1: полный перебор ###
def knapsack_dfs(wgt, val, i, c)
# Если все предметы уже рассмотрены или в рюкзаке не осталось места, вернуть стоимость 0
return 0 if i == 0 || c == 0
@@ -17,7 +17,7 @@ def knapsack_dfs(wgt, val, i, c)
[no, yes].max
end
# ## Рюкзак 0-1: поиск с мемоизацией ###
### Рюкзак 0-1: поиск с мемоизацией ###
def knapsack_dfs_mem(wgt, val, mem, i, c)
# Если все предметы уже рассмотрены или в рюкзаке не осталось места, вернуть стоимость 0
return 0 if i == 0 || c == 0
@@ -32,7 +32,7 @@ def knapsack_dfs_mem(wgt, val, mem, i, c)
mem[i][c] = [no, yes].max
end
# ## Рюкзак 0-1: динамическое программирование ###
### Рюкзак 0-1: динамическое программирование ###
def knapsack_dp(wgt, val, cap)
n = wgt.length
# Инициализация таблицы dp
@@ -52,7 +52,7 @@ def knapsack_dp(wgt, val, cap)
dp[n][cap]
end
# ## Рюкзак 0-1: динамическое программирование с оптимизацией памяти ###
### Рюкзак 0-1: динамическое программирование с оптимизацией памяти ###
def knapsack_dp_comp(wgt, val, cap)
n = wgt.length
# Инициализация таблицы dp
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Минимальная стоимость подъема по лестнице: динамическое программирование ###
### Минимальная стоимость подъема по лестнице: динамическое программирование ###
def min_cost_climbing_stairs_dp(cost)
n = cost.length - 1
return cost[n] if n == 1 || n == 2
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Минимальная сумма пути: полный перебор ###
### Минимальная сумма пути: полный перебор ###
def min_path_sum_dfs(grid, i, j)
# Если это верхняя левая ячейка, завершить поиск
return grid[i][j] if i == 0 && j == 0
@@ -17,7 +17,7 @@ def min_path_sum_dfs(grid, i, j)
[left, up].min + grid[i][j]
end
# ## Минимальная сумма пути: поиск с мемоизацией ###
### Минимальная сумма пути: поиск с мемоизацией ###
def min_path_sum_dfs_mem(grid, mem, i, j)
# Если это верхняя левая ячейка, завершить поиск
return grid[0][0] if i == 0 && j == 0
@@ -32,7 +32,7 @@ def min_path_sum_dfs_mem(grid, mem, i, j)
mem[i][j] = [left, up].min + grid[i][j]
end
# ## Минимальная сумма пути: динамическое программирование ###
### Минимальная сумма пути: динамическое программирование ###
def min_path_sum_dp(grid)
n, m = grid.length, grid.first.length
# Инициализация таблицы dp
@@ -51,7 +51,7 @@ def min_path_sum_dp(grid)
dp[n -1][m -1]
end
# ## Минимальная сумма пути: динамическое программирование с оптимизацией памяти ###
### Минимальная сумма пути: динамическое программирование с оптимизацией памяти ###
def min_path_sum_dp_comp(grid)
n, m = grid.length, grid.first.length
# Инициализация таблицы dp
@@ -4,7 +4,7 @@ Created Time: 2024-05-29
Author: Xuan Khoa Tu Nguyen (ngxktuzkai2000@gmail.com)
=end
# ## Полный рюкзак: динамическое программирование ###
### Полный рюкзак: динамическое программирование ###
def unbounded_knapsack_dp(wgt, val, cap)
n = wgt.length
# Инициализация таблицы dp