# Magic Square HackerRank Exercise

# Problem

Defined a magic square

`to be a matrix of distinct positive integers from`

n x n`where the sum of any row, column, or diagonal of length n is always equal to the same number: the`

1 to n²magic constant. The given`a matrix`

3 x 3sof integers in the inclusive range`. The program can convert any digit`

[1, 9]ato any other digitbin the range`at cost of`

[1, 9]`. Given`

[a — b]s, convert it into a magic square at aminimalcost. Print this cost on a new line.

# Solving

The solving of this exercise isn’t so difficult. The main issue here is to understand the meaning and specification. I want to define the main parts of the **magic square**:

- All rows, columns, diagonals are always equal to

, where*n²*`n`

is a matrix size. (Matrix should be a square) - Items should be the arithmetic progression. Matrix with all number 3 or 4 for example is not a magic square. (It can be helpful if you need to calculate the sum of all items in a huge magic square). So the magic square

should contain only*3 x 3**n ^ 2 = 1, 2, 3, 4, 5, 6, 7, 8, 9* - The order has matter!

So, in this exercise, we have only a

matrix. Magic square like that has only 8 possible variations of order. We need to compare this matrix with all these variations. The solving can be smarter for *3 x 3**n x n matrix*. But it was so slow (exercises on HackerRank has time complexity limitations, and that’s why solving looks silly).

We need to create all possible variations of the magic square with

size. Then calculate the difference between each variation and input matrix. The minimum value of these differences is our answer*3 x 3*