How do I fix my Nan issue within a recursive function?
For my recursive function, I am trying to create a hexadoku solver. One of my variables ‘mm’ keeps outputting a NaN even when I try to change the NaNs into -1. I also believe that there is a base I am missing in order for this function to end. I do realize that the readmatrix function will output a NaN where there isn’t an integer, but that is why there is the M(isnan(M)) = -1.
M = readmatrix("puzzle_1.in","FileType","text");
M(isnan(M)) = -1;
S = zeros(size(M));
Hexadoku(M,S)
function [S] = Hexadoku(M,S)
if ~exist(‘S’)
S = zeros(size(M));
end
FirstID = M==-1;
if isempty(FirstID)
M = S(:,:,size(S,4)+2);
else
[i,j] = ind2sub([16,16],FirstID);
for k = 1:16
ii = (ceil(i/4)-1)*4+5;
jj = (ceil(j/4)-1)*4+1;
mm = M(ii:ii+3,jj:jj+3);
mm(isnan(mm)) = -1;
if (M(i+1,:)==k)==0
if (M(:,j)==k)==0
if (mm(:)==k)==0
M(i+1,j) = k;
S = Hexadoku(M,S);
end
end
end
end
end
endFor my recursive function, I am trying to create a hexadoku solver. One of my variables ‘mm’ keeps outputting a NaN even when I try to change the NaNs into -1. I also believe that there is a base I am missing in order for this function to end. I do realize that the readmatrix function will output a NaN where there isn’t an integer, but that is why there is the M(isnan(M)) = -1.
M = readmatrix("puzzle_1.in","FileType","text");
M(isnan(M)) = -1;
S = zeros(size(M));
Hexadoku(M,S)
function [S] = Hexadoku(M,S)
if ~exist(‘S’)
S = zeros(size(M));
end
FirstID = M==-1;
if isempty(FirstID)
M = S(:,:,size(S,4)+2);
else
[i,j] = ind2sub([16,16],FirstID);
for k = 1:16
ii = (ceil(i/4)-1)*4+5;
jj = (ceil(j/4)-1)*4+1;
mm = M(ii:ii+3,jj:jj+3);
mm(isnan(mm)) = -1;
if (M(i+1,:)==k)==0
if (M(:,j)==k)==0
if (mm(:)==k)==0
M(i+1,j) = k;
S = Hexadoku(M,S);
end
end
end
end
end
end For my recursive function, I am trying to create a hexadoku solver. One of my variables ‘mm’ keeps outputting a NaN even when I try to change the NaNs into -1. I also believe that there is a base I am missing in order for this function to end. I do realize that the readmatrix function will output a NaN where there isn’t an integer, but that is why there is the M(isnan(M)) = -1.
M = readmatrix("puzzle_1.in","FileType","text");
M(isnan(M)) = -1;
S = zeros(size(M));
Hexadoku(M,S)
function [S] = Hexadoku(M,S)
if ~exist(‘S’)
S = zeros(size(M));
end
FirstID = M==-1;
if isempty(FirstID)
M = S(:,:,size(S,4)+2);
else
[i,j] = ind2sub([16,16],FirstID);
for k = 1:16
ii = (ceil(i/4)-1)*4+5;
jj = (ceil(j/4)-1)*4+1;
mm = M(ii:ii+3,jj:jj+3);
mm(isnan(mm)) = -1;
if (M(i+1,:)==k)==0
if (M(:,j)==k)==0
if (mm(:)==k)==0
M(i+1,j) = k;
S = Hexadoku(M,S);
end
end
end
end
end
end matrix, matrix manipulation, for loop, loops MATLAB Answers — New Questions