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()