Author | rockadidas |
Submission date | 2014-10-13 03:42:11.486983 |
Rating | 4507 |
Matches played | 544 |
Win rate | 42.46 |
Use rpsrunner.py to play unranked matches on your computer.
import random, collections
TACTICS = ["R", "P", "S"]
BACK_MEMORY = 4
def winner(opponent_tactic):
return TACTICS[(TACTICS.index(opponent_tactic) + 1) % 3]
def most_common_element(l):
return max(set(l), key=l.count)
hist = ""
if input == "":
output = random.choice(TACTICS)
else:
hist = hist + input
if len(hist) < 4:
output = winner(random.choice([s for s in hist]))
else:
actions = collections.defaultdict(list)
for i in range(len(hist)-(BACK_MEMORY)):
actions[hist[i:i+BACK_MEMORY]].append(hist[i+BACK_MEMORY])
last_opponent_actions = hist[-BACK_MEMORY:]
if last_opponent_actions in actions:
output = winner(most_common_element(actions))
else:
output = winner(random.choice([s for s in hist]))