HE/JudgeTypeJam.m

71 lines
2.0 KiB
Mathematica
Raw Normal View History

2024-03-30 16:35:40 +08:00
%%************************<EFBFBD><EFBFBD><EFBFBD>жϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************%%
%%=============================<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>===================================%%
% J: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>
%Type: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
%%========================================================================%%
function Type = JudgeTypeJam(J)
J = sort(J,'ascend');
len_J = length(J);
c1 = 1;
band = cell(0,0);
mono_d = cell(0,0);
mono = [];
if len_J == 0
Type = 'No jam';
elseif len_J <= 3 %&& len_J > 0 %% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if len_J == 1
Type = 'mono';
else
if len_J == 2
if J(2)-J(1) == 1
Type = 'mono';
else
Type = 'multi';
end
else
if J(3) - J(1) == 2
Type = 'mono';
else
Type = 'multi';
end
end
end
else
while c1 < len_J
c2 = 0;
while (c1 + c2 + 1 <= len_J && J(c1) + c2 + 1== J(c1 + c2 + 1))
c2 = c2 + 1;
end
if(c2 > 2)
band = [band;(J(c1:1:c1+c2))]; %% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪƵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end
if (c2 == 2 || c2 == 1)
mono_d = [mono_d;(J(c1:1:c1+c2))]; %% Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>
end
if c2 == 0
mono = [mono,J(c1)];
end
c1 = c1 + c2 +1;
if c1 == len_J && J(len_J-1) + 1 ~= J(len_J)
mono = [mono,J(len_J)];
end
end
num_band = numel(band);
num_mono_d = numel(mono_d);
num_mono = length(mono);
num_multi = num_mono + num_mono_d;
if num_band ~= 0
if num_multi == 0
Type = 'band';
else
if num_multi >1
Type = 'band_multi';
else
Type = 'band_mono';
end
end
else
Type = 'multi';
end
end
%% end