Author | pyfex |
Submission date | 2011-06-10 15:06:30.229749 |
Rating | 3113 |
Matches played | 5663 |
Win rate | 29.03 |
Use rpsrunner.py to play unranked matches on your computer.
import random
if input == "":
spec = [None] *14
strats = [(2,0), (2,1), (3,0), (3,1), (3,2), (4,0), (4,1), (4,2), (4,3), (5,0), (5,1), (5,2), (5,3), (5,4)]
round = 1
canditates = [None] * len(strats)
correct = [0] * len(strats)
output = random.choice(['R', 'P', 'S'])
score = {'RR': 0, 'PP': 0, 'SS': 0,
'PR': 1, 'RS': 1, 'SP': 1,
'RP': -1, 'SR': -1, 'PS': -1,}
counter = {'P': 'S', 'S': 'R', 'R': 'P'}
index = random.randint(0, len(strats)-1)
else:
for i,c in enumerate(canditates):
if c is None:
continue
sc = score[c+input]
if sc == 1:
correct[i] += 1
if sc == -1:
correct[i] = 0
for i, (j,k) in enumerate(strats):
if round % j == k:
canditates[i] = counter[output]
possible_strats = [i for i, (a, b) in enumerate(strats) if round % a == b]
round += 1
best_correct = max([correct[i] for i in possible_strats])
best_indices = [i for i in possible_strats if best_correct == correct[i]]
best_index = random.choice(best_indices)
b = canditates[best_index]
if b == None:
output = random.choice(['R','P', 'S'])
else:
output = b