This program has been disqualified.
| Author | Test | 
| Submission date | 2014-07-30 03:10:30.300310 | 
| Rating | 5000 | 
| Matches played | 0 | 
| Win rate | 0 | 
if not input:
	import random
	ngrams = []
	LIMIT = 1
	rc = ""
	class NGram:
		content = ""
		length = 0
		count = 1
		def __init__(self, content, length):
			self.content = content
			self.length = length
		def __repr__(self):
			return str([self.content, self.count])
	def find_match(content):
		if(len(ngrams) > len(content)):
			ngram = [g for g in ngrams[len(content)-1] if g.content == content] #find match
			if ngram:
				return ngram[0]
	def add(content):
		for i in range(len(ngrams), len(content)):
			ngrams.append([]) #append until len(ngrams) == len(content)
		ngram = find_match(content)
		if ngram: 	#if match found
			ngram.count += 1
		else: 		#else
			ngram = NGram(content=content, length=len(content))
			ngrams[len(content)-1].append(ngram)
	def recent_content():
		return rc
	def add_new(content):
		rc = recent_content()
		length = len(rc)
		for i in range(max(0, length-LIMIT), length):
			add(rc[i:] + content)
	def best_move():
		rc = recent_content()
		R = 0
		P = 0
		S = 0
		rcR = rc + 'R'
		rcP = rc + 'P'
		rcS = rc + 'S'
		
		for i in range(1, len(rcR)-1):
			ngram = find_match(rcR[i:])
			if ngram:
				R += ngram.count ** ngram.length
		for i in range(1, len(rcP)-1):
			ngram = find_match(rcP[i:])
			if ngram:
				P += ngram.count ** ngram.length
		for i in range(1, len(rcS)-1):
			ngram = find_match(rcS[i:])
			if ngram:
				S += ngram.count ** ngram.length
		best = max(R, P, S)
		choices = []
		if R == best:
			choices.append("P")
		if P == best:
			choices.append("S")
		if S == best:
			choices.append("R")
		return random.choice(choices)
	
	output = random.choice(['R', 'P', 'S'])
else:
	rc += input
	if len(ngrams) > 0:
		add_new(input)
	add(input)
	output = best_move()