ID:49927
Title:survivor
Author:Crapou Doudou
Date:2008-11-06 09:09:34
Score:21861.5462
Result:21835.79 (cyc: 6, node: 461)
CPU Time:82.9980
Status:Passed
Comments:
Based on:none
Code:
function [dRow,dCol,action,mark] = solver( ...
    mainMap,foodMap,myAntMap,opAntMap, ...
    myScentMap,opScentMap,myDeathMap,opDeathMap)

if opAntMap(3,3)>0
    action=-1;
    dRow=0; dCol=0;
    vers_nid=1;
elseif mainMap(3,3)==1
    [dRow,dCol] = aller_vers_sucre(mainMap,foodMap,myAntMap);
    action = 0;
    vers_nid=0;
elseif foodMap(3,3)>0
    [dRow,dCol] = aller_vers_nid(mainMap,myScentMap);
    action = 1;
    vers_nid=1;
else
    [dRow,dCol] = aller_vers_sucre(mainMap,foodMap,myAntMap);
    action = 0;
    vers_nid=0;
end

mark = marquer_case(mainMap,myScentMap,vers_nid);






function [dRow,dCol] = aller_vers_nid(mainMap,myScentMap)

[a,b]=find(mainMap==1,1);
if ~isempty(a)
    [dRow,dCol] = aller_vers_case(a,b,mainMap);
else
    myScentMap(3,3)=0;
    if sum(myScentMap(:))==0
        [dRow,dCol] = aller_vers_case(floor(rand*(5-eps))+1,floor(rand*(5-eps))+1,mainMap);
    else
        [a,b]=max(myScentMap(:));
        a=mod(b-1,5)+1;
        b=floor((b-1)/5)+1;
        [dRow,dCol] = aller_vers_case(a,b,mainMap);
    end
end



function [dRow,dCol] = aller_vers_sucre(mainMap,foodMap,myAntMap)

[a,b]=find((foodMap-myAntMap>0)&(mainMap~=1),1);
if ~isempty(a)
    [dRow,dCol] = aller_vers_case(a,b,mainMap);
else
    [dRow,dCol] = aller_vers_case(floor(rand*(5-eps))+1,floor(rand*(5-eps))+1,mainMap);
end



function [dRow,dCol] = aller_vers_case(a,b,mainMap)

if a<3
    dRow = -1;
elseif a==3
    dRow = 0;
else
    dRow = 1;
end

if b<3
    dCol = -1;
elseif b==3
    dCol = 0;
else
    dCol = 1;
end

while isnan(mainMap(3+dRow,3+dCol))
    dRow=floor(3*rand)-1;
    dCol=floor(3*rand)-1;
end



function mark = marquer_case(mainMap,myScentMap,vers_nid)

if ~isempty(find(mainMap(2:4,2:4)==1,1))
    mark = 100;
elseif ~isempty(find(myScentMap(2:4,2:4)>0,1)) && (vers_nid==0)
    mark = 10;
else
    mark=0;
end