# Thwomp

This program has been disqualified.

 Author EbTech Submission date 2011-05-25 17:56:25.041440 Rating 10000 Matches played 2 Win rate 100.0

## Source code:

``````import math
import random

if input == "":
matchHistory = ""
candidate = ['P','R','P','S','R','P','S']
score = [0,2,0,0,0,0,2]
else:
matchHistory += input
for i in range(7):
score[i] *= 0.96
score[i] += (4 + {'R':0,'P':1,'S':2}[candidate[i]] - {'R':0,'P':1,'S':2}[input])%3 - 1

index = 0
itr = 0
limit = 12
itrlimit = 300
heatR = heatP = heatS = 0
coldR = coldP = coldS = 0
while index < len(matchHistory)-2 and itr < itrlimit:
index2 = index
index3 = len(matchHistory)-2
length = 0
while index2 >= 0 and length <= limit:
if matchHistory[index2] != matchHistory[index3] or matchHistory[index2+1] != matchHistory[index3+1]:
break
index2 -= 2
index3 -= 2
length += 1
itr += 1
energy = math.pow(length+1, math.log(length+1)+1)
predict = matchHistory[index+3]
if predict == 'R':
heatP += energy
heatS -= energy
elif predict == 'P':
heatS += energy
heatR -= energy
else:
heatR += energy
heatP -= energy
predict = matchHistory[index+2]
if predict == 'R':
coldP += energy
coldS -= energy
elif predict == 'P':
coldS += energy
coldR -= energy
else:
coldR += energy
coldP -= energy
index += 2

candidate[0] = random.choice(['R','P','S'])
if heatR > heatP and heatR > heatS:
candidate[1] = "R"
elif heatP > heatS:
candidate[1] = "P"
else:
candidate[1] = "S"
if coldR > coldP and coldR > coldS:
candidate[4] = "R"
elif coldP > coldS:
candidate[4] = "P"
else:
candidate[4] = "S"
for i in [2,3,5,6]:
candidate[i] = {'R':'S','P':'R','S':'P'}[candidate[i-1]]

best = score[0]
output = candidate[0]
for i in range(1, 7):
if (best < score[i]):
best = score[i]
output = candidate[i]
matchHistory += output``````