ID:50119
Title:Ina Zari Test 2
Author:Ina Zari
Date:2008-11-07 03:38:10
Score:37478.5903
Result:36924.85 (cyc: 21, node: 523)
CPU Time:128.9738
Status:Passed
Comments:
Based on:none
Code:
function [dRow,dCol,action,mark] = solver(mainMap,foodMap,myAntMap,opAntMap, ...
                                          myScentMap,opScentMap,myDeathMap,opDeathMap)
global iCont
if isempty(iCont)
    iCont=0;
end
iCont=iCont+1;
if mod(iCont,100)==1
    kk=9;
end
foodMap=max(foodMap-1e6.*double(mainMap==1),0);
if ~isempty(find(mainMap,1))
    mark=100;
else
    mark=20;
end
fProbNido=foodMap(3,3)/myAntMap(3,3);
fAleatorio=rand;
if fAleatorio<fProbNido
    action=1;
    IrNido=1;
    mark=1;
else
    action=0;
    IrNido=0;
end
bCercaNido=0;
if IrNido 
    [r,c]=find(mainMap==1);
    if isempty(r)
        [r,c]=find(myScentMap~=0);
    end
    if isempty(r)
        bCercaNido=0;
        dRow   = round(rand*2) - 1;
        dCol   = round(rand*2) - 1;
        while isnan(mainMap(3+dRow,3+dCol)) || (dRow==0 && dCol==0) 
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
        end
    else
        bCercaNido=1;
        [kk,imin]=min((r-3).^2+(c-3).^2);
        iRow=r(imin(1))-3;
        iCol=c(imin(1))-3;
        dRow=fnlimit(iRow,-1,1);
        dCol=fnlimit(iCol,-1,1);
        while isnan(mainMap(3+dRow,3+dCol)) || (dRow==0 && dCol==0) 
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
        end
    end
else
    [r,c]=find(foodMap-opAntMap>0);
    if isempty(r)
        dRow   = round(rand*2) - 1;
        dCol   = round(rand*2) - 1;
        while isnan(mainMap(3+dRow,3+dCol)) || (dRow==0 && dCol==0) 
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
        end
    else
        [kk,imin]=min((r-3).^2+(c-3).^2);
        dRow=fnlimit(r(imin(1))-3,-1,1);
        dCol=fnlimit(c(imin(1))-3,-1,1);
    end
end
if bCercaNido || max(max(opDeathMap))>0
    fProbAtacar=opAntMap(3,3)/myAntMap(3,3);
    fAleatorio=rand;
    if fAleatorio<fProbAtacar
        dRow=0;
        dCol=0;
        action=-1;
    end
end
end
function [Output]=fnlimit(fNumber,fMin,fMax)
    Output=max(min(fNumber,fMax),fMin);
end