コード例 #1
0
def get_phrase_submission(phrase, problem=24):
    phrase = phrase.lower()
    path = os.path.join(utils.get_data_dir(), "qualifier/problem_%d.json" % problem)
    with open(path) as fin:
        data = json.load(fin)
        data["problemId"] = problem
    g = game.Game(data, data["sourceSeeds"][0])
    c = "m" if phrase[0] == "l" else "l"
    c *= 5
    try:
        g.execute_string(c + phrase)
    except (GameEnded, KeyError):
        return None
    c = "m" if phrase[-1] == "l" else "l"
    try:
        while True:
            g.execute_char(c)
    except GameEnded as e:
        solution = utils.gen_output(g, e)
        result = {
            "score": e.move_score,
            "powerScore": e.power_score,
            "tag": solution["tag"],
            "problemId": solution["problemId"],
            "seed": solution["seed"],
            "solution": solution["solution"],
        }
        return (solution, result)
コード例 #2
0
ファイル: ui.py プロジェクト: Vlad-Shcherbina/icfpc2015-tbd
def main():
    random.seed(42)
    args = parser.parse_args()

    path = os.path.join(utils.get_data_dir(), args.problem)
    with open(path) as fin:
        data = json.load(fin)
        m = re.match('.*/problem_(\\d+)\\.json', path)
        assert m
        data['problemId'] = int(m.group(1))

    assert args.seed < len(data['sourceSeeds']), \
        "There are only %d seeds" % len(data['sourceSeeds'])

    g = game.Game(data, data['sourceSeeds'][args.seed])

    if args.moves:
        delay = 0.05
    else:
        delay = 0

    moves = itertools.chain(args.moves, gamepad())

    try:
        term_attr = setup_term()
        if not args.no_gui:
            display(g)
        g.trace = []
        if args.tracedir:
          trace(g)
        prev_states = collections.deque(maxlen=25)
        prev_states.append(copy.deepcopy(g))

        for ch in moves:
            if ch == UNDO:
                if len(prev_states) > 1:
                    g = prev_states[-1]
                    prev_states.pop()
            else:
                prev_states.append(copy.deepcopy(g))
                g.execute_char(ch)
                if args.tracedir:
                  trace(g)

            if not args.no_gui:
                display(g)

            if args.delay:
                time.sleep(args.delay)
    except game.GameEnded as e:
        restore_term(term_attr)
        print('\n')
        print(e)
        solution = utils.gen_output(g, e)
        print('Solution: %s' % json.dumps([solution]))
        if args.tracedir:
            dump_trace(g, args.tracedir)
        if args.prompt_for_submit:
            print('\n')
            if read_yn('Do you want to submit this solution? [y/n] '):
                result = {
                    'score': e.move_score,
                    'powerScore': e.power_score,
                    'tag': solution['tag'],
                    'problemId': solution['problemId'],
                    'seed': solution['seed'],
                    'solution': solution['solution']
                    }
                from production.golden.utils import http_submit
                ok = http_submit(os.getenv('USER'), result, solution)
                if (200, 'Thanks!') == (ok.status_code, ok.text):
                    print("Submission accepted")
                else:
                    print("Submission rejected")

    finally:
        restore_term(term_attr)