В этой статье мы углубимся в концепцию матрицы Чакравью и рассмотрим различные методы ее реализации в Python. Мы предоставим примеры кода для каждого метода, что позволит вам понять и применить их в своих проектах. Итак, давайте углубимся и раскроем тайны матрицы Чакравью!
Понимание матрицы Чакравью:
Матрица Чакравью представляет собой круговой матричный шаблон, который содержит определенное расположение элементов. Он вдохновлен древним индийским военным формированием под названием «Чакравью». Матрица представлена концентрическими кругами, а элементы заполнены по спирали по часовой стрелке от верхнего левого угла до центра. Реализация этой матрицы требует тщательного планирования и логики.
Метод 1: наивный подход
Давайте начнем с простого подхода к созданию матрицы Чакравью с использованием структуры вложенного списка. Мы будем перебирать матрицу, заполняя элементы по спирали.
def create_chakravyuh_matrix(n):
matrix = [[0] * n for _ in range(n)]
num = 1
for layer in range((n + 1) // 2):
for i in range(layer, n - layer):
matrix[layer][i] = num
num += 1
for i in range(layer + 1, n - layer):
matrix[i][n - layer - 1] = num
num += 1
for i in range(n - layer - 2, layer - 1, -1):
matrix[n - layer - 1][i] = num
num += 1
for i in range(n - layer - 2, layer, -1):
matrix[i][layer] = num
num += 1
return matrix
# Usage
n = 5
chakravyuh_matrix = create_chakravyuh_matrix(n)
print(chakravyuh_matrix)
Метод 2: библиотека NumPy
NumPy — мощная библиотека для числовых вычислений на Python. Мы можем использовать его функциональные возможности для эффективного создания матрицы Чакравью.
import numpy as np
def create_chakravyuh_matrix(n):
matrix = np.zeros((n, n), dtype=int)
num = 1
for layer in range((n + 1) // 2):
matrix[layer, layer:n - layer] = range(num, num + n - 2 * layer)
matrix[layer:n - layer, n - layer - 1] = range(num + n - 2 * layer, num + 2 * (n - 2 * layer))
matrix[n - layer - 1, layer:n - layer - 1][::-1] = range(num + 2 * (n - 2 * layer), num + 3 * (n - 2 * layer) - 1)
matrix[layer + 1:n - layer - 1, layer] = range(num + 3 * (n - 2 * layer) - 1, num + 4 * (n - 2 * layer) - 2)[::-1]
num += 4 * (n - 2 * layer) - 2
return matrix
# Usage
n = 5
chakravyuh_matrix = create_chakravyuh_matrix(n)
print(chakravyuh_matrix)
Метод 3: обход спирального порядка
Другой подход к созданию матрицы Чакравью заключается в использовании шаблона обхода спирального порядка. Мы определим границы матрицы и соответствующим образом заполним элементы.