📄 x_over2.m
字号:
% function [xnew,ynew]=x_over2(x,y)
% 将两个串做交叉
function [xnew,ynew]=x_over2(x,y)
for i=1:2,
if i==2, x=y; end;
L=length(x);
fo_ind=findstr(x,'{');
if any(fo_ind)==1,
for j=1:length(fo_ind),
for k=fo_ind(j):L,
if x(k)=='(',
x(k)='#';
elseif x(k)==')',
x(k)='$';
elseif x(k)=='<',
break,
end
end
end
mc_ind=findstr(x,'>');
for j=1:length(mc_ind),
for k=mc_ind(j):L,
if x(k)=='(',
x(k)='#';
elseif x(k)==')',
x(k)='$';
elseif x(k)=='}' | x(k)=='<',
break,
end
end
end
end
L = length(x);
obr_ind = findstr(x,'(');
cbr_ind = findstr(x,')');
num_bra=length(obr_ind);
r_num=ceil(rand(1)*num_bra + eps);
start_point=obr_ind(r_num);
if start_point > 1,
if x(start_point-1)=='1' | x(start_point-1)=='2',
xnew=x;
ynew=y;
% Unmask brackets
xnew=strrep(xnew,'#','(');
xnew=strrep(xnew,'$',')');
ynew=strrep(ynew,'#','(');
ynew=strrep(ynew,'$',')');
return
end
end
bo_count=0;
bc_count=0;
for j=start_point:L,
if x(j) == '(',
bo_count=bo_count+1;
elseif x(j) == ')',
bc_count=bc_count+1;
if bc_count == bo_count;
end_point = j;
break;
end
end
end
if i==1,
xstart=x(1:start_point-1);
xcross=x(start_point:end_point);
if end_point == L,
xend=[];
else
xend=x(end_point+1:L);
end
else
ystart=x(1:start_point-1);
ycross=x(start_point:end_point);
if end_point == L,
yend=[];
else
yend=x(end_point+1:L);
end
end
end
% 执行交叉
xnew=[xstart ycross xend];
ynew=[ystart xcross yend];
xnew=strrep(xnew,'#','(');
xnew=strrep(xnew,'$',')');
ynew=strrep(ynew,'#','(');
ynew=strrep(ynew,'$',')');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -