| Author | DuMa | 
| Submission date | 2019-02-09 19:00:05.478240 | 
| Rating | 4131 | 
| Matches played | 264 | 
| Win rate | 39.77 | 
Use rpsrunner.py to play unranked matches on your computer.
import random
global PSpinner
global NSpinner
global spinner
global single
global out
global opMoves
global firstTen
global rounds
global LAP
global retestTimer
winP = {"R":"P","S":"R","P":"S"}
if input == "":
    firstTen = ["R","P","R","S","P","R","P","R","S","P"]
    rounds = 0
    single = False
    spinner = False
    PSpinner = False
    NSpinner = False
    LAP = False
    retestTimer = 20
    opMoves = []
    out = "R"
elif rounds < 10:
    opMoves.append(input)
    out = firstTen[rounds]
elif PSpinner:
    opMoves.append(input)
    out = opMoves[opMoves.__len__()-2]
elif NSpinner:
    opMoves.append(input)
    out = input
elif single:
    opMoves.append(input)
    out = winP[input]
elif input == opMoves[opMoves.__len__()-1]:
    opMoves.append(input)
    same = True
    for x in (0,8):
        if not (input == opMoves[opMoves.__len__()-x-1]):
            same = False
    if same:
        single = True
elif LAP:
    R = False
    P = False
    S = False
    i = 0
    while (not R or not P or not S) and not i>opMoves.__len__()-1:
        i+=1
        if opMoves[opMoves.__len__()-i] == "R" and not R:
            if (P and S) or i>opMoves.__len__():
                out = "P"
            R = True
        elif opMoves[opMoves.__len__()-i] == "P" and not P:
            if (R and S) or i > opMoves.__len__():
                out = "S"
            P = True
        elif opMoves[opMoves.__len__()-i] == "S" and not S:
            if (R and S) or i > opMoves.__len__():
                out = "R"
            S = True
        else:
            out = random.choice(["R","P","S"])
elif input == opMoves[opMoves.__len__()-6]:
    opMoves.append(input)
    same = True
    for x in (0,5):
        if not (opMoves[opMoves.__len__()-x-2] == opMoves[opMoves.__len__()-x-5]):
            same = False
    if same:
        spinner = True
    if spinner:
        if winP[input]==opMoves[opMoves.__len__()-2]:
            NSpinner = True
            out = input
        else:
            PSpinner = True
            out = opMoves[opMoves.__len__() - 2]
    else:
        LAP = True
else:
    out = random.choice(["R", "P", "S"])
output = out
rounds+=1
retestTimer-=1
if retestTimer < 1:
    retestTimer = 20
    single = False
    spinner = False
    PSpinner = False
    NSpinner = False