Dado n, imprima el patrón de tablero de ajedrez para una array anxn
Patrón de tablero de ajedrez para n = 8:
Consta de n * n cuadrados de alternancia 0 para blanco y 1 para negro.
Podemos hacer lo mismo usando bucles for anidados y algunas condiciones if, pero usando la biblioteca numpy de Python, podemos importar una array 2-D y obtener el patrón de tablero de ajedrez usando cortes.
W2 usará la siguiente función de python para imprimir el patrón:
x = np.zeros((n, n), dtype=int)
Usando esta función, inicializamos una array 2-D con 0 en todos los índices usando numpy
- x[1::2, ::2] = 1 : corte desde la primera fila de índice hasta 1+2+2… y complete todas las columnas con 1 comenzando desde 0 hasta 0+2+2… y así sucesivamente.
- x[::2, 1::2] = 1 : Cortar desde la fila 0 hasta 0+2+2… y llenar todas las columnas con 1 comenzando desde 1 hasta 1+2+2+…..
Función de np.zeros((n, n), dtype=int) : A menudo, los elementos de una array se desconocen originalmente, pero se conoce su tamaño. Por lo tanto, NumPy ofrece varias funciones para crear arrays con contenido de marcador de posición inicial. Estos minimizan la necesidad de hacer crecer arreglos, una operación costosa. El uso del parámetro dtype inicializa todos los valores con tipo de datos int.
Por ejemplo: np.ceros, np.unos, etc.
# Python program to print nXn # checkerboard pattern using numpy import numpy as np # function to print Checkerboard pattern def printcheckboard(n): print("Checkerboard pattern:") # create a n * n matrix x = np.zeros((n, n), dtype = int) # fill with 1 the alternate rows and columns x[1::2, ::2] = 1 x[::2, 1::2] = 1 # print the pattern for i in range(n): for j in range(n): print(x[i][j], end =" ") print() # driver code n = 8 printcheckboard(n)
Producción:
Checkerboard pattern: 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0
Código fuente mejorado basado en la suposición de que Checkerboard siempre es un nXn par, es decir, n es par
# Python program to print nXn Assuming that n # is always even as a checkerboard was import numpy as np def printcheckboard(n): final = [] for i in range(n): final.append(list(np.tile([0,1],int(n/2))) if i%2==0 else list(np.tile([1,0],int(n/2)))) print(np.array(final)) # driver code n = 8 printcheckboard(n)
Producción:
Checkerboard pattern: [[0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0]]