def run_code_from(python_file, input_text): # Load the player class from the specified .py file sys.path.append(os.path.abspath(os.path.dirname(python_file))) module = __import__(os.path.splitext(os.path.basename(python_file))[0]) player_class = next(getattr(module, name) for name in dir(module) if inspect.isclass(getattr(module, name)) and issubclass(getattr(module, name), Player)) players = Player.create_players([player_class, Player]) # Second player is a dummy state = eval(input_text) state.to_play = players[0] return repr(players[0].move(state))
def run_code_from(python_file, input_text): # Load the player class from the specified .py file sys.path.append(os.path.abspath(os.path.dirname(python_file))) module = __import__(os.path.splitext(os.path.basename(python_file))[0]) player_class = next(getattr(module, name) for name in dir(module) if inspect.isclass(getattr(module, name)) and issubclass(getattr(module, name), Player)) players = Player.create_players([player_class, Player]) # Second player is a dummy state = eval(input_text) state.to_play = players[0] return repr(players[0].evaluate(state, players[0].color))
def run_code_from(python_file, input_text): # Load the player class from the specified .py file sys.path.append(os.path.abspath(os.path.dirname(python_file))) module = __import__(os.path.splitext(os.path.basename(python_file))[0]) player_class = next(getattr(module, name) for name in dir(module) if inspect.isclass(getattr(module, name)) and issubclass(getattr(module, name), Player) and \ getattr(module, name) != Player) init_txt, state_txt = input_text.strip().split("\n") eval(init_txt) state = eval(state_txt) if state.player_row == 0: players = Player.create_players([player_class, Player]) # Second player is a dummy else: players = Player.create_players([Player, player_class ]) # First player is a dummy state.player = players[state.player_row] return repr(players[state.player_row].move(state))
def __init__(self, M, N, K, player_classes, timeout=None): self.players = Player.create_players(player_classes) self.state = State.initial(M, N, K, self.players[0]) self.timeout = timeout