Изучение матрицы Чакравью в Python: методы и примеры кода

В этой статье мы углубимся в концепцию матрицы Чакравью и рассмотрим различные методы ее реализации в 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: обход спирального порядка
Другой подход к созданию матрицы Чакравью заключается в использовании шаблона обхода спирального порядка. Мы определим границы матрицы и соответствующим образом заполним элементы.