Как можно было бы написать код matlab, чтобы каждая ячейка головоломки судоку имела ценность? - PullRequest
0 голосов
/ 07 мая 2019

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

A = zeros(324,729);

% Row j has one k
  for j=1:9
for k=1:9
  RowA = (j-1)*9+k;
  ColA = 81*(j-1)+(k-1)+[1:9:81];
  A(RowA,ColA) = ones(1,9);
end 
end

% Box (m,n) has one k
for j=1:9
m = ceil(j/3);
n = 1+mod(j-1,3);
for k=1:9
    RowA = 81 + (j-1)*9+k;
    ColA = (m-1)*243+(n-1)*27+(k-1)+[1 10 19 82 91 100 163 172 181];
    A(RowA,ColA) = ones(1,9);
end
end



% Col j has one k
for j=1:9
for k=1:9
  RowA = 162 + 9*(j-1)+(k-1)+[1:9:81];
  ColA = 81*(j-1)+k;
  A(RowA,ColA) = ones(1,9);
end
end



% Cell (m,n) has one value

Я понимаю, что ограничение, для которого я пытаюсь написать код, должно позволять заполнять все 81 ячейку значением от 1 до 9. Проблема в том, что я не уверен, как начать писать этот конкретный код в Matlab.

...