Commits

makestory committed df81ce2

consider homogeneous

  • Participants
  • Parent commits 81aad62

Comments (0)

Files changed (1)

examples/makestory/musashi.rb

   @choices -= [((@prev + 2) % 4)]  # avoid turnback
   @bangs = @choices.map{|d| d if @obstacles.include?(move(@head,[d]))} 
   @traps = @choices.map{|d| d if (@obstacles & [move(@head,[d,0]),move(@head,[d,1]),move(@head,[d,2]),move(@head,[d,3])]).length > 3}
-  @choices -= @bangs # avoid bang obstacles
-  @choices -= @traps # avoid obvious traps
-  @goal = @info['gems'].sort_by{|g| distance(g,@head)}.first 
+  @choices -= @bangs
+  @choices -= @traps
+  @homogeneous = (@info["snakes"] - [@info["snakes"][@me["seq"]]]).select{|s| s['alive'] && s['type'] == 'ruby'}  # aliving homogeneous
+  if @homogeneous.empty? 
+    @goal = @info['gems'].sort_by{|g| distance(g,@head)}.first 
+  else
+    @goal = @info['gems'].select{|g| distance(g,@head) - @homogeneous.map{|s| distance(g,s['body'][0])}.min < 0 }.sort_by{|g| distance(g,@head)}.first  
+  end
   if @goal
     @next = @choices.sort_by{|d| distance(move(@head,[d]),@goal)}.first
   else