ID:50390
Title:Petillant
Author:Daan
Date:2008-11-08 08:13:19
Score:32584.2298
Result:28845.21 (cyc: 11, node: 615)
CPU Time:157.9310
Status:Passed
Comments:
Based on:none
Code:
function [dRow,dCol,action,mark] = solver(mainMap,foodMap,myAntMap,opAntMap,myScentMap,opScentMap,myDeathMap,opDeathMap)

try

dx = ones(5,5); dx(1:2,:)=-1; dx(3,:)=0;
dy = ones(5,5); dy(:,1:2)=-1; dy(:,3)=0;
attack = false;

if sum(sum(opAntMap(2:4,2:4)))==0

    foodMap(mainMap==1)=0;
    antsthere = myAntMap;
    antsthere(foodMap==0)=0;
    if foodMap(3,3)>0
        qqq=find(mainMap==1);
        if isempty(qqq)
            qqq = foodMap(:) - myScentMap(:) - myAntMap(:);
            qqq(13)=99999999;
            [a,b]=sort(qqq);
            m = mean(qqq);
            b = b(a<=m);
            b = b(randint(1,1,length(b))+1);
            dRow = dx(b); dCol = dy(b);
            mark = 0;
        else
            b = min(qqq(:));
            dRow = dx(b); dCol = dy(b);
            mark = 50;
        end
        action = 1;
    elseif sum(sum(foodMap))>0
        d1 = 2*ones(5,5); d1(2:4,2:4)=1; d1(3,3)=0;
        d2 = (foodMap>antsthere).*d1;
        d3 = find(d2>0);
        if isempty(d3)
            qqq = myScentMap + myAntMap;
            qqq = qqq(:);
            [a,b]=sort(qqq);
            m = mean(qqq);
            b = b(a<=m);
            b = b(randint(1,1,length(b))+1);
            dRow = dx(b); dCol = dy(b);
            action = 0;
            mark = 20;
        else
            b = d3(randint(1,1,length(d3))+1);
            dRow = dx(b); dCol = dy(b);
            action = 0;
            mark = 10;
        end

    else
        qqq = myScentMap;
        qqq = qqq(:);
        [a,b]=sort(qqq);
        m = mean(qqq);
        b = b(a<=m);
        b = b(~isnan(mainMap(b)));
        if isempty(b)
            b = randint(1,1,25)+1;
            dRow = dx(b); dCol = dy(b);
        else
            b = b(randint(1,1,length(b))+1);
            dRow = dx(b); dCol = dy(b);
        end
        action = 0;
        mark = 20;
    end
else
    attack = true;
    b = 13;
    dRow = dx(b); dCol = dy(b);
    action = -1;
    mark = 10;
end

rr = dRow + 3;
cc = dCol + 3;
if ~attack
    while (isnan(mainMap(rr,cc)) || b==13)
        b = randint(1,1,25)+1;
        dRow = dx(b); dCol = dy(b);
        rr = dRow + 3;
        cc = dCol + 3;
    end
end

catch
    dRow = round(rand*2)-1;
    dCol = round(rand*2)-1;
    action = 1;
    mark = 0;
end

end