From: Ruby Quiz Date: 2005-12-16T22:29:31+09:00 Subject: [QUIZ] RRobots (#59) The three rules of Ruby Quiz: 1. Please do not post any solutions or spoiler discussion for this quiz until 48 hours have passed from the time on this message. 2. Support Ruby Quiz by submitting ideas as often as you can: http://www.rubyquiz.com/ 3. Enjoy! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= by Simon Kroeger RRobots, Inc. is always looking for new talented pilots. Recently they lost so many skilled employees in a show battle against one of their competitors that they decided to try something new. Don't be afraid, you don't have to lead a robot into the fight personally. RRobots, Inc. is asking you to write an AI for one of their bots. You will be provided with a programming interface and as many shiny new robots as you may need to test your creation. All bots have a body equipped with a powerful engine and robust plating, a gun capable of firing energy bullets of various strengths, and a radar to scan the battlefield for enemy bots. Battles take place in an arena, 1600m by 1600m, each robot is placed at a randomly chosen position and powered on simultaneously. For this test all fights are one-on-one, so if you scan something it will be your opponent. RRobots, Inc. will run a championship competition on 12-20-2005 (wasting even more hardware) matching each participant against all others, three times. (Your bot must be posted to Ruby Talk on or before 6 PM (GMT) the 19th, to compete. A resubmission of the same bot class replaces the original submission, but contestants are allowed to submit multiple distinct bots.) The winner of the competition will be the bot with the most overall wins. The result of these battles will lead to a winner honored with having the next product-line named after him. (James and Simon will provide the winner with a Desktop R/C Mini-Rover from ThinkGeek.com, after the quiz summary is posted. Contestants must provide a valid email address with their solutions to be eligible.) If you are interested, here are the details: You have to provide a class including the module 'Robot', defining a method named 'tick' taking an array of events as input. By including the module 'Robot' you gain access to the robot hardware via methods like: fire(power) # fires a bullet in the direction of your gun turn(degrees) # turns the robot (and the gun and the radar) energy # your remaining energy (if this drops below 0 you are dead) # ... You have to define the behavior of the robot for each tick (approximately 20ms). This approach is kind of low level but you are allowed (if not encouraged) to unleash the whole power of Ruby to create higher level functions and interfaces (take a look at http://rrobots.rubyforge.org/OOSittingDuck.rb for an idea). A word of warning: If your AI tries to cheat (using other ways than those provided by the 'Robot' module to gain information about the battlefield or the other bots) or throws any errors, your submission will be disqualified. You can get information, sample bots and the arena program on http://rrobots.rubyforge.org/. Good luck and may the best bot win! Disclaimer: Of course there is no 'RRobots, Inc.' (if there is, this is totally unrelated to them) and you will not receive any hardware whatsoever via snail mail. While it is very unlikely that you get hurt in a RRobots battle, I'm not responsible for any harm done to you or your equipment during this quiz.