Question 5: A Python solution
# main loop ... filenames = sorted(glob.glob("contestants/contestant*")) players = [ RpsContestant(f) for f in filenames ] round = 1 while len(players) > 1: print("\nRound {}".format(round)) winners = [] while len(players) > 0: player1 = players.pop(0) player2 = players.pop(0) winners.append(player1.engage(player2)) round += 1 players = winners print("\nToken: {}".format(players[0].token))