Кто-нибудь знает алгоритм проверки головоломки судоку в Matlab? Для ввода матрицы S является головоломкой для проверки НФА выхода TF равен 1, если загадка истинно и 0, если ложно, я написал:Алгоритм проверки головоломки Sudoku?
TF=1
for i=1:9
if sum(S(i,:))~=45|sum(S(:,i))~=45|sum(sum(S(6*(floor(i/3)+1):6*(floor(i/3)+1)+3,6*(floor(i/3)+1):6*(floor(i/3)+1)+3)))~=45
TF=0
end
end
Он работает, предполагая, что сумма любой строки, столбец , а 9 3x3 блоков - 45, но он медленный и неуклюжий. Может ли кто-нибудь помочь мне очистить его и упростить?
Пожалуйста, начните с правильного отступа (выберите код в редакторе Matlab и нажмите «CTRL + I') и оберните строку (используя« ... »). Я не буду смотреть, прежде чем ты это сделаешь. –
Ваш код не работает (из-за бесполезной индексации) и не проверяет все требования судоку: 5 * (9,9) также будут иметь 45 сумм для всех столбцов, строк и подблоков ... – matheburg