ID:50029
Title:myAnt
Author:WWS
Date:2008-11-06 15:28:32
Score:38869.1000
Result:36947.46 (cyc: 11, node: 421)
CPU Time:147.9417
Status:Passed
Comments:
Based on:none
Code:
function [dRow,dCol,action,mark] = solver(mainMap,foodMap,myAntMap,opAntMap, ...
                                          myScentMap,opScentMap,myDeathMap,opDeathMap)

nfoodMap = foodMap.*~(mainMap == 1);
                                       
if (rand < nfoodMap(3,3)/myAntMap(3,3))
   action = 1;
   if ~isempty(find(mainMap(1:5,1:5)==1))
      [a b] = find(mainMap(1:5,1:5)==1);
      dRow = max(2,min(4,a))-3;
      dCol = max(2,min(4,b))-3;
   else
      [a b] = find(myScentMap == max(max(myScentMap)));
      dRow = max(2,min(4,a(ceil(rand*length(a)))))-3;
      dCol = max(2,min(4,b(ceil(rand*length(b)))))-3;
   end
elseif ~isempty(find(nfoodMap > 0))
   foodsum = sum(sum(nfoodMap));
   
   chanceup = sum(sum(nfoodMap(1:2,:)))/foodsum;
   chancestay = sum(sum(nfoodMap(3,:)))/foodsum;
   rowrand = rand();
   if rowrand < chanceup
      dRow = -1;
   elseif rowrand < chanceup + chancestay
      dRow = 0;
   else
      dRow = 1;
   end
   
   chanceleft = sum(sum(nfoodMap(:,1:2)))/foodsum;
   chancestay = sum(sum(nfoodMap(:,3)))/foodsum;
   colrand = rand();
   if colrand < chanceleft
      dCol = -1;
   elseif colrand < chanceleft + chancestay
      dCol = 0;
   else
      dCol = 1;
   end
   action = -1;
else
   action = -1;
   dRow   = round(rand*2) - 1;
   dCol   = round(rand*2) - 1;
end
if opAntMap(3,3) > 0 && rand() < myAntMap(3,3)/opAntMap(3,3)
   action = -1;
   dRow = 0;
   dCol = 0;
end

outermask = [1 1 1 1 1;1 0 0 0 1;1 0 0 0 1;1 0 0 0 1;1 1 1 1 1];
if ~isempty(find(mainMap.*outermask == 1))   
   mark = 100;
else
   mark = round(max(max(myScentMap))./100);
end

end