how to build a magic matrix manually of even n*n matrix?
8 views (last 30 days)
Show older comments
i have written an alogorithm magic of odd order yet could not think of one for even order i i am starting to see a pattern for 4 by 4 yet going into 6 by 6 it does seem that i need to take other things into account hints would be appreciated
function res=magicodd(n)
if nargin<1
input("enter a matrix of size 3 or bigger ")
end
if n<3
error("enter a matrix of at least size 3")
end
if mod(n, 2) == 0
error('Order of the magic square must be odd.');
end
row = 1;
res=zeros(n);
col=ceil(n/2);
for num = 1:n^2
res(row,col)=num;
new_row = mod(row - 2, n) + 1;
new_col = mod(col, n) + 1;
% Move up and right
if res(new_row, new_col) == 0
row = new_row;
col = new_col;
else
% Move down
row = mod(row, n) + 1;
end
end
end
Accepted Answer
John D'Errico
on 25 Mar 2024
@the cyclist is correct, that this is purely an algorithm question. But you did write code.
Anyway, I'd start here, if I were you:
More Answers (2)
the cyclist
on 26 Mar 2024
Edited: the cyclist
on 26 Mar 2024
The method that MATLAB uses to build magic squares is evident if you enter
type magic
at the command line.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!