Pesquisa de site

Programa Python para imprimir matriz em um padrão de cobra


Neste artigo, aprenderemos um programa python para imprimir uma matriz em um padrão de cobra.

Suponha que pegamos a matriz n x n. Agora imprimiremos a matriz de entrada em um padrão de cobra usando os métodos mencionados abaixo.

Métodos usados

A seguir estão os vários métodos usados para realizar esta tarefa -

  • Usando o loop for aninhado

  • Invertendo linhas alternativas usando fatiamento

Intuição 

Iremos iterar por todas as linhas de uma matriz. Para cada linha, verificaremos agora se é par ou ímpar. Se a linha for par, imprimiremos a matriz da esquerda para a direita, caso contrário imprimiremos a matriz da direita para a esquerda.

Método 1: usando o loop for aninhado

Algoritmo (etapas)

A seguir estão os algoritmos/etapas a serem seguidos para realizar a tarefa desejada. -

  • Crie uma variável para armazenar o número de linhas de uma matriz.

  • Crie outra variável para armazenar o número de colunas de uma matriz.

  • Criando uma função printSnakePattern() para imprimir a matriz em padrão cobra aceitando a matriz de entrada como argumento.

  • Use a palavra-chave global para tornar globais as variáveis de linhas e colunas.

  • Use o loop for para percorrer as linhas de uma matriz.

  • Use a instrução if condicional para verificar se o número da linha atual é par.

  • Use outro loop for aninhado para percorrer todas as colunas da linha atual se a condição for verdadeira.

  • Imprima a linha da matriz da esquerda para a direita se a linha atual for par.

  • Caso contrário, imprima a linha da matriz da direita para a esquerda se a linha atual for ímpar.

  • Crie uma variável para armazenar a matriz de entrada e imprima a matriz fornecida.

  • Chame a função printSnakePattern() definida acima, passando a matriz de entrada como argumento.

Exemplo

O programa a seguir imprime uma matriz de entrada em um padrão de cobra usando loop for aninhado -

# initializing the number of rows of the matrix
rows = 4
# initializing the number of columns of the matrix
columns = 4
# creating a function for printing the matrix in
# snake pattern accepting the input matrix as an argument.
def printSnakePattern(inputMatrix):
   # making the rows and columns variables global
      global rows, columns
      # traversing through the rows of a matrix
      for m in range(rows):
         # checking whether the current row number is even
         if m % 2 == 0:
            # traversing through all the columns of the current row
               for n in range(columns):
                  # printing from left to right if the current row is even
                  print(inputMatrix[m][n], end=" ")

         # Else, printing from right to left if the current row is even
         else:
            # traversing from the end of the columns
               for n in range(columns - 1, -1, -1):
                  print(inputMatrix[m][n], end=" ")
# input matrix
inputMatrix = [[3, 4, 5, 6],
               [10, 40, 60, 80],
               [1, 9, 7, 8],
               [40, 20, 14, 15]]
print("The Given Matrix is :")
print(inputMatrix)
# calling the above-defined printSnakePattern function
# by passing the input matrix as an argument.
print("Snake Pattern of the given Matrix is:")
printSnakePattern(inputMatrix)

Saída

Ao ser executado, o programa acima irá gerar a seguinte saída -

The Given Matrix is :
[[3, 4, 5, 6], [10, 40, 60, 80], [1, 9, 7, 8], [40, 20, 14, 15]]
Snake Pattern of the given Matrix is:
3 4 5 6 80 60 40 10 1 9 7 8 15 14 20 40 

Método 2: inverter linhas alternativas usando fatiamento

slicing é uma prática frequente e aquela que os programadores mais utilizam para resolver problemas de forma eficaz. Considere uma lista Python. Você deve dividir uma lista para acessar um intervalo de elementos da lista. O uso de dois pontos(:), um operador simples de fatiamento, é um método para fazer isso.

Sintaxe

[start:stop:step]

Parâmetros

  • start - índice de onde começar

  • end - índice final

  • step - número de saltos a serem executados, ou seja, tamanho do passo

Exemplo

O programa a seguir imprime uma matriz de entrada em um padrão de cobra usando fatiamento -

# input matrix
inputMatrix = [[3, 4, 5, 6],
               [10, 40, 60, 80],
               [1, 9, 7, 8],
               [40, 20, 14, 15]]
# initializing the number of rows of a matrix
rows = 4
# initializing the number of columns of a matrix
columns = 4
# creating a function for printing the matrix in
# snake pattern accepting the input matrix as an argument.
def printSnakePattern(inputMatrix):
   # making the rows and columns variables global
      global rows, columns
      # traversing through the rows of a matrix
      for m in range(rows):
         # checking whether the current row number is even
         if m % 2 != 0:
            # Reversing the row using reverse slicing
            inputMatrix[m] = inputMatrix[m][::-1]

      # traversing through the rows of a matrix
      for m in range(rows):
         # traversing through all the columns of the current row
         for n in range(columns):
            # printing the corresponding element
               print(inputMatrix[m][n], end=' ')
# input matrix
inputMatrix = [[3, 4, 5, 6],
               [10, 40, 60, 80],
               [1, 9, 7, 8],
               [40, 20, 14, 15]]
print("The Given Matrix is :")
print(inputMatrix)
# calling the above-defined printSnakePattern function
# by passing the input matrix as an argument.
print("Snake Pattern of the given Matrix is:")
printSnakePattern(inputMatrix)

Saída

Na execução, o programa acima irá gerar a seguinte saída -

The Given Matrix is :
[[3, 4, 5, 6], [10, 40, 60, 80], [1, 9, 7, 8], [40, 20, 14, 15]]
The Snake Pattern of the given Matrix is:
3 4 5 6 80 60 40 10 1 9 7 8 15 14 20 40 

Conclusão

Neste artigo, aprendemos como imprimir a matriz fornecida em forma de cobra usando dois métodos diferentes. Aprendemos como usar a palavra-chave global para tornar variáveis globais. Também aprendemos como reverter qualquer iterável, incluindo uma lista, tupla, string, etc., por meio do fatiamento reverso.

Artigos relacionados: