Python: матрица NxNxN
В этом уроке мы рассмотрим, как в Python создать матрицу NxNxN.
Что такое NxNxN?
Термин NxNxN (произносится как N на N на N) также называется кубом NxNxN или головоломкой NxNxN. Это куб с одинаковыми размерами, то есть куб будет иметь одинаковую высоту, ширину и длину.
Под эту категорию попадают куб 2x2x2, кубик Рубика, куб 4x4x4, куб 5x5x5. Куб 1x1x1 также относится к этой категории, даже если это не головоломка, потому что он завершает набор NxNxN.
Как создать матрицу NxNxN?
Теперь давайте узнаем, как создать матрицу nxnxn разными способами.
Создаём матрицу NxN в Python с неповторяющимися числами
Приведенный ниже код предназначен для создания матрицы nxn. Он не повторяет числа по строкам и столбцам.
import numpy as np
N = 5
row = np.arange(N)
result = np.zeros((N, N))
for i in row:
result[i] = np.roll(row, i)
print(result)
Вывод
[[0. 1. 2. 3. 4.]
[4. 0. 1. 2. 3.]
[3. 4. 0. 1. 2.]
[2. 3. 4. 0. 1.]
[1. 2. 3. 4. 0.]]
Создаём матрицу NxNxN с помощью numpy
В этом коде просто нужно изменить значение N в зависимости от требований и формы, которую вам нужно сгенерировать. Для стандартного кубика Рубика это будет 3x3x3, поэтому значение n будет равно 3.
Пример:
import numpy as np
n = 3
a = np.arange(n)
b = np.array([a]*n)
matrix = np.array([b]*n)
flat_mat = matrix.reshape((int(matrix.size/n),n))
rotate = np.eye(n) + 2
result = np.array([rotate.dot(x) for x in flat_mat])
result=result.reshape((n,n,n))
print(result)
Вывод
[[[6. 7. 8.]
[6. 7. 8.]
[6. 7. 8.]]
[[6. 7. 8.]
[6. 7. 8.]
[6. 7. 8.]]
[[6. 7. 8.]
[6. 7. 8.]
[6. 7. 8.]]]