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:
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.