The three rules of Ruby Q.:
-
Please do not post any solutions or spoiler discussion for this quiz
until
48 hours have passed from the time on this message. -
Support Ruby Q. by submitting ideas as often as you can:
- 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 T. 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.

