Esempio n. 1
0
def make_O_circuit(X_moves):
    dont_care = Constant(0)
    def f(env):
        grid = empty_grid
        for Xm_var in X_moves:
            Xm = env[Xm_var]
            if Xm is None or grid[Xm] != ' ': return dont_care
            grid = update(grid, Xm, 'X')
            Om = choose_move(grid, 'O')[1]
            grid = update(grid, Om, 'O')
        if is_won(grid): return dont_care
        return Constant(choose_move(grid, 'O')[1])
    return realize(f, X_moves)
Esempio n. 2
0
        grid = empty_grid
        for Xm_var in X_moves:
            Xm = env[Xm_var]
            if Xm is None or grid[Xm] != ' ': return dont_care
            grid = update(grid, Xm, 'X')
            Om = choose_move(grid, 'O')[1]
            grid = update(grid, Om, 'O')
        if is_won(grid): return dont_care
        return Constant(choose_move(grid, 'O')[1])
    return realize(f, X_moves)

def crap():
    for X1 in available_moves(empty_grid):
        gridX1 = update(empty_grid, X1, 'X')
        O1 = choose_move(gridX1, 'O')[1]
        gridO1 = update(gridX1, O1, 'O')
        for X2 in available_moves(gridO1):
            gridX2 = update(gridO1, X2, 'X')
            O2 = choose_move(gridX2, 'O')[1]
            gridO2 = update(gridX2, O2, 'O')

if False:
    X1 = Variable('X1', tuple(range(9)))
    O1 = realize(lambda env: Constant(choose_move(update(empty_grid, env[X1], 'X'), 'O')[1]),
                 [X1])
## O1
#. Mux(X1, 4, 7, 4, 6, 8, 8, 4, 8, 4)
    X2 = Variable('X2', (None,) + tuple(range(9)))

print make_ttt_circuit()