makestory avatar makestory committed df81ce2

consider homogeneous

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
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.