ID:48653
Title:aam40
Author:Abhisek Ukil
Date:2008-05-06 17:58:53
Score:15490.1181
Result:154602.00 (cyc: 12, node: 967)
CPU Time:39.0132
Status:Passed
Comments:
Based on:go zerg
Code:
function w = solver(b)
bk1UymEryp = rand(8,1);
w = blFckGRhhL(b,75);
KbV51h31N8 = vMz7VQsiel(b,w);
WxwvXIzn19 = size(b,1);
RWtMsCmBj9 = b(WxwvXIzn19:-1:1,:);
RWtMsCmBj9 = RWtMsCmBj9.';
LHhQjDm1Xg = blFckGRhhL(RWtMsCmBj9,90);
LHhQjDm1Xg = [WxwvXIzn19-LHhQjDm1Xg(:,2)+1 LHhQjDm1Xg(:,1) WxwvXIzn19-LHhQjDm1Xg(:,4)+1 LHhQjDm1Xg(:,3)];
kFAuIisncB = vMz7VQsiel(b,LHhQjDm1Xg);
if KbV51h31N8>kFAuIisncB
w=LHhQjDm1Xg;
end
end
function UNgT7EWLYM = vMz7VQsiel(eOrA1VqtvR,jkXeVZl0Lw)
MShTAEooBC=size(eOrA1VqtvR,1);
eOrA1VqtvR(jkXeVZl0Lw(:,1)+(jkXeVZl0Lw(:,2)-1)*MShTAEooBC)=0;
eOrA1VqtvR(jkXeVZl0Lw(:,3)+(jkXeVZl0Lw(:,4)-1)*MShTAEooBC)=0;
UNgT7EWLYM=sum(eOrA1VqtvR(:))+size(jkXeVZl0Lw,1)+sum(jkXeVZl0Lw(:,1)==jkXeVZl0Lw(:,3)&jkXeVZl0Lw(:,2)==jkXeVZl0Lw(:,4))*24;
end
function w = blFckGRhhL(b,step)
%tjmnvRMN44 = unique(b(b>0));
tjmnvRMN44 =unique(b);
tjmnvRMN44(1)=[];
LWj70mka4Y = zeros(size(tjmnvRMN44));
for nosnsNOzkF = 1:length(LWj70mka4Y)
LWj70mka4Y(nosnsNOzkF) = nnz(tjmnvRMN44(nosnsNOzkF) == b(:));
end
for nosnsNOzkF = 1:length(LWj70mka4Y)
if LWj70mka4Y(nosnsNOzkF) == 1
b(tjmnvRMN44(nosnsNOzkF) == b(:)) = -1;
end
end
X2ZG9bWMma = zeros(size(b)+2);
HuBRu2AUMn = repmat(-1,size(X2ZG9bWMma));
HuBRu2AUMn(2:end-1,2:end-1) = b;
w = [];
[yMuAxqIBiN, GsG15A_v8F] = find(HuBRu2AUMn>0);
x8Tm1lAR1P = (size(HuBRu2AUMn,1)/2 - yMuAxqIBiN).^2 + (size(HuBRu2AUMn,2)/2 - GsG15A_v8F).^2;
[x8Tm1lAR1P, order] = sort(x8Tm1lAR1P);
Nq1wn5vxLg = false(max(b(:)),1);
for YQKmttFboA = 1:length(yMuAxqIBiN)-1
wy72CEEIOf = 0;
F6Xnayv3LO = step;
for nosnsNOzkF = order'
if X2ZG9bWMma(yMuAxqIBiN(nosnsNOzkF), GsG15A_v8F(nosnsNOzkF))
continue
end
CINBXvKRrc = Nq1wn5vxLg(HuBRu2AUMn(yMuAxqIBiN(nosnsNOzkF), GsG15A_v8F(nosnsNOzkF)));
[UNgT7EWLYM, TekgCJ08LO, vRiYJxzokh, GfUqgYJ2_c, FEPQ9BnpFy] = vBo_hg65iz(HuBRu2AUMn, X2ZG9bWMma, yMuAxqIBiN(nosnsNOzkF), GsG15A_v8F(nosnsNOzkF), F6Xnayv3LO, CINBXvKRrc);
if UNgT7EWLYM > wy72CEEIOf
wy72CEEIOf = UNgT7EWLYM;
F6Xnayv3LO = TekgCJ08LO;
DzR0bQxbC4 = vRiYJxzokh;
vRNlEUXN3k = GfUqgYJ2_c;
bM_GDPbXmG = FEPQ9BnpFy;
if F6Xnayv3LO == 1
break
end
end
end
if wy72CEEIOf == 0
w = w - 1;
return
end
rCa9yVEawS = ftUGCMdsAr(yMuAxqIBiN(nosnsNOzkF), GsG15A_v8F(nosnsNOzkF), DzR0bQxbC4, vRNlEUXN3k, F6Xnayv3LO, bM_GDPbXmG);
OZ2gVDWmO_ = HuBRu2AUMn(rCa9yVEawS(1,1), rCa9yVEawS(1,2));
X2ZG9bWMma = doMove(X2ZG9bWMma, rCa9yVEawS, OZ2gVDWmO_);
HuBRu2AUMn = doMove(HuBRu2AUMn, rCa9yVEawS, OZ2gVDWmO_);
Nq1wn5vxLg(OZ2gVDWmO_)=true;
w = [w; rCa9yVEawS];
end
w = w - 1;
end
function [wy72CEEIOf, F6Xnayv3LO, vRiYJxzokh, GfUqgYJ2_c, HuBRu2AUMn] = vBo_hg65iz(b, X2ZG9bWMma, KZXBL0SLeb, fWwPJwtlYQ, K66_HFbEFZ,Flag)
wy72CEEIOf = 0;
F6Xnayv3LO = Inf;
Ylz_4gom0w = [1 -1 0 0];
YQKmttFboA = [0 0 1 -1];
if ~Flag
X2ZG9bWMma = b;
end
HuBRu2AUMn = b;
HuBRu2AUMn(HuBRu2AUMn>0) = -1;
HuBRu2AUMn(KZXBL0SLeb,fWwPJwtlYQ) = 1;
nVoWmhIUcM = zeros(1,100);
MUnmblYiMv = nVoWmhIUcM;
nVoWmhIUcM(1) = KZXBL0SLeb;
MUnmblYiMv(1) = fWwPJwtlYQ;
yiuzB4jJPV = 1;
PUgtyh_0ZI = b(KZXBL0SLeb,fWwPJwtlYQ);
for nosnsNOzkF = 1:K66_HFbEFZ-1
yMuAxqIBiN = nVoWmhIUcM;
GsG15A_v8F = MUnmblYiMv;
mNszRigse0 = yiuzB4jJPV;
yiuzB4jJPV = 0;
for LWj70mka4Y = 1:mNszRigse0
YjEZ3GyzEL = yMuAxqIBiN(LWj70mka4Y);
rvOKSosHPF = GsG15A_v8F(LWj70mka4Y);
for i37ZL_zlIK = 1:4
vRiYJxzokh = YjEZ3GyzEL + Ylz_4gom0w(i37ZL_zlIK);
GfUqgYJ2_c = rvOKSosHPF + YQKmttFboA(i37ZL_zlIK);
t1XXybZYYX = X2ZG9bWMma(vRiYJxzokh,GfUqgYJ2_c);
if t1XXybZYYX == PUgtyh_0ZI && ~(vRiYJxzokh == KZXBL0SLeb && GfUqgYJ2_c == fWwPJwtlYQ)
F6Xnayv3LO = nosnsNOzkF;
break
end
t1XXybZYYX = HuBRu2AUMn(vRiYJxzokh,GfUqgYJ2_c);
if t1XXybZYYX == 0
HuBRu2AUMn(vRiYJxzokh,GfUqgYJ2_c) = nosnsNOzkF + 1;
yiuzB4jJPV = yiuzB4jJPV + 1;
nVoWmhIUcM(yiuzB4jJPV) = vRiYJxzokh;
MUnmblYiMv(yiuzB4jJPV) = GfUqgYJ2_c;
end
end
if F6Xnayv3LO < Inf
break
end
end
if F6Xnayv3LO < Inf
break
end
end
if F6Xnayv3LO == Inf
return
end
wy72CEEIOf = PUgtyh_0ZI - F6Xnayv3LO;
end
function rCa9yVEawS = ftUGCMdsAr(KZXBL0SLeb, fWwPJwtlYQ, vRiYJxzokh, GfUqgYJ2_c, F6Xnayv3LO, HuBRu2AUMn)
if F6Xnayv3LO == 1
rCa9yVEawS = [KZXBL0SLeb, fWwPJwtlYQ, vRiYJxzokh, GfUqgYJ2_c];
return
end
Ylz_4gom0w = [1 -1 0 0];
YQKmttFboA = [0 0 1 -1];
rCa9yVEawS = zeros(F6Xnayv3LO,4);
KW8qsjlG_a = randperm(4);
for step = F6Xnayv3LO:-1:1
for i37ZL_zlIK = 1:4
fqrIdacg5l = KW8qsjlG_a(i37ZL_zlIK);
PS_MHw8YgY = vRiYJxzokh + Ylz_4gom0w(fqrIdacg5l);
GsyCIwSmcU = GfUqgYJ2_c + YQKmttFboA(fqrIdacg5l);
if HuBRu2AUMn(PS_MHw8YgY, GsyCIwSmcU) == step
break
end
end
rCa9yVEawS(step,:) = [PS_MHw8YgY, GsyCIwSmcU, vRiYJxzokh, GfUqgYJ2_c];
vRiYJxzokh = PS_MHw8YgY;
GfUqgYJ2_c = GsyCIwSmcU;
end
end
function b = doMove(b, HSDnWmH1sp, t1XXybZYYX)
for nosnsNOzkF = 1:size(HSDnWmH1sp,1)
b(HSDnWmH1sp(nosnsNOzkF,1), HSDnWmH1sp(nosnsNOzkF,2)) = t1XXybZYYX;
end
b(HSDnWmH1sp(end,3), HSDnWmH1sp(end,4)) = t1XXybZYYX;
end