Найти все возможные магические квадраты (3х3) питона - PullRequest
0 голосов
/ 12 июня 2019

Мне нужны эти ребята для школы, пожалуйста, помогите. Я могу найти только один магический квадрат, как найти все, пожалуйста.

1 Ответ

0 голосов
/ 12 июня 2019

Я оставлю информацию о том, как создать магический квадрат, в качестве упражнения. Если у вас все еще есть проблемы, вы можете найти другие вопросы в 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]]
...