This program has been disqualified.
| Author | Tom M | 
| Submission date | 2011-12-10 11:32:41.761118 | 
| Rating | 6547 | 
| Matches played | 78 | 
| Win rate | 66.67 | 
# weighted output based on previous plays from both opponent and self
# if no decision is reached initially, shorten the lookback string and continue
import random
import re
import math
lookback = 5
style=1
themweight=3
usweight=2
if input == "":
    inputstring=""
    myprev=""
    Rweight = 1
    Pweight = 1
    Sweight = 1
inputstring = inputstring+input
if len(inputstring) < lookback:
    output = random.choice(["R","P","S"])
else:
    while True:
        Rweight = 1
        Pweight = 1
        Sweight = 1
        if lookback>2:
            lookback-=1
        last4 = inputstring[-lookback:]
        mylast4 = myprev[-lookback:]
        pattern = re.compile(last4+".")
        rock = pattern.search(inputstring[:-lookback])
        mypattern = re.compile(mylast4+".")
        myrock = mypattern.search(myprev[:-lookback])
        if rock:
            for x in pattern.findall(inputstring[:-lookback]):
                if x[lookback:]=="R":
                    Pweight += themweight
                if x[lookback:]=="P":
                    Sweight += themweight
                if x[lookback:]=="S":
                    Rweight += themweight
        if myrock:
            for y in mypattern.findall(myprev[:-lookback]):
                if y[lookback:]=="R":
                    Sweight += usweight
                if y[lookback:]=="P":
                    Rweight += usweight
                if y[lookback:]=="S":
                    Pweight += usweight
        selection = random.choice(["R","P","S"])
	z = random.uniform(0,200)
        if selection=="R":
		if z < math.fabs(random.gauss(0,Rweight)):
			output = "R"
			break
	elif selection=="P":
		if z < math.fabs(random.gauss(0,Pweight)):
			output = "P"
			break
	elif selection=="S":
		if z < math.fabs(random.gauss(0,Sweight)):
			output = "S"
			break
myprev = myprev+output