This program has been disqualified.
| Author | JustinF | 
| Submission date | 2011-06-14 07:57:26.034256 | 
| Rating | 2280 | 
| Matches played | 2447 | 
| Win rate | 21.82 | 
def leastLikely(next, inputs):
  outcomes = [0, 0, 0]
  for x in xrange(len(inputs)):
    key = inputs[x:]
    found = next.get(key, dict())
    outcomes[0] += found.get('R', 0)
    outcomes[1] += found.get('P', 0)
    outcomes[2] += found.get('S', 0)
  if outcomes[0] <= outcomes[1] and outcomes[0] <= outcomes[2]:
    return "R"
  if outcomes[1] <= outcomes[0] and outcomes[1] <= outcomes[2]:
    return "P"
  if outcomes[2] <= outcomes[0] and outcomes[2] <= outcomes[1]:
    return "S"
def addToNext(next, inputs):
  length = len(inputs)
  if (length-1 < 50):
    for x in xrange(length-1):
      key1 = inputs[x:-1]
      key2 = inputs[-1]
      found1 = next.get(key1, dict())
      found2 = found1.get(key2, 0) + 1
      found1[key2] = found2
      next[key1] = found1
  else:
    for x in xrange(length-51, length-1):
      key1 = inputs[x:-1]
      key2 = inputs[-1]
      found1 = next.get(key1, dict())
      found2 = found1.get(key2, 0) + 1
      found1[key2] = found2
      next[key1] = found1
if input == "":
  next = dict()
  myStack = ""
else:
  myStack += input
addToNext(next, myStack)
output = leastLikely(next, myStack)