On Mon, 24 Jan 2005 01:46:58 +0900, James Edward Gray II wrote:

> On Jan 23, 2005, at 5:40 AM, Benedikt Huber wrote:
> 
>> Otherwise, a strategy simply selecting a random choice will always 
>> have a
>> 50% chance of winning
> 
> Looks like we are seeing some strategies that do better than 50% 
> against a random player.  ;)

This is impossible for players which do not cheat.
You can't give any predictions on the next move of a random player.
Therefore you have a 1/3 prop. to choose a winning,losing or drawing move.

Here is another 'cheater' (which does not redefine a method):

SYMBOLS = [ :rock,
           :paper,
           :scissors ]
KILLER = { :rock => :paper, :paper => :scissors, :scissors => :rock }

class BHCheatPlayer < Player

  def initialize( opponent )
    super
    @opp = Object.const_get(opponent).new(self)
  end

  def choose
    KILLER[@opp.choose]
  end

  def result(you,them,result)
    @opp.result(them,you,result)
  end

end