ID:48641
Title:go2
Author:Fabio Carnevale
Date:2008-05-06 17:58:14
Score:15488.9954
Result:154602.00 (cyc: 12, node: 964)
CPU Time:38.3767
Status:Passed
Comments:
Based on:1000 nodes ... so many to tweak
Code:
function w = solver(b)
N08TNqxtHm = rand(8,1);
w = Hs2GHpkyM6(b,77);
I4VpHn8SNL = q6njA_AjfV(b,w);
WVEFtDY92k = size(b,1);
w6hZgDoOSu = b(WVEFtDY92k:-1:1,:);
w6hZgDoOSu = w6hZgDoOSu.';
Kvqv_JIWVn = Hs2GHpkyM6(w6hZgDoOSu,90);
Kvqv_JIWVn = [WVEFtDY92k-Kvqv_JIWVn(:,2)+1 Kvqv_JIWVn(:,1) WVEFtDY92k-Kvqv_JIWVn(:,4)+1 Kvqv_JIWVn(:,3)];
mQ_Hal1tbz = q6njA_AjfV(b,Kvqv_JIWVn);
if I4VpHn8SNL>mQ_Hal1tbz
w=Kvqv_JIWVn;
end
end
function GkGWjSf7U6 = q6njA_AjfV(Gj1S62ZlDp,aemXV8dyvq)
ElCmWniztG=size(Gj1S62ZlDp,1);
Gj1S62ZlDp(aemXV8dyvq(:,1)+(aemXV8dyvq(:,2)-1)*ElCmWniztG)=0;
Gj1S62ZlDp(aemXV8dyvq(:,3)+(aemXV8dyvq(:,4)-1)*ElCmWniztG)=0;
GkGWjSf7U6=sum(Gj1S62ZlDp(:))+size(aemXV8dyvq,1)+sum(aemXV8dyvq(:,1)==aemXV8dyvq(:,3)&aemXV8dyvq(:,2)==aemXV8dyvq(:,4))*24;
end
function w = Hs2GHpkyM6(b,step)
sU8OeYBqmA = unique(b(b>0));
uum_hH900o = zeros(size(sU8OeYBqmA));
for PDFveHtDZV = 1:length(uum_hH900o)
uum_hH900o(PDFveHtDZV) = nnz(sU8OeYBqmA(PDFveHtDZV) == b(:));
end
for PDFveHtDZV = 1:length(uum_hH900o)
if uum_hH900o(PDFveHtDZV) == 1
b(sU8OeYBqmA(PDFveHtDZV) == b(:)) = -1;
end
end
p20tYHSyFs = false(max(b(:)),1);
rcw9JpDLIQ = zeros(size(b)+2);
tQ2wAvgrmf = repmat(-1,size(rcw9JpDLIQ));
tQ2wAvgrmf(2:end-1,2:end-1) = b;
w = [];
[kQ0yb1v50b, fC2H2R7snC] = find(tQ2wAvgrmf>0);
w6ErXjMSOp = (size(tQ2wAvgrmf,1)/2 - kQ0yb1v50b).^2 + (size(tQ2wAvgrmf,2)/2 - fC2H2R7snC).^2;
[w6ErXjMSOp, order] = sort(w6ErXjMSOp);
for BGE9JsVXrO = 1:length(kQ0yb1v50b)-1
Ubeve1F_pQ = 0;
Kr0mFRd_I3 = step;
for PDFveHtDZV = order'
if rcw9JpDLIQ(kQ0yb1v50b(PDFveHtDZV), fC2H2R7snC(PDFveHtDZV))
continue
end
m0BprK0dKc = p20tYHSyFs(tQ2wAvgrmf(kQ0yb1v50b(PDFveHtDZV), fC2H2R7snC(PDFveHtDZV)));
[GkGWjSf7U6, gFvFadI6MJ, XieWnEeNH4, h25Z4H3yI3, QGSkpXV6jT] = TqpNKAFFQA(tQ2wAvgrmf, rcw9JpDLIQ, kQ0yb1v50b(PDFveHtDZV), fC2H2R7snC(PDFveHtDZV), Kr0mFRd_I3, m0BprK0dKc);
if GkGWjSf7U6 > Ubeve1F_pQ
Ubeve1F_pQ = GkGWjSf7U6;
Kr0mFRd_I3 = gFvFadI6MJ;
YsVGFjBAWh = XieWnEeNH4;
BpJOSnS83b = h25Z4H3yI3;
cB8ekHHisf = QGSkpXV6jT;
if Kr0mFRd_I3 == 1
break
end
end
end
if Ubeve1F_pQ == 0
w = w - 1;
return
end
Iu1EixM3ni = mGuBfwg3SS(kQ0yb1v50b(PDFveHtDZV), fC2H2R7snC(PDFveHtDZV), YsVGFjBAWh, BpJOSnS83b, Kr0mFRd_I3, cB8ekHHisf);
L8de6nma0U = tQ2wAvgrmf(Iu1EixM3ni(1,1), Iu1EixM3ni(1,2));
rcw9JpDLIQ = doMove(rcw9JpDLIQ, Iu1EixM3ni, L8de6nma0U);
tQ2wAvgrmf = doMove(tQ2wAvgrmf, Iu1EixM3ni, L8de6nma0U);
p20tYHSyFs(L8de6nma0U)=true;
w = [w; Iu1EixM3ni];
end
w = w - 1;
end
function [Ubeve1F_pQ, Kr0mFRd_I3, XieWnEeNH4, h25Z4H3yI3, tQ2wAvgrmf] = TqpNKAFFQA(b, rcw9JpDLIQ, Kes8s4Mbp6, u7C8W5sv9s, uuMDLJf_yQ,Flag)
Ubeve1F_pQ = 0;
Kr0mFRd_I3 = Inf;
cEWUxKjlyw = [1 -1 0 0];
BGE9JsVXrO = [0 0 1 -1];
if ~Flag
rcw9JpDLIQ = b;
end
tQ2wAvgrmf = b;
tQ2wAvgrmf(tQ2wAvgrmf>0) = -1;
tQ2wAvgrmf(Kes8s4Mbp6,u7C8W5sv9s) = 1;
rQdpdJGdnj = zeros(1,100);
Qg2ucLdSjK = rQdpdJGdnj;
rQdpdJGdnj(1) = Kes8s4Mbp6;
Qg2ucLdSjK(1) = u7C8W5sv9s;
bM9JQnkQIW = 1;
TJJqECzNO_ = b(Kes8s4Mbp6,u7C8W5sv9s);
for PDFveHtDZV = 1:uuMDLJf_yQ-1
kQ0yb1v50b = rQdpdJGdnj;
fC2H2R7snC = Qg2ucLdSjK;
BxlxI6Hk03 = bM9JQnkQIW;
bM9JQnkQIW = 0;
for uum_hH900o = 1:BxlxI6Hk03
Z9dFIzdFwJ = kQ0yb1v50b(uum_hH900o);
LkHe9QRJsG = fC2H2R7snC(uum_hH900o);
for J7Ymyx2Fbl = 1:4
XieWnEeNH4 = Z9dFIzdFwJ + cEWUxKjlyw(J7Ymyx2Fbl);
h25Z4H3yI3 = LkHe9QRJsG + BGE9JsVXrO(J7Ymyx2Fbl);
iFpa80aPUe = rcw9JpDLIQ(XieWnEeNH4,h25Z4H3yI3);
if iFpa80aPUe == TJJqECzNO_ && ~(XieWnEeNH4 == Kes8s4Mbp6 && h25Z4H3yI3 == u7C8W5sv9s)
Kr0mFRd_I3 = PDFveHtDZV;
break
end
iFpa80aPUe = tQ2wAvgrmf(XieWnEeNH4,h25Z4H3yI3);
if iFpa80aPUe == 0
tQ2wAvgrmf(XieWnEeNH4,h25Z4H3yI3) = PDFveHtDZV + 1;
bM9JQnkQIW = bM9JQnkQIW + 1;
rQdpdJGdnj(bM9JQnkQIW) = XieWnEeNH4;
Qg2ucLdSjK(bM9JQnkQIW) = h25Z4H3yI3;
end
end
if Kr0mFRd_I3 < Inf
break
end
end
if Kr0mFRd_I3 < Inf
break
end
end
if Kr0mFRd_I3 == Inf
return
end
Ubeve1F_pQ = TJJqECzNO_ - Kr0mFRd_I3;
end
function Iu1EixM3ni = mGuBfwg3SS(Kes8s4Mbp6, u7C8W5sv9s, XieWnEeNH4, h25Z4H3yI3, Kr0mFRd_I3, tQ2wAvgrmf)
if Kr0mFRd_I3 == 1
Iu1EixM3ni = [Kes8s4Mbp6, u7C8W5sv9s, XieWnEeNH4, h25Z4H3yI3];
return
end
cEWUxKjlyw = [1 -1 0 0];
BGE9JsVXrO = [0 0 1 -1];
Iu1EixM3ni = zeros(Kr0mFRd_I3,4);
pkUia2DhKh = randperm(4);
for step = Kr0mFRd_I3:-1:1
for J7Ymyx2Fbl = 1:4
Mz6wwKqR8T = pkUia2DhKh(J7Ymyx2Fbl);
BoBANQzW_X = XieWnEeNH4 + cEWUxKjlyw(Mz6wwKqR8T);
lQf15VTRD2 = h25Z4H3yI3 + BGE9JsVXrO(Mz6wwKqR8T);
if tQ2wAvgrmf(BoBANQzW_X, lQf15VTRD2) == step
break
end
end
Iu1EixM3ni(step,:) = [BoBANQzW_X, lQf15VTRD2, XieWnEeNH4, h25Z4H3yI3];
XieWnEeNH4 = BoBANQzW_X;
h25Z4H3yI3 = lQf15VTRD2;
end
end
function b = doMove(b, A4u6hBrU1c, iFpa80aPUe)
for PDFveHtDZV = 1:size(A4u6hBrU1c,1)
b(A4u6hBrU1c(PDFveHtDZV,1), A4u6hBrU1c(PDFveHtDZV,2)) = iFpa80aPUe;
end
b(A4u6hBrU1c(end,3), A4u6hBrU1c(end,4)) = iFpa80aPUe;
end