revolver2

Authormomo
Submission date2011-06-11 10:10:33.957533
Rating5663
Matches played5492
Win rate48.18

Use rpsrunner.py to play unranked matches on your computer.

Source code:

import random
import sys

def highest(v):
    return random.choice([i for i in range(3) if max(v) == v[i]])

#mem = 4
folge = [1, 2 ,2 ,3 ,3 ,1 ,2 ,2 ,1 ,1 ,2 ,1 ,2 ,3 ,1 ,2 ,1 ,2 ,1 ,2 ,3 ,3 ,3 ,2 ,1 ,2 ,1 ,2 ,2 ,2 ,2 ,2 ,1 ,2 ,2 ,2 ,3 ,2 ,1 ,3 ,2 ,3 ,3 ,2 ,1 ,1 ,1 ,3 ,3 ,1 ,1 ,3 ,3 ,2 ,1 ,1 ,2 ,3 ,1 ,1 ,3 ,2 ,1 ,3 ,3 ,2 ,1 ,1 ,1 ,1 ,2 ,3 ,3 ,3 ,1 ,2 ,1 ,1 ,3 ,3 ,2 ,1 ,3 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,2 ,3 ,3 ,3 ,1 ,1 ,1 ,1 ,1 ,1 ,3 ,1 ,2 ,2 ,3 ,2 ,3 ,2 ,1 ,2 ,3 ,3 ,2 ,2 ,2 ,1 ,2 ,1 ,1 ,1 ,2 ,3 ,3 ,2 ,2 ,1 ,3 ,1 ,2 ,1 ,2 ,3 ,3 ,2 ,3 ,2 ,3 ,1 ,2 ,3 ,3 ,2 ,1 ,3 ,2 ,2 ,1 ,2 ,2 ,1 ,3 ,3 ,1 ,3 ,3 ,3 ,3 ,2 ,3 ,1 ,1 ,2 ,3 ,3 ,1 ,1 ,1 ,2 ,2 ,1 ,3 ,3 ,3 ,1 ,2 ,3 ,2 ,3 ,3 ,2 ,3 ,3 ,1 ,3 ,1 ,2 ,3 ,1 ,3 ,1 ,1 ,2 ,3 ,3 ,3 ,1 ,3 ,2 ,1 ,2 ,2 ,1 ,3 ,1 ,1 ,1 ,1 ,1 ,3 ,1 ,1 ,3 ,1 ,3 ,1 ,1 ,2 ,2 ,3 ,1 ,2 ,3 ,3 ,2 ,2 ,1 ,1 ,3 ,2 ,2 ,2 ,3 ,1 ,1 ,2 ,2 ,3 ,3 ,2 ,2 ,3 ,1 ,3 ,3 ,2 ,3 ,2 ,2 ,2 ,2 ,1 ,1 ,2 ,3 ,2 ,2 ,1 ,1 ,2 ,2 ,2 ,1 ,3 ,3 ,3 ,3 ,1 ,2 ,2 ,2 ,2 ,3 ,2 ,3 ,3 ,3 ,3 ,2 ,2 ,3 ,2 ,2 ,3 ,1 ,1 ,2 ,3 ,2 ,1 ,1 ,1 ,2 ,1 ,1 ,3 ,1 ,1 ,3 ,2 ,2 ,3 ,3 ,1 ,2 ,3 ,3 ,2 ,1 ,3 ,1 ,3 ,3 ,2 ,2 ,2 ,2 ,1 ,3 ,2 ,1 ,2 ,1 ,1 ,2 ,2 ,1 ,2 ,1 ,3 ,3 ,1 ,1 ,2 ,2 ,2 ,1 ,1 ,1 ,1 ,3 ,3 ,3 ,2 ,2 ,1 ,3 ,1 ,2 ,2 ,1 ,2 ,3 ,3 ,3 ,3 ,1 ,1 ,3 ,1 ,2 ,3 ,1 ,1 ,1 ,2 ,2 ,1 ,3 ,3 ,2 ,2 ,1 ,1 ,1 ,3 ,2 ,1 ,2 ,3 ,2 ,3 ,1 ,1 ,1 ,3 ,1 ,2 ,2 ,2 ,2 ,2 ,2 ,3 ,2 ,3 ,3 ,2 ,2 ,3 ,3 ,1 ,1 ,1 ,1 ,3 ,2 ,3 ,1 ,1 ,1 ,1 ,3 ,3 ,3 ,3 ,2 ,3 ,1 ,3 ,3 ,2 ,1 ,2 ,3 ,2 ,2 ,2 ,1 ,3 ,1 ,1 ,2 ,2 ,3 ,2 ,2 ,3 ,2 ,2 ,2 ,3 ,3 ,2 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,3 ,2 ,2 ,1 ,2 ,3 ,2 ,3 ,1 ,3 ,2 ,3 ,3 ,1 ,2 ,1 ,1 ,3 ,2 ,3 ,2 ,3 ,1 ,2 ,2 ,3 ,1 ,3 ,2 ,3 ,2 ,2 ,2 ,2 ,3 ,2 ,2 ,1 ,1 ,1 ,3 ,1 ,3 ,3 ,2 ,1 ,3 ,1 ,1 ,1 ,1 ,2 ,1 ,1 ,3 ,1 ,2 ,1 ,1 ,2 ,1 ,3 ,2 ,1 ,1 ,3 ,2 ,2 ,2 ,1 ,1 ,3 ,3 ,2 ,3 ,2 ,1 ,3 ,3 ,2 ,1 ,3 ,2 ,3 ,2 ,3 ,3 ,3 ,1 ,1 ,2 ,1 ,3 ,2 ,2 ,1 ,2 ,1 ,1 ,1 ,3 ,2 ,2 ,1 ,2 ,3 ,2 ,1 ,1 ,2 ,2 ,3 ,2 ,3 ,3 ,2 ,2 ,3 ,3 ,1 ,3 ,3 ,1 ,3 ,2 ,3 ,2 ,3 ,3 ,1 ,3 ,2 ,2 ,3 ,1 ,2 ,2 ,2 ,3 ,2 ,1 ,1 ,2 ,1 ,3 ,2 ,1 ,1 ,1 ,3 ,3 ,1 ,3 ,1 ,3 ,2 ,3 ,1 ,2 ,2 ,3 ,2 ,1 ,2 ,3 ,2 ,2 ,2 ,2 ,2 ,3 ,1 ,1 ,1 ,3 ,2 ,1 ,3 ,2 ,3 ,1 ,1 ,2 ,2 ,2 ,1 ,3 ,3 ,3 ,3 ,1 ,3 ,1 ,3 ,2 ,2 ,2 ,1 ,2 ,2 ,3 ,1 ,3 ,2 ,1 ,1 ,3 ,3 ,2 ,1 ,2 ,2 ,3 ,3 ,1 ,3 ,2 ,1 ,3 ,1 ,2 ,1 ,3 ,1 ,3 ,2 ,1 ,3 ,1 ,3 ,1 ,2 ,3 ,3 ,1 ,3 ,3 ,1 ,3 ,2 ,2 ,2 ,3 ,1 ,3 ,2 ,3 ,1 ,3 ,3 ,2 ,2 ,1 ,3 ,2 ,1 ,1 ,3 ,3 ,3 ,1 ,2 ,1 ,1 ,1 ,3 ,2 ,2 ,3 ,1 ,1 ,1 ,3 ,2 ,1 ,1 ,3 ,1 ,1 ,1 ,3 ,3 ,1 ,2 ,2 ,1 ,2 ,1 ,1 ,2 ,1 ,3 ,2 ,2 ,3 ,1 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,1 ,1 ,1 ,3 ,1 ,1 ,3 ,3 ,1 ,3 ,2 ,3 ,3 ,3 ,3 ,3 ,1 ,1 ,1 ,1 ,2 ,1 ,2 ,2 ,1 ,1 ,1 ,3 ,1 ,2 ,3 ,2 ,3 ,2 ,3 ,3 ,1 ,2 ,2 ,1 ,2 ,1 ,1 ,1 ,3 ,1 ,2 ,2 ,1 ,2 ,3 ,1 ,3 ,2 ,3 ,1 ,2 ,1 ,1 ,3 ,2 ,2 ,3 ,2 ,1 ,1 ,1 ,2 ,3 ,2 ,3 ,2 ,2 ,1 ,2 ,1 ,3 ,1 ,3 ,1 ,2 ,1 ,1 ,3 ,1 ,3 ,1 ,2 ,3 ,1 ,3 ,1 ,3 ,1 ,1 ,1 ,1 ,2 ,3 ,1 ,1 ,1 ,2 ,3 ,2 ,2 ,3 ,3 ,1 ,2 ,1 ,1 ,1 ,2 ,2 ,1 ,1 ,1 ,2 ,1 ,2 ,2 ,3 ,2 ,1 ,3 ,1 ,1 ,1 ,2 ,1 ,2 ,1 ,3 ,1 ,3 ,3 ,1 ,2 ,1 ,3 ,1 ,2 ,1 ,3 ,2 ,2 ,1 ,3 ,1 ,2 ,2 ,2 ,1 ,3 ,2 ,2 ,1 ,1 ,3 ,2 ,3 ,2 ,3 ,3 ,1 ,3 ,1 ,1 ,1 ,3 ,1 ,1 ,3 ,2 ,1 ,1 ,1 ,1 ,2 ,1 ,2 ,3 ,1 ,1 ,3 ,2 ,1 ,1 ,3 ,2 ,2 ,1 ,2 ,2 ,2 ,3 ,3 ,3 ,3 ,2 ,2 ,2 ,3 ,1 ,3 ,2 ,1 ,3 ,1 ,2 ,2 ,1 ,3 ,1 ,1 ,2 ,2 ,3 ,2 ,3 ,2 ,3 ,2 ,2 ,3 ,1 ,1 ,2 ,1 ,2 ,1 ,1 ,1 ,2 ,3 ,2 ,3 ,2 ,2 ,1 ,2 ,3 ,3 ,3 ,2, 3]
if(1):
    if (input == ""):
        N = 1
        states = ["R","S","P"]
        sdic = {"R":0, "S":1, "P":2}
        result = ["-","=","+"]
        res = [[0, 1, -1], [-1, 0, 1], [1, -1, 0]]
        state = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
        total=0
        r=0
        move = 0
        last =  random.choice([1,2,3])
        charge = 0

    else:
        lastrow = r
        r = res[sdic[output]][sdic[input]]
        total = total + r
        state[lastrow-1][move-1] += r
        for i in range(3):
            for j in range(3):
                state[i][j] = 0.9*state[i][j] + random.gauss(0,0.1)


    move = highest(state[r+1])-1

    if (N == 500 and total < 10):
        charge = 1

    if (charge==0):
        move = ( last - folge[N % 1000]) % 3
        if (move==2): move = -1
    

    last = (last + move) % 3 + 1
    output = states[last-1] 
    N = N + 1