Прежде чем кто-либо спросит, это репост более раннего вопроса, но я не могу удалить его, потому что в нем есть ответы, поэтому я изменяю его, чтобы, надеюсь, Дэниел Р. ответил на него!
У меня есть сетка чисел, и я хочу прочитать строку чисел с strfind
в любом из 8 направлений. С недиагональными мне удалось заставить работать нормально, а с диагональными я боролся (за исключением downRight
, с которым Дэниел Р помог мне ранее, за что я ему очень благодарен)!
Вот код:
A = [5,16,18,4,9;
9,10,14,3,18;
2,7,9,11,21;
3,7,2,19,22;
4,9,10,13,8]
for r = 1:5
for diags = -5:5
downRight = strfind(diag(A,diags)', [10,9,19]);
if isempty(downRight) == 0;
rowOfFirstNum = downRight(1)+max(-diags,0);
columnOfFirstNum = downRight(1)+max(diags,0);
end
downLeft = strfind(diag(rot90(A),diags)', [11,2,9]);
if isempty(downLeft) == 0;
%rowOfFirstNum =
%columnOfFirstNum =
end
upLeft = strfind(diag(rot90(A,2),diags)', [19,9,10]);
if isempty(upLeft) == 0;
%rowOfFirstNum =
%columnOfFirstNum =
end
upRight = strfind(diag(rot90(A,3),diags)', [3,7,14,4]);
if isempty(upRight) == 0;
%rowOfFirstNum =
%columnOfFirstNum =
end
end
end
downRight
работает, но я не знаю, как заставить остальные работать правильно. Просто отметим, что для проверки каждого направления необходимо закомментировать остальные 3.
Спасибо.