function W = solv(B)
KVC4=22717;
eRZn = rand(43,1);
W=uIGZ(B);
TULR = qqGc(B,W);
[QPBW,BBlu] = size(B);
QAHK = B(QPBW:-1:1,:);
QAHK = QAHK.';
[zhAX,Zlwe] = hcY3(QAHK,[1 2],[1 2],4*QPBW*BBlu);
if TULR > Zlwe
W = [QPBW-zhAX(:,2)+1 zhAX(:,1) QPBW-zhAX(:,4)+1 zhAX(:,3)];
TULR=Zlwe;
end
vLTh=rand('state');
rand(KVC4,1);
if TULR>1000
[zhAX,Zlwe] = hcY3(QAHK,[1 2],[1 2],4*QPBW*BBlu);
if TULR > Zlwe
W = [QPBW-zhAX(:,2)+1 zhAX(:,1) QPBW-zhAX(:,4)+1 zhAX(:,3)];
TULR=Zlwe;
end
end
rand('state',vLTh);
end
function [W,TULR] = hcY3(c1Pi,KaSC,bRbX,zsLV)
[PjVa,N21S]=size(c1Pi);
MZSq= -ones(PjVa+2,N21S+2);
MZSq(2:end-1,2:end-1)=c1Pi;
IRNq = MZSq;
is2o = 4;
if size(IRNq,2) > 20
qAX8 = 4;
m8ji = 8;
vX63 = 18;
else
qAX8 = 3;
m8ji = 7;
vX63 = 13;
end
TULR = inf;
An2C = [1 2;2 1];
l28M = [1 3;3 1];
GZsG = [3 2 1;1 2 3];
for IqTU = KaSC
if IqTU == 2
[Bx1H Z9xW] = KPeu(IRNq,qAX8,An2C(IqTU,:));
[rldT Qi2f] = nrY7(Z9xW,Bx1H,m8ji,l28M(IqTU,:));
[eKNN zEpS] = nrY7(Qi2f,rldT,vX63,l28M(IqTU,:));
else
[Bx1H Z9xW] = KPeu(IRNq,4,An2C(IqTU,:));
[eKNN zEpS] = nrY7(Z9xW,Bx1H,11,l28M(IqTU,:));
end
for CT3K = bRbX
JgZB = KLjx(IRNq,zEpS,eKNN,is2o,vX63,GZsG(CT3K,:))-1;
RU9w = qqGc(c1Pi,JgZB);
if RU9w <= TULR
TULR = RU9w;
W = JgZB;
is2o = is2o - 1;
end
end
end
end
function ZRNF = qqGc(B,W)
PjVa=size(B,1);
B(W(:,1)+(W(:,2)-1)*PjVa)=0;
B(W(:,3)+(W(:,4)-1)*PjVa)=0;
ZRNF=sum(B(:))+size(W,1)+sum(W(:,1)==W(:,3)&W(:,2)==W(:,4))*24;
end
function [awcU F3SD] = F8gd(B,oOvt)
U8Qm = sort(B(B>0),'descend');
xTRK = size(U8Qm,1);
if xTRK < 1
awcU = [];
F3SD = 0;
return
end
JUKV=U8Qm(diff([0;U8Qm])~=0);
awcU = zeros(nnz(JUKV),3);
DEIO=histc(U8Qm,JUKV(end:-1:1));
awcU(:,1)=JUKV;
awcU(:,2)=DEIO(end:-1:1);
F3SD=nnz(JUKV);
if oOvt < 3, return, end
for VqBz = 1:F3SD
if awcU(VqBz,2) >= 2
dcJ6 = awcU(VqBz,1);
[saKG WsyJ] = find(B == dcJ6);
PpX_ = 0;
cxjP = size(saKG,1);
PpX_=sum(abs(diff(saKG))+abs(diff(WsyJ)));
awcU(VqBz,3) = awcU(VqBz,2)*dcJ6 - 0.85 * PpX_;
end
end
end
function [W B] = KPeu(B,vX63,oOvt)
W = [];
[awcU F3SD] = F8gd(B,oOvt);
if F3SD < 1
return
end
awcU=sortrows(awcU,-oOvt);
for VqBz = 1:F3SD
if awcU(VqBz,2) >= 2
dcJ6 = awcU(VqBz,1);
[saKG WsyJ] = find(B == dcJ6);
cxjP = size(saKG,1);
DKE2 = cxjP*(cxjP-1)/2;
dist = zeros(DKE2,3);
[osY3 brQd]=find(tril(ones(cxjP),-1));
dist(:,1)=brQd;
dist(:,2)=osY3;
dist(:,3)=abs(WsyJ(osY3)-WsyJ(brQd))+abs(saKG(osY3)-saKG(brQd));
[PpX_ n3N5] = sort(dist(:,3));
dist = dist(n3N5,:);
xTRK = 0;
for IqTU = 1:DKE2
if dist(IqTU,3) > vX63+1
break
end
ELUi = dist(IqTU,1);
DYoT = dist(IqTU,2);
path = vtoZ(B,[saKG(ELUi); saKG(DYoT)], [WsyJ(ELUi); WsyJ(DYoT)], -dcJ6, vX63, 2*dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
xTRK = 2;
edit = [1:(ELUi-1) (ELUi+1):(DYoT-1) (DYoT+1):cxjP];
saKG = [saKG(ELUi); saKG(DYoT); saKG(edit)];
WsyJ = [WsyJ(ELUi); WsyJ(DYoT); WsyJ(edit)];
break
else
end
end
if xTRK < 2
continue
end
for FVVQ = 3:cxjP
[Q39t w6US] = find(B == -dcJ6);
ZLAC = size(Q39t,1);
DKE2 = ZLAC * (cxjP - xTRK);
dist = zeros(DKE2,3);
IqTU = 0;
for ELUi = 1:ZLAC
for DYoT = (xTRK+1):cxjP
IqTU = IqTU + 1;
dist(IqTU,1) = ELUi;
dist(IqTU,2) = DYoT;
dist(IqTU,3) = abs(Q39t(ELUi)-saKG(DYoT)) + abs(w6US(ELUi)-WsyJ(DYoT));
end
end
[PpX_ n3N5] = sort(dist(:,3));
dist = dist(n3N5,:);
Y2cS = false(cxjP,1);
cQ4I = false;
for IqTU = 1:DKE2
if dist(IqTU,3) > vX63+1
break
end
DYoT = dist(IqTU,2);
if Y2cS(DYoT)
randperm(4);
continue
end
ELUi = dist(IqTU,1);
path = vtoZ(B,[Q39t(ELUi); saKG(DYoT)], [w6US(ELUi); WsyJ(DYoT)], -dcJ6, vX63, dcJ6);
Y2cS(DYoT)=true;
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
xTRK = xTRK + 1;
cQ4I = true;
saKG([FVVQ DYoT]) = saKG([DYoT FVVQ]);
WsyJ([FVVQ DYoT]) = WsyJ([DYoT FVVQ]);
break
end
end
if ~cQ4I
break
end
end
end
end
end
function [W B] = nrY7(B,W,nZjn,oOvt)
[awcU F3SD] = F8gd(B,oOvt);
if F3SD < 1, return, end
awcU=sortrows(awcU,-oOvt);
for VqBz = 1:F3SD
dcJ6 = awcU(VqBz,1);
ZLAC = sum(B == -dcJ6);
if ZLAC == 0
if awcU(VqBz,2) >= 2
[saKG WsyJ] = find(B == dcJ6);
cxjP = size(saKG,1);
DKE2 = cxjP*(cxjP-1)*.5;
dist = zeros(DKE2,3);
IqTU = 0;
for ELUi = 1:cxjP
for DYoT = (ELUi+1):cxjP
IqTU = IqTU + 1;
dist(IqTU,1) = ELUi;
dist(IqTU,2) = DYoT;
dist(IqTU,3) = abs(saKG(ELUi)-saKG(DYoT)) + abs(WsyJ(ELUi)-WsyJ(DYoT));
end
end
[PpX_ n3N5] = sort(dist(:,3));
dist = dist(n3N5,:);
maxstep = min(nZjn,2*dcJ6+1);
cQ4I = false;
for IqTU = 1:DKE2
if dist(IqTU,3) > maxstep+1
break
end
ELUi = dist(IqTU,1);
DYoT = dist(IqTU,2);
path = vtoZ(B,[saKG(ELUi); saKG(DYoT)], [WsyJ(ELUi); WsyJ(DYoT)], -dcJ6, nZjn, 2*dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
cQ4I = true;
break
end
end
if ~cQ4I
continue
end
end
end
[saKG WsyJ] = find(B == dcJ6);
aboX = size(saKG,1);
maxstep = min(nZjn,dcJ6+1);
for FVVQ = 1:aboX
[Q39t w6US] = find(B == -dcJ6);
ZLAC = size(Q39t,1);
DKE2 = ZLAC * (aboX-FVVQ+1);
dist = zeros(DKE2,3);
IqTU = 0;
for ELUi = 1:ZLAC
for DYoT = FVVQ:aboX
IqTU = IqTU + 1;
dist(IqTU,1) = ELUi;
dist(IqTU,2) = DYoT;
dist(IqTU,3) = abs(Q39t(ELUi)-saKG(DYoT)) + abs(w6US(ELUi)-WsyJ(DYoT));
end
end
[PpX_ n3N5] = sort(dist(:,3));
dist = dist(n3N5,:);
Y2cS = false(aboX,1);
cQ4I = false;
for IqTU = 1:DKE2
if dist(IqTU,3) > maxstep+1
break
end
DYoT = dist(IqTU,2);
if Y2cS(DYoT)
randperm(4);
continue
end
ELUi = dist(IqTU,1);
path = vtoZ(B,[Q39t(ELUi); saKG(DYoT)], [w6US(ELUi); WsyJ(DYoT)], -dcJ6, nZjn, 2*dcJ6);
Y2cS(DYoT)=true;
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
cQ4I = true;
saKG([FVVQ DYoT]) = saKG([DYoT FVVQ]);
WsyJ([FVVQ DYoT]) = WsyJ([DYoT FVVQ]);
break
end
end
if ~cQ4I
break
end
end
end
end
function [BZsB bQB4] = nf27(MZSq,B,path)
[C3AT hQ64] = size(B);
BZsB = MZSq == 0;
bQB4 = BZsB;
BZsB(:,[1 hQ64]) = false;
bQB4([1 C3AT],:) = false;
for VqBz = 1:size(path,1)
if path(VqBz,1) == path(VqBz,3)
BZsB(path(VqBz,1),path(VqBz,2)) = false;
BZsB(path(VqBz,3),path(VqBz,4)) = false;
end
if path(VqBz,2) == path(VqBz,4)
bQB4(path(VqBz,1),path(VqBz,2)) = false;
bQB4(path(VqBz,3),path(VqBz,4)) = false;
end
end
end
function B = zl5a(B,path,MLBM)
B(path(1,1),path(1,2)) = MLBM;
for VqBz = 1:size(path,1);
B(path(VqBz,3),path(VqBz,4)) = MLBM;
end
end
function path = bfNU(bkkr,GQXl,C3AT,ws0M)
path = zeros(ws0M,4);
lp2A = mod(bkkr,C3AT);
Bfy2 = ceil(bkkr/C3AT);
for FVVQ = 1:ws0M
path(FVVQ,1:2) = [lp2A Bfy2];
bkkr = GQXl(bkkr);
lp2A = mod(bkkr,C3AT);
Bfy2 = ceil(bkkr/C3AT);
path(FVVQ,3:4) = [lp2A Bfy2];
end
end
function path = vtoZ(B,saKG,WsyJ,MLBM,vX63,i6Yl)
[C3AT hQ64] = size(B);
GQXl = zeros(C3AT,hQ64);
CRWU = -ones(C3AT,hQ64);
CRWU(saKG(2),WsyJ(2)) = 0;
CRWU(saKG(1),WsyJ(1)) = -2;
CRWU( B == MLBM ) = -2;
KtG9 = zeros(C3AT*hQ64,1);
KtG9(1) = saKG(2) + (WsyJ(2)-1)*C3AT;
count = 1;
wfE9 = [-1 1 -C3AT C3AT];
WTTW = randperm(4);
for step = 0:min(vX63,i6Yl)
if count < 1, break, end
cxjP = count;
bkkr = KtG9;
count = 0;
for VqBz = 1:cxjP
gEAI = bkkr(VqBz);
for Wrgs=1:4
JD7d = gEAI + wfE9(WTTW(Wrgs));
yHIJ = CRWU(JD7d);
if yHIJ == -2
GQXl(JD7d) = gEAI;
path = bfNU(JD7d,GQXl,C3AT,step+1);
return
end
if yHIJ == -1 && B(JD7d) == 0
CRWU(JD7d) = step+1;
GQXl(JD7d) = gEAI;
count = count + 1;
KtG9(count) = JD7d;
end
end
end
end
path = [];
end
function path = CywA(B,BZsB,bQB4,saKG,WsyJ,MLBM,is2o,nZjn,i6Yl)
[C3AT hQ64] = size(B);
ObiS = false(C3AT,hQ64);
GQXl = zeros(C3AT,hQ64);
CRWU = -ones(C3AT,hQ64);
CRWU(saKG(1),WsyJ(1)) = -2;
CRWU( B == MLBM ) = -2;
maxstep = min((is2o*27)+nZjn,i6Yl+1);
AJly = zeros(maxstep+28,1);
AJly(1) = saKG(2) + (WsyJ(2)-1)*C3AT;
wfE9 = [-C3AT C3AT -1 1];
for step = 1:maxstep
while AJly(step)>0
gEAI = AJly(step);
AJly(step)=CRWU(gEAI);
for Wrgs = 1:4
JD7d = gEAI + wfE9(Wrgs);
yHIJ = CRWU(JD7d);
if yHIJ==-1
if B(JD7d) == 0
CRWU(JD7d) = AJly(step+1);
AJly(step+1) = JD7d;
GQXl(JD7d) = gEAI;
elseif (BZsB(JD7d)&&(Wrgs<3)) || (bQB4(JD7d)&&(Wrgs>2))
CRWU(JD7d) = AJly(step+26);
AJly(step+26) = JD7d;
GQXl(JD7d) = gEAI;
ObiS(JD7d) = true;
end
end
if yHIJ==-2
step=step+1;
GQXl(JD7d) = gEAI;
lp2A=mod(JD7d,C3AT);
Bfy2=ceil(JD7d/C3AT);
path = zeros(step,4);
FVVQ = 0;
while lp2A ~= saKG(2) || Bfy2 ~= WsyJ(2)
FVVQ = FVVQ + 1;
path(FVVQ,1:2) = [lp2A Bfy2];
JD7d = lp2A + (Bfy2-1)*C3AT;
jlNO = GQXl(JD7d);
cWC7=mod(jlNO,C3AT);
ckm2=ceil(jlNO/C3AT);
path(FVVQ,3:4) = [cWC7 ckm2];
lp2A = cWC7;
Bfy2 = ckm2;
if ObiS(lp2A,Bfy2)
FVVQ = FVVQ + 1;
path(FVVQ,:) = [lp2A Bfy2 lp2A Bfy2];
end
end
path = path(1:FVVQ,:);
return
end
end
end
end
path = [];
end
function W = uIGZ(B)
[W,TULR] = hZ8B(B);
EWsd = 0;
ESPF = round(mod(B(:),2));
if TULR < 2100
return
end
[ntto,mpbw] = size(B);
B = flipud(fliplr(B'));
[SNve,n42U] = hZ8B(B);
if TULR > n42U
W = [ntto-SNve(:,2)+1 mpbw-SNve(:,1)+1 ntto-SNve(:,4)+1 mpbw-SNve(:,3)+1];
end
if ESPF~=EWsd; W = zeros(0,4); end
end
function [W,TULR] = hZ8B(B)
[PjVa,N21S]=size(B);
Vk5i=nan(PjVa+2,N21S+2);
Vk5i(2:end-1,2:end-1)=B;
IRNq = Vk5i;
is2o = 4;
if size(IRNq,2) > 20
qAX8 = 4;
m8ji = 8;
vX63 = 12;
else
qAX8 = 3;
m8ji = 7;
vX63 = 11;
end
TULR = inf;
An2C = [1 2;2 1];
l28M = [1 3;3 1];
GZsG = [3 2 1;1 2 3];
for IqTU = 1:2
if IqTU == 2
[Bx1H Z9xW] = L_K1(IRNq,qAX8,An2C(IqTU,:));
[rldT Qi2f] = Eepa(Z9xW,Bx1H,m8ji,l28M(IqTU,:));
[eKNN zEpS] = Eepa(Qi2f,rldT,vX63,l28M(IqTU,:));
else
[Bx1H Z9xW] = L_K1(IRNq,4,An2C(IqTU,:));
[eKNN zEpS] = Eepa(Z9xW,Bx1H,11,l28M(IqTU,:));
end
for CT3K = 1:2
if IqTU == 2 && CT3K == 2 && TULR > 2100, return, end
JgZB = KLjx(IRNq,zEpS,eKNN,is2o,vX63,GZsG(CT3K,:))-1;
RU9w = qqGc(B,JgZB);
if RU9w <= TULR
TULR = RU9w;
W = JgZB;
is2o = is2o - 1;
end
end
end
if PjVa*N21S > 290; return; end
jD3z = sum(W(:,1)==W(:,3)&W(:,2)==W(:,4));
if jD3z <= 4
BMkj = yLVs(B);
vFZ0 = qqGc(B,BMkj);
if vFZ0 < TULR
W = BMkj;
TULR = vFZ0;
end
end
end
function path = hwxX(B,saKG,WsyJ,MLBM,vX63,i6Yl)
function path = bC7J(B_oA,IqFH,Sygu)
lT3w(B_oA,IqFH) = gE81(VqBz);
UT8H(B_oA,IqFH) = tibu(VqBz);
path = zeros(Sygu,4);
for g2ne = 1:Sygu
path(g2ne,1:2) = [B_oA IqFH];
kp_y = lT3w(B_oA,IqFH);
bGja = UT8H(B_oA,IqFH);
path(g2ne,3:4) = [kp_y bGja];
B_oA = kp_y;
IqFH = bGja;
end
end
[C3AT hQ64] = size(B);
lT3w = zeros(C3AT,hQ64);
UT8H = zeros(C3AT,hQ64);
CRWU = -ones(C3AT,hQ64);
CRWU(saKG(2),WsyJ(2)) = 0;
CRWU(saKG(1),WsyJ(1)) = -2;
CRWU( B == MLBM ) = -2;
kixN = zeros(C3AT*hQ64,1);
mm1i = zeros(C3AT*hQ64,1);
count = 1;
kixN(1) = saKG(2);
mm1i(1) = WsyJ(2);
PBf5=[-1 1 0 0];
sj_k=[0 0 -1 1];
for step = 0:min(vX63,i6Yl)
if count < 1, break, end
cxjP = count;
gE81 = kixN(1:cxjP);
tibu = mm1i(1:cxjP);
count = 0;
for VqBz = 1:cxjP
F9q5 = tibu(VqBz);
gEAI = gE81(VqBz);
for Wrgs=1:4
B_oA = gEAI + PBf5(Wrgs);
IqFH = F9q5 + sj_k(Wrgs);
JD7d = B_oA + (IqFH-1)*C3AT;
yHIJ = CRWU(JD7d);
if yHIJ == -2
path = bC7J(B_oA,IqFH,step+1);
return
elseif yHIJ == -1 && B(JD7d) == 0
CRWU(JD7d) = step+1;
lT3w(JD7d) = gEAI;
UT8H(JD7d) = F9q5;
count = count + 1; kixN(count) = B_oA; mm1i(count) = IqFH;
end
end
end
end
path = [];
end
function c6JG = yLVs(DYoT)
dcJ6 = unique(DYoT);
dcJ6(1) = [];
GZEq = zeros(size(dcJ6));
for VqBz = 1:length(GZEq)
GZEq(VqBz) = nnz(dcJ6(VqBz) == DYoT(:));
end
for VqBz = 1:length(GZEq)
if GZEq(VqBz) == 1
DYoT(dcJ6(VqBz) == DYoT(:)) = -1;
end
end
aou9 = zeros(size(DYoT)+2);
ApfC = repmat(-1,size(aou9));
ApfC(2:end-1,2:end-1) = DYoT;
c6JG = [];
[c8yy, CeeS] = find(ApfC>0);
PpX_ = (size(ApfC,1)/2 - c8yy).^2 + (size(ApfC,2)/2 - CeeS).^2;
[PpX_, order] = sort(PpX_);
order = order';
for F3SD = 1:length(c8yy)-1
dAcE = 0;
BBNq = 32;
for VqBz = order
if aou9(c8yy(VqBz), CeeS(VqBz))
continue
end
[ZRNF, h8wk, WMyG] = eAAu(ApfC, aou9, c8yy(VqBz), CeeS(VqBz), BBNq);
if ZRNF > dAcE
dAcE = ZRNF;
VOaS = h8wk;
BBNq = WMyG;
if BBNq == 1
break
end
end
end
if dAcE == 0
c6JG = c6JG - 1;
return
end
aou9 = zl5a(aou9, VOaS, ApfC(VOaS(1,1), VOaS(1,2)));
ApfC = zl5a(ApfC, VOaS, ApfC(VOaS(1,1), VOaS(1,2)));
c6JG = [c6JG; VOaS];
end
c6JG = c6JG - 1;
end
function [dAcE, VOaS, BBNq] = eAAu(DYoT, aou9, bkkr, tibu, TcU3)
dAcE = 0;
VOaS = [];
g2ne = [1 -1 0 0];
F3SD = [0 0 1 -1];
if ~any(aou9(:)==DYoT(bkkr,tibu))
aou9 = DYoT;
end
ApfC = DYoT;
ApfC(ApfC>0) = -1;
ApfC(bkkr,tibu) = 1;
BBNq = Inf;
dcJ6 = DYoT(bkkr,tibu);
for VqBz = 1:TcU3-2
[c8yy, CeeS] = find(ApfC==VqBz);
for GZEq = 1:length(c8yy)
for Bd72 = 1:4
JTfX = c8yy(GZEq) + g2ne(Bd72);
L8Ei = CeeS(GZEq) + F3SD(Bd72);
if aou9(JTfX,L8Ei) == dcJ6 && ~(JTfX == bkkr && L8Ei == tibu)
BBNq = VqBz;
break
end
XBzv = ApfC(JTfX,L8Ei);
if XBzv == 0
ApfC(JTfX,L8Ei) = VqBz+1;
end
end
if BBNq < Inf
break
end
end
if BBNq < Inf
break
end
end
if BBNq == Inf
return
end
dAcE = DYoT(bkkr,tibu) - BBNq;
if BBNq == 1
VOaS = [bkkr, tibu, JTfX, L8Ei];
return
end
VOaS = zeros(BBNq,4);
for step = BBNq:-1:1
for Bd72 = 1:4
Pego = JTfX + g2ne(Bd72);
TzqW = L8Ei + F3SD(Bd72);
if ApfC(Pego, TzqW) == step
break
end
end
VOaS(step,:) = [Pego, TzqW, JTfX, L8Ei];
JTfX = Pego;
L8Ei = TzqW;
end
end
function [W B] = L_K1(B,vX63,oOvt)
W = [];
[awcU F3SD] = F8gd(B,oOvt);
if F3SD < 1
return
end
awcU=sortrows(awcU,-oOvt);
for VqBz = 1:F3SD
if awcU(VqBz,2) >= 2
dcJ6 = awcU(VqBz,1);
[saKG WsyJ] = find(B == dcJ6);
cxjP = size(saKG,1);
DKE2 = cxjP*(cxjP-1)/2;
dist = zeros(DKE2,3);
IqTU = 0;
for ELUi = 1:cxjP
for DYoT = (ELUi+1):cxjP
IqTU = IqTU + 1;
dist(IqTU,1) = ELUi;
dist(IqTU,2) = DYoT;
dist(IqTU,3) = abs(saKG(ELUi)-saKG(DYoT)) + abs(WsyJ(ELUi)-WsyJ(DYoT));
end
end
[PpX_ n3N5] = sort(dist(:,3));
dist = dist(n3N5,:);
I074 = reshape(dist(:,1:2)',[],1);
xTRK = 0;
uYuB = 1;
lUee = false(cxjP,1);
for VqBz=1:cxjP
jxgJ = find( ~lUee(I074(uYuB:end)) , 1 , 'first');
if isempty(jxgJ)
break
end
ELUi = I074(jxgJ);
Distance = abs(saKG([1:ELUi-1,ELUi+1:end]')-saKG(ELUi)) + abs(WsyJ([1:ELUi-1,ELUi+1:end]')-WsyJ(ELUi));
if max(Distance)>vX63-1
break
end
path = DG5E(B,saKG(ELUi),WsyJ(ELUi),saKG([1:ELUi-1,ELUi+1:end]'),WsyJ([1:ELUi-1,ELUi+1:end]'), -dcJ6, vX63, 2*dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
xTRK = 2;
break
end
end
if xTRK < 2
continue
end
for g2ne = 3:cxjP
[Q39t w6US] = find(B == -dcJ6);
[saKG WsyJ] = find(B == dcJ6);
[XunS,vvsy] = meshgrid(saKG,Q39t);
[MZ2C,f5Vc] = meshgrid(saKG,Q39t);
Distance = abs(XunS-vvsy) + abs(MZ2C-f5Vc);
if max(Distance(:))>vX63-1
break
end
path = DG5E(B,Q39t,w6US,saKG,WsyJ, -dcJ6, vX63, 2*dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
cQ4I = true;
else
break
end
end
end
end
end
function [W B] = Eepa(B,W,WZRB,oOvt)
[awcU F3SD] = F8gd(B,oOvt);
if F3SD < 1, return, end
awcU=sortrows(awcU,-oOvt);
for VqBz = 1:F3SD
dcJ6 = awcU(VqBz,1);
ZLAC = sum(B == -dcJ6);
if ZLAC == 0
if awcU(VqBz,2) >= 2
[saKG WsyJ] = find(B == dcJ6);
cxjP = size(saKG,1);
DKE2 = cxjP*(cxjP-1)/2;
dist = zeros(DKE2,3);
IqTU = 0;
for ELUi = 1:cxjP
for DYoT = (ELUi+1):cxjP
IqTU = IqTU + 1;
dist(IqTU,1) = ELUi;
dist(IqTU,2) = DYoT;
dist(IqTU,3) = abs(saKG(ELUi)-saKG(DYoT)) + abs(WsyJ(ELUi)-WsyJ(DYoT));
end
end
[PpX_ n3N5] = sort(dist(:,3));
dist = dist(n3N5,:);
maxstep = min(WZRB,2*dcJ6+1);
cQ4I = false;
for IqTU = 1:DKE2
if dist(IqTU,3) > maxstep+1
break
end
ELUi = dist(IqTU,1);
DYoT = dist(IqTU,2);
path = hwxX(B,[saKG(ELUi); saKG(DYoT)], [WsyJ(ELUi); WsyJ(DYoT)], -dcJ6, WZRB, 2*dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
cQ4I = true;
break
end
end
if ~cQ4I
continue
end
end
end
[saKG WsyJ] = find(B == dcJ6);
VW_f = size(saKG,1);
maxstep = min(WZRB,dcJ6+1);
for g2ne = 1:VW_f
[Q39t w6US] = find(B == -dcJ6);
[saKG WsyJ] = find(B == dcJ6);
cQ4I = false;
path = DG5E(B,Q39t,w6US,saKG,WsyJ, -dcJ6, WZRB, dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
cQ4I = true;
end
if ~cQ4I
break
end
end
end
end
function [W B] = KLjx(Vk5i,B,W,is2o,WZRB,oOvt)
function EhrP()
for c6JG = 1:size(path,1);
if path(c6JG,1) == path(c6JG,3)
OB4k(path(c6JG,1),path(c6JG,2)) = false;
OB4k(path(c6JG,3),path(c6JG,4)) = false;
if path(c6JG,2) == path(c6JG,4)
B(path(c6JG,1),path(c6JG,2)) = -9999;
end
end
if path(c6JG,2) == path(c6JG,4)
r6dB(path(c6JG,1),path(c6JG,2)) = false;
r6dB(path(c6JG,3),path(c6JG,4)) = false;
end
end
end
[OB4k r6dB] = nf27(Vk5i,B,W);
[awcU F3SD] = F8gd(B,oOvt);
if F3SD < 1, return, end
awcU=sortrows(awcU,-oOvt);
for VqBz = 1:F3SD
dcJ6 = awcU(VqBz,1);
ZLAC = sum(B == -dcJ6);
if ZLAC == 0
if awcU(VqBz,2) >= 2
[saKG WsyJ] = find(B == dcJ6);
cxjP = size(saKG,1);
DKE2 = cxjP*(cxjP-1)/2;
dist = zeros(DKE2,3);
IqTU = 0;
for ELUi = 1:cxjP
for DYoT = (ELUi+1):cxjP
IqTU = IqTU + 1;
dist(IqTU,1) = ELUi;
dist(IqTU,2) = DYoT;
dist(IqTU,3) = abs(saKG(ELUi)-saKG(DYoT)) + abs(WsyJ(ELUi)-WsyJ(DYoT));
end
end
[PpX_ n3N5] = sort(dist(:,3));
dist = dist(n3N5,:);
maxstep = min((is2o*25)+WZRB,2*dcJ6+1);
cQ4I = false;
for IqTU = 1:DKE2
if dist(IqTU,3) > maxstep+1
break
end
ELUi = dist(IqTU,1);
DYoT = dist(IqTU,2);
path = CywA(B,OB4k,r6dB,[saKG(ELUi); saKG(DYoT)], [WsyJ(ELUi); WsyJ(DYoT)], -dcJ6, is2o, WZRB, 2*dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
EhrP();
cQ4I = true;
break
end
end
if ~cQ4I
continue
end
end
end
[saKG WsyJ] = find(B == dcJ6);
VW_f = size(saKG,1);
maxstep = min((is2o*25)+WZRB,dcJ6+1);
for g2ne = 1:VW_f
[Q39t w6US] = find(B == -dcJ6);
[saKG WsyJ] = find(B == dcJ6);
cQ4I = false;
path = eYzw(B,OB4k,r6dB,Q39t,w6US,saKG,WsyJ, -dcJ6, is2o, WZRB, dcJ6);
if size(path,1) > 0
W = [W; path];
B = zl5a(B,path,-dcJ6);
EhrP();
cQ4I = true;
end
if ~cQ4I
break
end
end
end
end
function path = eYzw(B,OB4k,r6dB,rowS,colS,nnMi,pf36,MLBM,is2o,WZRB,i6Yl)
[C3AT hQ64] = size(B);
AjBe = false(C3AT,hQ64);
z5wU = zeros(C3AT,hQ64);
CRWU = -ones(C3AT,hQ64);
CRWU(rowS + (colS-1)*C3AT) = 0;
CRWU(nnMi + (pf36-1)*C3AT) = -2;
maxstep = min((is2o*25)+WZRB,i6Yl+1);
Ahu1 = zeros(maxstep+26,1);
for step = 0:maxstep
if step == 0
plRZ = rowS + (colS-1)*C3AT;
elseif Ahu1(step) == 0
continue
else
plRZ = find(CRWU == step);
end
cxjP = numel(plRZ);
for VqBz = 1:cxjP
I2BS = plRZ(VqBz);
JD7d = I2BS - C3AT;
yHIJ = CRWU(JD7d);
if yHIJ == -2
step=step+1;
z5wU(JD7d) = I2BS;
B_oA=mod(JD7d,C3AT);
IqFH=ceil(JD7d/C3AT);
path = zeros(step,4);
g2ne = 0;
while isempty(find(rowS==B_oA & colS==IqFH,1))
g2ne = g2ne + 1;
path(g2ne,1:2) = [B_oA IqFH];
JD7d = B_oA + (IqFH-1)*C3AT;
Ie0B = z5wU(JD7d);
kp_y=mod(Ie0B,C3AT);
bGja=ceil(Ie0B/C3AT);
path(g2ne,3:4) = [kp_y bGja];
B_oA = kp_y;
IqFH = bGja;
if AjBe(B_oA,IqFH)
g2ne = g2ne + 1;
path(g2ne,:) = [B_oA IqFH B_oA IqFH];
end
end
path = path(1:g2ne,:);
return
end
if yHIJ == -1
if B(JD7d) == 0
CRWU(JD7d) = step+1; Ahu1(step+1) = 1;
z5wU(JD7d) = I2BS;
elseif OB4k(JD7d)
CRWU(JD7d) = step+26; Ahu1(step+26) = 1;
z5wU(JD7d) = I2BS;
AjBe(JD7d) = true;
end
end
JD7d = I2BS + C3AT;
yHIJ = CRWU(JD7d);
if yHIJ == -2
step=step+1;
z5wU(JD7d) = I2BS;
B_oA=mod(JD7d,C3AT);
IqFH=ceil(JD7d/C3AT);
path = zeros(step,4);
g2ne = 0;
while isempty(find(rowS==B_oA & colS==IqFH,1))
g2ne = g2ne + 1;
path(g2ne,1:2) = [B_oA IqFH];
JD7d = B_oA + (IqFH-1)*C3AT;
Ie0B = z5wU(JD7d);
kp_y=mod(Ie0B,C3AT);
bGja=ceil(Ie0B/C3AT);
path(g2ne,3:4) = [kp_y bGja];
B_oA = kp_y;
IqFH = bGja;
if AjBe(B_oA,IqFH)
g2ne = g2ne + 1;
path(g2ne,:) = [B_oA IqFH B_oA IqFH];
end
end
path = path(1:g2ne,:);
return
end
if yHIJ == -1
if B(JD7d) == 0
CRWU(JD7d) = step+1; Ahu1(step+1) = 1;
z5wU(JD7d) = I2BS;
elseif OB4k(JD7d)
CRWU(JD7d) = step+26; Ahu1(step+26) = 1;
z5wU(JD7d) = I2BS;
AjBe(JD7d) = true;
end
end
JD7d = I2BS - 1;
yHIJ = CRWU(JD7d);
if yHIJ == -2
step=step+1;
z5wU(JD7d) = I2BS;
B_oA=mod(JD7d,C3AT);
IqFH=ceil(JD7d/C3AT);
path = zeros(step,4);
g2ne = 0;
while isempty(find(rowS==B_oA & colS==IqFH,1))
g2ne = g2ne + 1;
path(g2ne,1:2) = [B_oA IqFH];
JD7d = B_oA + (IqFH-1)*C3AT;
Ie0B = z5wU(JD7d);
kp_y=mod(Ie0B,C3AT);
bGja=ceil(Ie0B/C3AT);
path(g2ne,3:4) = [kp_y bGja];
B_oA = kp_y;
IqFH = bGja;
if AjBe(B_oA,IqFH)
g2ne = g2ne + 1;
path(g2ne,:) = [B_oA IqFH B_oA IqFH];
end
end
path = path(1:g2ne,:);
return
end
if yHIJ == -1
if B(JD7d) == 0
CRWU(JD7d) = step+1; Ahu1(step+1) = 1;
z5wU(JD7d) = I2BS;
elseif r6dB(JD7d)
CRWU(JD7d) = step+26; Ahu1(step+26) = 1;
z5wU(JD7d) = I2BS;
AjBe(JD7d) = true;
end
end
JD7d = I2BS + 1;
yHIJ = CRWU(JD7d);
if yHIJ == -2
step=step+1;
z5wU(JD7d) = I2BS;
B_oA=mod(JD7d,C3AT);
IqFH=ceil(JD7d/C3AT);
path = zeros(step,4);
g2ne = 0;
while isempty(find(rowS==B_oA & colS==IqFH,1))
g2ne = g2ne + 1;
path(g2ne,1:2) = [B_oA IqFH];
JD7d = B_oA + (IqFH-1)*C3AT;
Ie0B = z5wU(JD7d);
kp_y=mod(Ie0B,C3AT);
bGja=ceil(Ie0B/C3AT);
path(g2ne,3:4) = [kp_y bGja];
B_oA = kp_y;
IqFH = bGja;
if AjBe(B_oA,IqFH)
g2ne = g2ne + 1;
path(g2ne,:) = [B_oA IqFH B_oA IqFH];
end
end
path = path(1:g2ne,:);
return
end
if yHIJ == -1
if B(JD7d) == 0
CRWU(JD7d) = step+1; Ahu1(step+1) = 1;
z5wU(JD7d) = I2BS;
elseif r6dB(JD7d)
CRWU(JD7d) = step+26; Ahu1(step+26) = 1;
z5wU(JD7d) = I2BS;
AjBe(JD7d) = true;
end
end
end
end
path = zeros(0,4);
end
function path = DG5E(B,rowS,colS,nnMi,pf36,MLBM,vX63,i6Yl)
[C3AT hQ64] = size(B);
lT3w = zeros(C3AT,hQ64);
UT8H = zeros(C3AT,hQ64);
CRWU = -ones(C3AT,hQ64);
CRWU(rowS+(colS-1)*C3AT) = 0;
CRWU(nnMi+(pf36-1)*C3AT) = -2;
KtG9 = zeros(C3AT*hQ64,1);
mm1i = zeros(C3AT*hQ64,1);
count = numel(rowS);
KtG9(1:count) = rowS;
mm1i(1:count) = colS;
PBf5=[-1 1 0 0];
sj_k=[0 0 -1 1];
for step = 0:min(vX63,i6Yl)
if count < 1, break, end
cxjP = count;
gE81 = KtG9(1:cxjP);
tibu = mm1i(1:cxjP);
count = 0;
for VqBz = 1:cxjP
F9q5 = tibu(VqBz);
gEAI = gE81(VqBz);
for Wrgs=1:4
B_oA = gEAI + PBf5(Wrgs);
IqFH = F9q5 + sj_k(Wrgs);
JD7d = B_oA + (IqFH-1)*C3AT;
yHIJ = CRWU(JD7d);
if yHIJ == -2
Sygu=step+1;
lT3w(B_oA,IqFH) = gE81(VqBz);
UT8H(B_oA,IqFH) = tibu(VqBz);
path = zeros(Sygu,4);
for g2ne = 1:Sygu
path(g2ne,1:2) = [B_oA IqFH];
kp_y = lT3w(B_oA,IqFH);
bGja = UT8H(B_oA,IqFH);
path(g2ne,3:4) = [kp_y bGja];
B_oA = kp_y;
IqFH = bGja;
end
return
end
if yHIJ == -1 && B(JD7d) == 0
CRWU(JD7d) = step+1;
lT3w(JD7d) = gEAI;
UT8H(JD7d) = F9q5;
count = count + 1; KtG9(count) = B_oA; mm1i(count) = IqFH;
end
end
end
end
path = [];
end
|