Diseño de algoritmos de Python - Matriz espiral

1. Matriz espiral

Las matrices en espiral son un viejo algoritmo de juguete, y una forma interesante de lograr la espiral es llenar la fila superior y rotar la matriz para desenrollar la secuencia.

Afortunadamente, la rotación y la simetría están estrechamente relacionadas. Cualquier rotación puede expresarse mediante simetría de línea puntual o simetría de dos líneas. Esto es exactamente lo que queremos. Todo lo que tenemos que hacer es voltear la matriz horizontalmente y transponer

Dos, implementación del algoritmo de Python

from itertools import count

def spiral(n):
    matrix = [range(i * n + n)[-n:] for i in range(n)]
    X, C, R = {
    
    }, count(1), matrix
    while R:
        X.update(zip(R[0], C))
        R = list(zip(*[i[::-1] for i in R[1:]]))
    return [[X[j] for j in i] for i in matrix]


for i in spiral(5):
    print('\t'.join(map(str, i)))
  • El método update () se utiliza para actualizar los pares clave/valor en el diccionario, puede modificar el valor correspondiente a la clave existente o agregar un nuevo par clave/valor al diccionario.
  • La función zip () se usa para tomar un objeto iterable como parámetro, empaquetar los elementos correspondientes en el objeto en tuplas y luego devolver una lista compuesta por estas tuplas. Si el número de elementos de cada iterador es inconsistente, la longitud de la lista devuelta es la misma que la del objeto más corto y la tupla se puede descomprimir en una lista usando el operador *. Si desea mostrar una lista en Python3, debe convertirla manualmente con list()


Resultado de salida:
inserte la descripción de la imagen aquí

3. Información del autor

Autor: La rutina de pesca de Xiaohong, Objetivo: ¡Hacer que la programación sea más interesante!

Concéntrese en algoritmos, reptiles, desarrollo de juegos, análisis de datos, procesamiento de lenguaje natural, IA, etc., esperando su atención, ¡permítanos crecer y codificar juntos!

Nota de derechos de autor: ¡Este artículo prohíbe el plagio y la reimpresión, y la infracción debe investigarse!

Supongo que te gusta

Origin blog.csdn.net/qq_44000141/article/details/130352607
Recomendado
Clasificación