Я оставлю информацию о том, как создать магический квадрат, в качестве упражнения. Если у вас все еще есть проблемы, вы можете найти другие вопросы в StackOverflow о том, как генерировать магический квадрат заданного размера в Python.
Получив магический квадрат 3х3 magic(3)
(в виде обнаженного ndarray), вы можете получить все возможные магические квадраты этого размера, выполнив все возможные повороты и отражения на нем:
rotations = [np.rot90(magic(3), x) for x in range(4)]
reflections = [np.flip(x, 1) for x in rotations]
all_magic_3x3 = rotations + reflections
Создает список, содержащий следующие 8 магических матриц 3х3:
[[8 1 6]
[3 5 7]
[4 9 2]]
[[6 7 2]
[1 5 9]
[8 3 4]]
[[2 9 4]
[7 5 3]
[6 1 8]]
[[4 3 8]
[9 5 1]
[2 7 6]]
[[6 1 8]
[7 5 3]
[2 9 4]]
[[2 7 6]
[9 5 1]
[4 3 8]]
[[4 9 2]
[3 5 7]
[8 1 6]]
[[8 3 4]
[1 5 9]
[6 7 2]]