+++ /dev/null
-Wouldn't it be nice to do the programming competition again this year? I have
-an idea that's simple enough for the non-programmer to have a good chance at
-winning yet allows deep complexity for anyone keen to get their hands dirty.
-
-The Game
---------
-My idea is inspired by the classic iterated Prisoner's Dilemma problem in game
-theory. The premise is to write an "agent" to survive and thrive in the morally
-bankrupt RockPaperScissors (RPS) land.
-
-Your agent spends its life in a dystopian RPS underworld, where at any moment
-another agent could pick a fight with it, after which your agent is obliged to
-pick a fight with yet another. In RPS battle, the instigating agent gets a
-chance (which he must use) to tell the truth or lie about which tool he is
-going to use (rock, paper, or scissors). Agents start off with 10 points, and
-gain and lose points when they win, lose and tie a round depending on the
-circumstances of the fight. The points table is in the technicalities
-document:
-
-http://shmookey.ucc.asn.au/technicalities
-
-Synopsis: if an agent gets picked on for a fight and told rock, paper or
-scissors, it can either get modest but mutually beneficial points by trying to
-cause a tie, but risk being slaughtered by the other if it's lying (with a
-small amount of points awarded if it wins "by accident"), or it can try to win
-based on that information and get big points for exploiting the other agent
-with a relatively small punishment for being "tricked" and losing (and no point
-change in case of an "accidental" tie).
-
-Thus, in any single round there are bigger rewards and smaller consequences in
-"attacking" the rock, paper or scissors that the enemy agent claims it will
-use, but cooperation leads to mutual benefit and good agents should turn
-against agents that try to exploit them.
-
-If the agent loses all its points, it dies. If it reaches 20 points, it forms a
-new agent and both return to 10 points. The agent can remember who it has
-battled in the past and what the other agent has done, but it has no way of
-communicating this to any other agent, and any "children" of the agent don't
-inherit this memory.
-
-Winning Conditions
-------------------
-The object of the game is for the descendants of your agent to be the dominant
-species in an evolutionarily stable environment. The environment is declared
-evolutionarily stable when the proportions of species populations remains the
-same (with a tolerance of 5%) over ten thousand iterations, or if there is only
-once species remaining, or if the judges say so.
-
-There will be a prize for the winner consisting of whatever we can scrounge up
-plus a special certificate you can keep forever and frame and love. Entrants
-whose species survive to evolutionary stability will also receive a
-certificate.
-
-Entry Cost
-----------
-The cost of entry per person is $3 for UCC members and $5 for everyone else.
-Your entry may contain one (1) agent and you may only enter once. UCC reserves
-the right to withdraw any agent without refund if it causes technical or
-administrative difficulty, after a reasonable attempt at resolution is made.
-
-Non-Programmers and Beginners
------------------------------
-There will be simple sample agents available that demonstrate how easy it
-is to turn your idea into code. If you're able to visualise your idea as a
-series of instructions you might tell a small child, you'll be able to
-make it into an agent.
-
-If you don't understand the next section, don't worry, modifying the samples to
-do your bidding will work just as well as writing your agent from scratch.
-
-Technical Details
------------------
-The challenge will be operated by a supervisor module that picks the fights in
-a "fair" way such that each agent gets to fight every other agent (supposing no
-agents die) and each agent gets to see battle as frequently as possible. The
-supervisor will be able to do any number of iterations in one go, after which
-statistics can be gathered before doing the next set of iterations.
-
-The easiest way to create an agent is with Python. Python is a popular
-scripting language with a simple, easy to pick up syntax that resembles
-pseudocode, and is well-adapted to this kind of task. Another advantage to
-using Python is that the supervisor can talk to the agent directly, and the
-programmer will not have to worry about maintaining state or validating input
-and output. A Python agent should be a class that implements at least the
-specification laid out in the technicalities document:
-
-http://shmookey.ucc.asn.au/technicalities
-
-The supervisor will store the number of points the agent has and the
-number of children for your convenience. Your module may use any resource
-available in the standard Python distribution. You are expected to use
-member variables of your class to keep state.
-
-You can use any language you like for your agent, really. Interfacing to
-non-python agents is via stdin/stdout, so your language's builtin print and
-read functions will work, but beware: if an agent makes a single mistake in its
-input or output, the supervisor will declare it insane - which in
-RockPaperScissors land carries the death penalty. The format of the input and
-output is documented in the technicalities document:
-
-http://shmookey.ucc.asn.au/technicalities
-
-The agent is run once per instance and is expected to maintain its own state.
-Not maintaining state correctly could lead to a very confused agent, left
-wondering why it's not dead, or why the baby hasn't come. Don't leave your
-agent wondering.
-
-A sample agent in Python, Java and C will be provided. Your agent does not have
-to be open-source, but it must be submitted as source-code to prevent cheating.
-If the agent is not in Python, build instructions must also be submitted.
-