ID:49979
Title:dumbo
Author:30minman
Date:2008-11-06 11:47:50
Score:27876.2082
Result:26841.66 (cyc: 8, node: 427)
CPU Time:138.6583
Status:Passed
Comments:
Based on:none
Code:
function [dRow,dCol,action,mark] = solver(mainMap,foodMap,myAntMap,opAntMap, ...
                                          myScentMap,opScentMap,myDeathMap,opDeathMap)
 
                                  
%                                       
    if sum(sum(opAntMap(2:4,2:4)))>0 
    %      opponent close by!-> attack, (something run [e.g. if rand>0.05])
        dRow=0;
        dCol=0;
        action=-1;
        mark=0;
    elseif foodMap(3,3)>0 %sugar below me -> good!
        if mainMap(3,3)==1  %hole below me -> move away, mark
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
            action = 0;
            mark   = 100;
        elseif max(max(myScentMap(2:4,2:4)))>0 % any scent marks in direct sight -> move towards highest marker, refresh mark
            [scentX, scentY]=find(myScentMap(2:4,2:4)==max(max(myScentMap(2:4,2:4))));
            dRow=scentX(1)-2;
            dCol=scentY(1)-2;
            action = 1;
            mark=0; % min(100,max(max(myScentMap(2:4,2:4)))-1);
        else %tranport sugar randomly, hoping for new signs
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
            action = 1;
            mark   =  0;
        end
    elseif max(max(foodMap(2:4,2:4)))>0 % any free (=/ at home) sugar in sight -> move towards next sugar, mark decreasing
        [scentX, scentY]=find(foodMap(2:4,2:4)==max(max(foodMap(2:4,2:4))));
        dRow=scentX(1)-2;
        dCol=scentY(1)-2;
        action = 1;
        mark=min(100,round(max(max(myScentMap(2:4,2:4)))/2));
    elseif mainMap(3,3)==1 %hole below me -> move away, mark
        dRow   = round(rand*2) - 1;
        dCol   = round(rand*2) - 1;
        action = 0;
        mark   = 100;
        
    elseif max(max(myScentMap(2:4,2:4)))>0 % scent marks in sight-> move away from highest mark, mark slightly lower
        [scentX, scentY]=find(myScentMap(2:4,2:4)==max(max(myScentMap(2:4,2:4))));
        dRow=2-scentX(1);
        dCol=2-scentY(1);
        action = 0;
        mark=min(100,round(max(max(myScentMap(2:4,2:4)))/2));
    
    else % no indications for orientation -> move randomly and no mark, hoping for new signs.
        dRow   = round(rand*2) - 1;
        dCol   = round(rand*2) - 1;
        action = 0;
        mark   =  0;
    end
end